DB2 V9.7 for Linux, UNIX, and Windows

权限

使用 DB2® 工具来执行授权。DB2 表和配置文件用于记录与每个授权名关联的许可权。

当已认证的用户尝试访问数据时,会将这些已记录的许可权与下列各项的许可权进行比较: 根据此比较,DB2 服务器会确定是否允许执行所请求的访问。

记录的许可权类型是特权、权限级别和 LBAC 凭证。

特权为授权名定义单个许可权,它使用户能够创建或访问数据库资源。特权存储在数据库目录中。

权限级别提供了一种对特权进行分组的方法以及对数据库管理器操作的控制权。特定于数据库的权限存储在数据库目录中;系统权限与组成员关系相关联,并且与权限级别相关联的组名存储在给定实例的数据库管理器配置文件中。

LBAC 凭证是 LBAC 安全标号和 LBAC 规则免除权,它们允许访问受基于标号的访问控制 (LBAC) 保护的数据。LBAC 凭证存储在数据库目录中。

组提供了一个简便的方法来对一组用户执行授权,而不必单独对每个用户授予或 撤销特权。除非另有指定,否则,组授权名可以用在为了授权而使用授权名的 任何地方。通常,对于动态 SQL 和非数据库对象授权(如实例级别命令和实用程序),考虑使用组成员资格,但对于静态 SQL,那么不考虑使用。在授予 PUBLIC 特权时则例外:在处理静态 SQL 时要考虑使用组成员资格。DB2 文档中的适当地方提到了组成员资格不适用的特殊情况。

角色是将一项或多项特权集中在一起的数据库对象,可以使用 GRANT 语句将角色指定给用户、组、PUBLIC 或其他角色,也可以使用 CREATE TRUSTED CONTEXT 或 ALTER TRUSTED CONTEXT 语句将它指定给可信上下文。可以对工作负载定义中的 SESSION_USER ROLE 连接属性指定角色。使用角色时,将对数据库对象的访问许可权与角色关联。然后,作为这些角色的成员的用户将具有对角色定义的特权,通过这些特权可访问数据库对象。

角色提供类似于组的功能;它们对一组用户执行授权,而不必单独地对每个用户授予或撤销特权。角色的一个优点是它们由 DB2 数据库系统管理。在视图、触发器、具体化查询表 (MQT)、程序包和 SQL 例程的授权过程中将考虑授予角色的许可权,这些许可权与授予组的许可权不同。在视图、触发器、MQT、程序包和 SQL 例程的授权过程中不考虑授予组的许可权,这是因为 DB2 数据库系统无法发现组中的成员资格何时更改,因此它无法在适当时使上述对象无效。
注: 在视图、触发器、MQT、程序包和 SQL 例程的授权过程中不考虑授予角色的许可权,这些角色已授予组。
在 SQL 语句处理期间,DB2 授权模型考虑的许可权是下列许可权的并集:
  1. 授予与 SQL 语句关联的主授权标识的许可权
  2. 授予与 SQL 语句关联的辅助授权标识(组或角色)的许可权
  3. 授予 PUBLIC 的许可权,包括直接或通过其他角色间接授予 PUBLIC 的角色。
  4. 授予可信上下文角色的许可权(如果适用)。