这里有一个重要问题需要理解:存在不具有可靠的安全性设施的客户机系统,例如 Windows 9x 和 Classic Mac OS。它们叫做不受信任的客户机。任何人只要可以访问这些系统,就可以不经过身份验证直接连接到 DB2 服务器。谁知道他们会执行怎样的破坏性操作(例如,删除一个数据库)?为提供允许受信任的客户机自行执行身份验证、同时强制不受信任的客户机在服务器处进行身份验证的灵活性,引入了另外两种数据库管理器配置参数:
TRUST_ALLCLNTS
TRUST_CLNTAUTH
这两个参数仅在身份验证设置为 CLIENT 时被评估。
信任客户机
TRUST_ALLCLNTS 确定信任哪种类型的客户机。参数有以下可能值:
YES
信任所有客户机。这是默认设置。身份验证将在客户机处执行。但有一个例外,我们将在介绍 TRUST_CLNTAUTH 时更详细地予以讨论。
NO
仅信任具备可靠的安全性设施的客户机(受信任的客户机)。若不受信任的客户机连接,则必须提供用户 ID 和口令,以便在服务器进行身份验证。
DRDAONLY
仅信任在 iSeries 或 zSeries 平台上运行的客户机(例如,DRDA 客户机)。其他任何客户机都必须提供用户 ID 和口令。
设想一个场景,DB2 服务器将身份验证设置为 CLIENT、TRUST_ALLCLNTS 设置为 YES。您作为 localuser 登录到一台 Windows 2000 计算机,并在未指定用户 ID 和口令的情况下连接到远程数据库。那么 localuser 将成为数据库处的连接授权 ID。而如果您想使用其他用户 ID 连接到数据库(例如,有执行数据库备份权限的 poweruser),又会怎么样呢?
为允许此类行为,可使用 TRUST_CLNTAUTH 来指定,当在 connect 语句或 attach 命令中提供了用户 ID 和密码时将在何处进行身份验证。允许使用的值有两个:
CLIENT
身份验证在客户机处执行,不需要用户 ID 和口令。
SERVER
身份验证在服务器处完成,需要提供用户 ID 和口令。
DBADM 和 LOAD 是数据库级的权限。使用 grant 语句可授予用户或用户组这些权限,使用 revoke 语句可予以撤销权限:
connect to sample; grant dbadm on database to user john; grant load on database to group dbagrp; revoke load on database from group dbagrp;
请注意,具有 LOAD 权限的用户也需要表上的 INSERT 特权,之后才能加载数据。下一节将讨论特权。
connect to sample user dbowner; create schema dev authorization devuser;
表空间特权
USE OF TABLESPACE 允许用户在特定表空间内创建表。这一特权无法用于 SYSCATSPACE 或任何系统临时表空间。
表与视图特权
CONTROL 为用户提供表或视图的所有特权,以及将这些特权(除 CONTROL 以外)授予他人的能力。
ALTER 允许用户更改表或视图。
DELETE 允许用户删除表或视图中的记录。
INDEX 允许用户在表上创建索引。
INSERT 允许用户向表或视图中插入条目。
REFERENCES 允许用户创建和删除外键,将表指定为关系中的父表。
SELECT 允许用户从表或视图中检索行。
UPDATE 允许用户在表或视图中更新条目。这一特权还可将用户约束为仅更新特定列: grant update (workdept, job) on table employee to devuser;
ALL PRIVILEGES 授予用户表或视图上的上述全部特权(除 CONTROL 外)。
包特权
CONTROL 为用户提供了重新绑定、删除或执行一个包的能力,以及将这些特权(除 CONTROL以外)授予他人的能力。
BIND 允许用户重新绑定现有包。
EXECUTE 允许用户执行包。
索引特权
CONTROL 允许用户删除索引。
例程特权
EXECUTE 允许用户执行用户定义的函数。
顺序特权
USAGE 允许用户为顺序对象使用 NEXTVAL 和 PREVVAL 表达式。
授予显式特权
授予特权 with grant option 允许授权 ID 将特定特权扩展给他人。该选项仅对包、例程、模式、表、表空间和视图可用。
尽管特权的授予是可扩展的,但撤销特权并非如此。若通过 with grant option 获得了特权,用户不能撤销他人的特权。示例如下。
该语句允许 john 在表 employee 上执行 select、update 或 delete 操作,并可将这些特权授予他人:
grant select, update, delete on table employee to user johnwith grant option