DB2 数据库特权授予的方法和技巧(3)

http://www.itjxue.com  2015-08-21 22:26  来源:未知  点击次数: 

  隐式特权

  当发出某些命令时,DB2 可能会自动地授予特权,而不需要像前面看到的那样发出显式的 GRANT 语句。下表总结了会导致数据库管理程序隐式地授予特权的一些命令。注意,当删除创建的对象时,这些特性会隐式地撤消。但是,当显式地撤消更高级的特权时,不会撤消它们。

发出的命令 授予的特权 被授予特权的用户
CREATE TABLE mytable mytable 上的 CONTROL 发出命令的用户
CREATE SCHEMA myschema myschema 上的 CREATEIN、ALTERIN 和 DROPIN,以及将这些特权授予其他用户的能力 发出命令的用户
CREATE VIEW myview myview 上的 CONTROL(只有在用户拥有 myview 定义中引用的所有表和视图上的 CONTROL 特权的情况下) 发出命令的用户
CREATE DATABASE mydb mydb 的系统编目表上的 SELECT,mydb 上的 IMPLICIT_SCHEMA * PUBLIC**

  *当用户创建数据库时,隐式地授予这个用户这个数据库上的 DBADM 权限。获得 DBADM 权限就会隐式地授予 CONNECT、CREATETAB、BINDADD、IMPLICIT_SCHEMA 和 CREATE_NOT_FENCED 特权。即使撤消了 DBADM 权限,这个用户仍然会保留这些特权。

  **PUBLIC 是一个特殊的 DB2 组,其中包括特定数据库的所有用户。与前面讨论过的其他组不同,PUBLIC 不必在操作系统级进行定义。在默认情况下,会向 PUBLIC 授予一些特权。例如,这个组自动接受数据库上的 CONNECT 特权和编目表上的 SELECT 特权。可以对 PUBLIC 组发出 GRANT 和 REVOKE 命令,比如:

  db2 grant select on table sysibm.systables to public

  db2 revoke select on table sysibm.systables from public

  间接特权

  当数据库管理器执行包 时,可以间接获得特权。包中包含一个或多个 SQL 语句,这些语句已经转换为 DB2 用来在内部执行它们的格式。换句话说,包中包含可执行格式的多个 SQL 语句。如果包中的所有语句都是静态的,那么用户只需要有包上的 EXECUTE 特权,就能够成功地执行包中的语句。

  例如,假设 db2package1 执行以下静态的 SQL 语句:

  db2 select * from org

  db2 insert into test values (1, 2, 3)

  在这种情况下,拥有 db2package1 上的 EXECUTE 特权的用户会间接地获得 org 表上的 SELECT 特权和 test 表上的 INSERT 特权。

  基于标签的访问控制

  DB2 9 中新增的一个概念是基于标签的访问控制(LBAC)。LBAC 为 DBA 提供了在表的行或列级限制读/写特权的能力。

  在以前,进行这种限制的惟一方法是创建一个视图,授权用户使用这个视图,并撤消对基表的访问权。

  本教程只演示 LBAC 安全场景的一个示例。关于 LBAC 的更详细解释,请参考 developerWorks 上的 DB2 Label-Based Access Control, a practical guide, Part 1: Understand the basics of LBAC in DB2。

(责任编辑:IT教学网)

更多

推荐数据库文章