| 网站首页 | 文章中心 | 电子书下载 | 矢量图库 | 视频教程 | 素材下载 | 程序代码下载 | JS代码 | 论坛 | 
常用软件类:
|杀毒安全 |联络聊天 |网络软件 |多媒体类 |系统工具 |图形图像 |系统工具 |应用软件 |行业软件
开发设计类:
|动画制作 |图像处理 |3D设计 |操作系统 |站长学院 |网络相关 |WEB设计 |数据库类 |程序开发
DB2 9 数据库服务器管理之DB2安全性
 

 

  信任客户机

  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 和口令。

  让我们来看一些演示参数用法的示例:

  TRUST_ALLCLNTS 和 TRUST_CLNAUTH 示例

  设置权限级别

  权限级别控制执行数据库管理器维护操作和管理数据库对象的能力。在 DB2 中共有 5 种权限:

  DB2 权限

  SYSADM

  具有管理实例的完整特权,还可访问底层数据库中的数据。

  SYSCTRL 和 SYSMAINT

  拥有管理实例、其数据库和数据库对象的特定特权。这些权限不含 访问数据的权限。例如,像 'SELECT * FROM mytable' 或 'DELETE FROM mytable' 这样的语句是不允许的。

  DBADM

  拥有在特定数据库上执行管理任务的特权。还具有数据库的完整数据访问权限。

  LOAD

  拥有对指定数据库运行加载实用工具的特权。

  下表总结了各权限可执行的功能。

  DB2 权限

  管理 DB2 权限

  SYS* 权限是在数据库管理器配置中设置的,通过将操作系统或安全性设施中定义的用户组指派给关联的参数进行设置。它必须是最大长度为 8 个字符的组名称,如下所示。

  DB2 权限

  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 允许用户连接数据库。
  • BINDADD 允许用户在数据库中创建新包。
  • CREATETAB 允许用户在数据库中创建新表。
  • CREATE_NOT_FENCED 允许用户创建非 fenced 用户定义的函数或存储过程。
  • IMPLICIT_SCHEMA 允许用户在尚不存在的模式中创建对象。
  • QUIESCE_CONNECT 允许用户在数据库停顿时访问数据库。
  • CREATE_EXTERNAL_ROUTINE 允许用户创建以 C 语言、Java™ 语言、OLD 和 COBOL 编写的存储过程。

  模式特权

  • CREATEIN 允许用户在模式内创建对象。
  • ALTERIN 允许用户更改模式内的对象。
  • DROPIN 允许用户删除模式内的对象。

  要显式地创建新模式,可使用 create schema 命令:

  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 john

  with grant option

  该语句允许 devusers 组中的用户重新绑定、删除及执行包 dev.pkg1。同一组的用户还可将 BIND 和 EXECUTE(但不包括 CONTROL)特权授予他人。 grant control on package dev.pkg1 to group devusers

  with grant option

  授予隐式及间接特权

  典型情况下,DB2 特权是通过 grant 语句显式授予的,方法如前所述。有时用户可能还要隐式或间接地通过执行的特定操作获得特权。让我们来看一些场景。

  • 被授予 DBADM 权限的用户还被隐式地授予 BINDADD、CONNECT、CREATETAB、CREATE_NOT_FENCED 和 IMPLICIT_SCHEMA 权限。
  • 当用户创建数据库时:

  DBADM 权限将被授予数据库创建者。

  CONNECT、CREATETAB、BINDADD 和 IMPLICIT_SCHEMA 特权将被授予 PUBLIC。

  USERSPACE1 表空间上的 USE OF TABLESPACE 特权将被授予 PUBLIC。

  各成功绑定实用工具上的 BIND 和 EXECUTE 特权将被授予 PUBLIC。

  SYSFUN 模式中所有函数的 EXECUTE 特权 with grant option 将被授予 PUBLIC。

  • 创建表、视图、索引、模式或包的用户将自动获得他/她所创建的数据库对象上的 CONTROL 特权。
  • 当用户执行一个包含静态 SQL 语句的包时,语句中所引用的数据库对象的显式特权是不需要的。用户仅需要包上的 EXECUTE 特权来执行语句。但这并不表示该用户有权直接访问底层数据库对象。考虑以下示例:

  隐式和间接特权

上一页  [1] [2] 


  • 上一篇文章:

  • 下一篇文章: 没有了
  • 相关文章