使用 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 管理员组。 该设置可以在安装后由管理员建立。
- 打开命令提示符。
- 运行 db2extsec 命令以更新安全设置:
db2extsec -a new computer name\DB2ADMNS -u new computer name\DB2USERS
通过 DB2ADMNS 和 DB2USERS 组获得的功能
- DB2ADMNS
完全控制所有 DB2 对象(请参阅下面的受保护对象列表)
- DB2USERS
对位于安装和实例目录中的所有 DB2 对象具有读和执行访问权,但对数据库系统目录下的对象没有访问权,对 IPC 资源具有有限访问权
对于某些对象,需要时可以提供其他特权(例如,写特权、添加或更新文件特权等等)。 此组中的成员无权访问数据库系统目录下的对象。注: "执行" 访问权的含义取决于对象; 例如,对于具有 "执行" 访问权的 .dll 或 .exe 文件,意味着您有权执行该文件,但是对于目录,意味着您有权遍历该目录。
- 启动“用户和密码管理器”工具。
- 从列表中选择要添加的用户名。
- 单击“属性”。 在“属性”窗口中,单击“组成员”选项卡。
- 选择“其他”单选按钮。
- 从下拉列表中选择适当的组。
在安装后添加扩展安全性(db2extsec 命令)
如果在未启用扩展安全性的情况下安装了 Db2 数据库系统,那么可以通过执行命令 db2extsec来将其启用。 要执行 db2extsec 命令,您必须是本地 Administrators 组的成员,这样您才有权修改受保护对象的 ACL。
如果必要的话,可以多次运行 db2extsec 命令,但是,如果这样做了,除非在每次执行 db2extsec 之后立即发出 db2extsec -r 命令,否则无法禁用扩展安全性。
移除扩展安全性
可以通过运行 db2extsec -r 命令来移除扩展安全性,但是,只有在启用扩展安全性后尚未执行其他数据库操作(例如,创建数据库、创建新的实例和添加表空间等等)时此命令才会成功。 用于除去扩展安全性选项的最安全的方法是卸载 DB2 数据库系统,删除所有相关的 DB2 目录(包括数据库目录),然后在不启用扩展安全性的情况下重新安装 DB2 数据库系统。
受保护的对象
- 文件系统
- 文件
- 目录
- 服务
- 注册表键
- IPC 资源,这包括:
- 管道
- 信号
- 事件
- 共享内存
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 上必需) |