DB2 中有三种主要的安全机制,可以帮助 DBA 实现数据库安全计划:
身份验证(authentication)、授权(authorization) 和特权(privilege)。
5 种不同的权限级别:SYSADM、SYSCTRL、SYSMAINT、DBADM 和 LOADDB2 9 中新增的一个概念是基于标签的访问控制(LBAC),允许控制谁有权访问单独的行和/或列。安装SAMPLE DBdb2cmddb2sample Creating database "SAMPLE"... Connecting to database "SAMPLE"... Creating tables and data in schema "MYNAME"... 'db2sampl' processing complete.attach 命令用来连接 DB2 实例,connect 命令用来连接 DB2 实例中的数据库。db2 attach to db2 Instance Attachment Information Instance server = DB2/NT 9.5.0 Authorization ID = MYNAME Local instance alias = DB2 db2 connect to sample user test1 using "123" Database Connection Information Database server = DB2/NT 9.5.0 SQL authorization ID = TEST1 Local database alias = SAMPLE db2 connect to sample user test1 using "123" new "456" confirm "456" --修改密码 Database Connection Information Database server = DB2/NT 9.5.0 SQL authorization ID = TEST1 Local database alias = SAMPLE关于密码,搞了半天,通常DB2是和OS Account绑定的, 就是说不同应用连接DB2的话,要一堆OS帐号。这点同ORACLE,SQL SERVER都不太一样。不然要用Kerberos 身份验证。反正是个麻烦事。DB2 身份验证类型db2 get dbm cfg Server Connection Authentication (SRVCON_AUTH) = NOT_SPECIFIED Database manager authentication (AUTHENTICATION) = SERVER主要是这两个参数,影响类型,具体看下面的:
类型 | 描述 |
SERVER | 身份验证在服务器上进行。 |
SERVER_ENCRYPT | 身份验证在服务器上进行。密码在客户机上进行加密,然后再发送到服务器。 |
CLIENT | 身份验证在客户机上进行(例外情况见 )。 |
*KERBEROS | 由 Kerberos 安全软件执行身份验证。 |
*KRB_SERVER_ENCRYPT | 如果客户机设置是 KERBEROS,那么由 Kerberos 安全软件执行身份验证。否则使用 SERVER_ENCRYPT。 |
DATA_ENCRYPT | 身份验证在服务器上进行。服务器接受加密的用户 ID 和密码,并对数据进行加密。这个选项的操作方式与 SERVER_ENCRYPT 相同,但是数据也要加密。 |
DATA_ENCRYPT_CMP | 身份验证方式与 DATA_ENCRYPT 相同,但是允许不支持 DATA_ENCRYPT 的老式客户机使用 SERVER_ENCRYPT 身份验证进行连接。在这种情况下,数据不进行加密。如果进行连接的客户机支持 DATA_ENCRYPT,就会进行数据加密,而不能降级到 SERVER_ENCRYPT 身份验证。这个身份验证类型只在服务器的数据库管理程序配置文件中是有效的,而且在客户机或网关实例上使用 CATALOG DATABASE 时是无效的。 |
GSSPLUGIN | 身份验证方式由一个外部 GSS-API 插件决定。 |
GSS_SERVER_ENCRYPT | 身份验证方式由一个外部 GSS-API 插件决定。在客户机不支持服务器的 GSS-API 插件之一的情况下,使用 SERVER_ENCRYPT 身份验证。 |
*这些设置只对 Windows 2000、AIX、Solaris 和 Linux® 操作系统有效。
db2 update dbm cfg using authentication server_encrypt ---更新验证方式,需要restart DBDB20000I The UPDATE DATABASE MANAGER CONFIGURATION command completedsuccessfully.SQL1362W One or more of the parameters submitted for immediate modificationwere not changed dynamically. Client changes will not be effective until thenext time the application is started or the TERMINATE command has been issued.Server changes will not be effective until the next DB2START command.
网关上设置身份验证
db2 catalog database myhostdb at node nd1 authentication SERVER db2 terminate 客户机上设置身份验证 db2 catalog database sample at node nd1 authentication SERVER
处理不可信的客户机
下表总结了如果服务器的身份验证类型设置为 CLIENT,那么在每种类型的客户机向服务器发出连接命令时将在哪里进行身份验证。
是否提供了 ID/密码? | TRUST_ALLCLNTS | TRUST_CLNTAUTH | 不可信的客户机 | 可信的客户机 | 主机客户机 |
No | Yes | CLIENT | CLIENT | CLIENT | CLIENT |
No | Yes | SERVER | CLIENT | CLIENT | CLIENT |
No | No | CLIENT | SERVER | CLIENT | CLIENT |
No | No | SERVER | SERVER | CLIENT | CLIENT |
No | DRDAONLY | CLIENT | SERVER | SERVER | CLIENT |
No | DRDAONLY | SERVER | SERVER | SERVER | CLIENT |
Yes | Yes | CLIENT | CLIENT | CLIENT | CLIENT |
Yes | Yes | SERVER | SERVER | SERVER | SERVER |
Yes | No | CLIENT | SERVER | CLIENT | CLIENT |
Yes | No | SERVER | SERVER | SERVER | SERVER |
Yes | DRDAONLY | CLIENT | SERVER | SERVER | CLIENT |
Yes | DRDAONLY | SERVER | SERVER | SERVER | SERVER |
DRDAONLY 意味着只信任主机客户机,而不管使用 DRDA 进行连接的 DB2 Version 8 客户机。
Kerberos 身份验证的条件: 1. 客户机和服务器必须属于同一个域(用 Windows 术语来说,是可信域)。 2. 必须设置适当的主体(Kerberos 中的用户 ID)。 3. 必须创建服务器的 keytab 文件,实例所有者必须能够读这个文件。 4. 所有机器必须有同步的时钟。 好象在WINDOWS域里,如果都是WINDOWS还是比较好实现的,但如果有LINUX或UNIX,还有得搞了。 文章地址: