使用 DB2ADMNS 和 DB2USERS 组扩展了 Windows 安全性

缺省情况下,在 Windows 操作系统上的所有 Db2® 数据库产品中都启用了扩展安全性,但 IBM® Data Server Runtime Client 和 Db2 驱动程序除外。 IBM Data Server Runtime Client 和 Db2 驱动程序在 Windows 平台上不支持扩展安全性。

安装 Db2 数据库产品时, " Db2 对象启用操作系统安全性 " 面板上会显示 启用操作系统安全性 复选框。 除非禁用此选项,否则,安装程序会创建两个新组:DB2ADMNS 和 DB2USERS。 DB2ADMNS 是 Db2 Administrators 组, DB2USERS 是 Db2 用户组。 DB2ADMNS 和 DB2USERS 是缺省组名;可以选择在安装时为这些组指定不同名称(如果选择静默安装,那么可以在安装响应文件内更改这些名称)。 请注意,如果选择使用系统上已存在的组,这样做会修改这些组的特权。 根据需要对这些组授予下表中所列示的特权。

请务必了解这些组用于操作系统级别的保护,并且与 Db2 权限级别没有任何关联。 但是, Db2 管理员组 (例如, DB2ADMNS)用作 SYSADM、SYSMAINT 和 SYSCTRL 的缺省组。 建议您在指定 SYSADM 组时,该组应该是 Db2 管理员组。 该设置可以在安装后由管理员建立。

注: 您可以将 Db2 管理员组 (DB2ADMNS 或您在安装期间选择的名称) 和 Db2 用户组 (DB2USERS 或您在安装期间选择的名称) 指定为本地组或域组。 这两个组必须属于同一类型,即,要么都是本地组,要么都是域组。
如果您更改计算机名称,并且计算机组 DB2ADMNS 和 DB2USERS 是本地计算机组,那么必须更新全局注册表 DB2_ADMINGROUP 和 DB2_USERSGROUP。 要在重命名之后更新注册表变量并重新启动计算机,请运行以下命令:
  1. 打开命令提示符。
  2. 运行 db2extsec 命令以更新安全设置:
    db2extsec -a new computer name\DB2ADMNS -u new computer name\DB2USERS
注: 如果在 Windows 7 上的 Db2 数据库产品中启用了扩展安全性,那么只有属于 DB2ADMNS 组的用户才能运行图形 Db2 管理工具。 此外,DB2ADMNS 组的成员需要以完全管理员特权启动工具。 可以通过右键单击快捷方式,然后选择“以管理员身份运行”来完成。

通过 DB2ADMNS 和 DB2USERS 组获得的功能

DB2ADMNS 和 DB2USERS 组的成员具有以下功能:
  • DB2ADMNS

    完全控制所有 DB2 对象(请参阅下面的受保护对象列表)

  • DB2USERS

    对位于安装和实例目录中的所有 DB2 对象具有读和执行访问权,但对数据库系统目录下的对象没有访问权,对 IPC 资源具有有限访问权

    对于某些对象,需要时可以提供其他特权(例如,写特权、添加或更新文件特权等等)。 此组中的成员无权访问数据库系统目录下的对象。
    注: "执行" 访问权的含义取决于对象; 例如,对于具有 "执行" 访问权的 .dll.exe 文件,意味着您有权执行该文件,但是对于目录,意味着您有权遍历该目录。
理想情况下,所有 DB2 管理员都应该是 DB2ADMNS 组的成员(同时也是本地 Administrators 组的成员),但实际上对此并没有严格要求。 需要访问 DB2 数据库系统的任何人都必须是 DB2USERS 组的成员。 要将用户添加到其中一个组:
  1. 启动“用户和密码管理器”工具。
  2. 从列表中选择要添加的用户名。
  3. 单击“属性”。 在“属性”窗口中,单击“组成员”选项卡。
  4. 选择“其他”单选按钮。
  5. 从下拉列表中选择适当的组。

在安装后添加扩展安全性(db2extsec 命令)

