[ 来源:http://www.it55.com | 作者: | 时间:2007-11-28 | 收藏 | 推荐 ] 【大 中 小】
介绍
在获知用户是否被授权进行特定操作之前,DB 2 必须能够获知外部用户的有效数据库授权 ID 及其所属的组。为了找到有效数据库授权 ID,需要确保外部用户就是所声称的用户,然后将其外部用户 ID 映射到内部 DB2 授权 ID。此过程被称为身份验证。DB2 没有用于维护用户 ID 和密码,或用户 ID 组成员关系的机制。
安全性插件的作用是什么?
有两个事件需要使用(客户端或服务器端)身份验证插件或组成员查找插件:
实例级操作是涉及 DB2 实例维护的任何操作。实例级操作的典型例子为更新数据库管理器配置参数和启动数据库管理器。
首先,我们看一下实例级操作。大多数实例级操作命令不会接受用户 ID 或密码作为输入部分。在这种情况下,DB2 使用客户端身份验证插件(即 client auth 插件)找到发出命令的当前登录用户。(这就是所谓的获得默认登录上下文。登录上下文可以是用户 ID/密码对或 Generic Security Services API [GSS-API] 凭证,如 Kerberos 票据)。一旦获取用户的身份,将使用 DB2 组成员查找插件(即 group plug-in)为用户生成组授权 ID 列表。
在连接建立或实例连接中,用户 ID 和密码是可选的。如果用户选择不指定用户 ID 和密码,则 DB2 使用客户端身份验证插件来获得默认登录上下文。然后,将登录上下文发送到服务器以获取用户的组授权 ID。如果用户选择指定用户 ID 和密码,且未将身份验证类型数据库管理器配置参数指定为 CLIENT,则 DB2 执行下面的步骤:
表 1. 除 CLIENT 之外的身份验证的信息流
| 客户机 | 信息流(如果可用) | 服务器 |
|---|---|---|
| (客户端身份验证插件) 如果已实现 db2secRemapUserid 且身份验证插件是基于用户 ID/密码的,则重新映射用户 ID、密码和名称空间。请注意,该过程也适用于默认登录上下文情况。 |
||
| 发送登录上下文到服务器。 | 登录上下文 -> | 服务器接收了登录上下文。 |
| (服务器端身份验证插件) 验证登录上下文(验证用户 ID 和密码或 GSS-API 凭证,如 Kerberos 票据),并获取用户的授权 ID。 |
||
| 获取正在使用服务器上组成员查找插件的用户的组授权 ID。 |
表 2. CLIENT 身份验证的信息流
| 客户机 | 信息流(如果可用) | 服务器 |
|---|---|---|
| (客户端身份验证插件) 如果已实现 db2secRemapUserid 且身份验证插件是基于用户 ID/密码的,则重新映射用户 ID、密码和名称空间。请注意,该过程也适用于默认登录上下文情况。 |
||
| (客户端身份验证插件) 验证登录上下文(验证用户 ID 和密码或 GSS-API 凭证,如 Kerberos 票据)。 |
||
| 发送用户 ID 到服务器。 | user ID -> | (服务器端身份验证插件)服务器接收了用户 ID 并获取用户的授权 ID。 |
| 获取正在使用服务器上组成员查找插件的用户的组授权 ID。 |
建议的最小完备测试
基于前文所述的安全性插件职责,建议安全性插件至少应进行下面的测试:
安全性插件 loader
安全性插件 loader 程序允许模拟 DB2 对上述建议测试的响应。这对于断定某个特定问题是由插件中的代码造成的,还是由 DB2 引起的是非常有用的。
程序输入为:
(编辑:IT资讯之家 www.it55.com)