如果在未启用扩展安全性的情况下安装了 Db2 数据库系统,那么可以通过执行命令 db2extsec来将其启用。 要执行 db2extsec 命令,您必须是本地 Administrators 组的成员,这样您才有权修改受保护对象的 ACL。

如果必要的话,可以多次运行 db2extsec 命令,但是,如果这样做了,除非在每次执行 db2extsec 之后立即发出 db2extsec -r 命令,否则无法禁用扩展安全性。

移除扩展安全性

注意:
在启用扩展安全性之后,请不要移除扩展安全性,除非绝对需要这样做。

可以通过运行 db2extsec -r 命令来移除扩展安全性,但是,只有在启用扩展安全性后尚未执行其他数据库操作(例如,创建数据库、创建新的实例和添加表空间等等)时此命令才会成功。 用于除去扩展安全性选项的最安全的方法是卸载 DB2 数据库系统,删除所有相关的 DB2 目录(包括数据库目录),然后在不启用扩展安全性的情况下重新安装 DB2 数据库系统。

受保护的对象

可以使用 DB2ADMNS 和 DB2USERS 组保护的静态对象为:
  • 文件系统
    • 文件
    • 目录
  • 服务
  • 注册表键
可以使用 DB2ADMNS 和 DB2USERS 组保护的动态对象为:
  • IPC 资源,这包括:
    • 管道
    • 信号
    • 事件
  • 共享内存

DB2ADMNS 和 DB2USERS 组拥有的特权

下表列示了指定给 DB2ADMNS 和 DB2USERS 组的特权:
表 1. DB2ADMNS 和 DB2USERS 组的特权
特权 DB2ADMNS DB2USERS 原因
创建标记对象 (SeCreateTokenPrivilege) Y N 标记处理(某些标记处理操作需要,用于认证和授权)
替换进程级别标记 (SeAssignPrimaryTokenPrivilege) Y N 以另一个用户身份创建进程
增加限额 (SeIncreaseQuotaPrivilege) Y N 以另一个用户身份创建进程
作为操作系统的部件 (SeTcbPrivilege) Y N LogonUser
生成安全审计 (SeSecurityPrivilege) Y N 处理审计和安全性日志
拥有文件或其他对象的所有权 (SeTakeOwnershipPrivilege) Y N 修改对象 ACL
增大调度优先级 (SeIncreaseBasePriorityPrivilege) Y N 修改进程工作集
备份文件和目录 (SeBackupPrivilege) Y N 概要文件/注册表处理(执行某些用户概要文件和注册表处理例程时需要:LoadUserProfile、RegSaveKey(Ex)、RegRestoreKey、RegReplaceKey 和 RegLoadKey(Ex))
复原文件和目录 (SeRestorePrivilege) Y N 概要文件/注册表处理(执行某些用户概要文件和注册表处理例程时需要:LoadUserProfile、RegSaveKey(Ex)、RegRestoreKey、RegReplaceKey 和 RegLoadKey(Ex))
调试程序 (SeDebugPrivilege) Y N 标记处理(某些标记处理操作需要,用于认证和授权)
管理审计和安全性日志 (SeAuditPrivilege) Y N 生成审计日志条目
作为服务登录 (SeServiceLogonRight) Y N 作为服务运行 DB2
从网络访问此计算机 (SeNetworkLogonRight) Y Y 允许网络凭证(允许 DB2 数据库管理器使用 LOGON32_LOGON_NETWORK 选项来认证,这会对性能产生影响)
在认证之后冒充客户机 (SeImpersonatePrivilege) Y N 客户机冒名(Windows 在允许使用某些 API 来冒充 DB2 客户机时需要:ImpersonateLoggedOnUser、ImpersonateSelf 和 RevertToSelf 等)
锁定内存中的页 (SeLockMemoryPrivilege) Y N 大页支持
创建全局对象 (SeCreateGlobalPrivilege) Y Y 终端服务器支持 (在 Windows 上必需)