DB2 9 数据库服务器管理之DB2安全性2007-11-27 13:48:56 来源:论坛整理 作者:
DB2 安全性是通过组合外部安全性服务与内部 DB2 授权机制来处理的。外部安全性服务对希望访问 DB2 服务器的用户进行身份验证,DB2 外部的安全性软件负责处理身份验证。 DB2 安全性概述
DB2 安全性是通过组合外部安全性服务与内部 DB2 授权机制来处理的。外部安全性服务对希望访问 DB2 服务器的用户进行身份验证,DB2 外部的安全性软件负责处理身份验证。该软件可以是操作系统的安全性设施,也可是 Kerberos 等独立产品。成功校验了用户 ID 和口令后,内部 DB2 进程将接管控制,并确保用户有权执行所请求的操作。
身份验证类型 身份验证类型确定在何处验证用户 ID/口令对。所支持的身份验证类型有:
身份验证类型是在服务器和客户机处同时设置的。 服务器 每个实例仅允许一种类型的身份验证,也就是说,设置适用于该实例下定义的所有数据库。在数据库管理器配置文件中使用 AUTHENTICATION 参数指定该设置。 db2 update database manager configuration authentication auth_type 客户机 在客户机处编目的各数据库拥有自己的身份验证类型,使用 catalog database 命令指定。 db2 catalog database db_name at node node_name authentication auth_type 使用 SERVER 选项进行身份验证 使用 SERVER 选项时,用户 ID 和口令将发送到服务器进行校验。考虑以下示例。
若您想保护用户 ID 和口令免于被窃听,可使用身份验证类型 SERVER_ENCRYPT,这样用户 ID 和口令就都会被加密。 使用 Kerberos 进行身份验证 Kerberos 是一种外部安全性设施,它使用通用密码术创建共享的加密密钥。Kerberos 提供了安全的身份验证机制,这是因为用户 ID 和口令不再需要以明文形式通过网络传输。通过使用加密密钥,它使单点登录到远程 DB2 服务器成为可能。以下示意图展示了 Kerberos 身份验证在 DB2 中的工作原理。
DB2 客户机和服务器均支持 Kerberos 安全协议时,即可使用 KERBEROS 身份验证类型。某些客户机可能并不支持 Kerberos,但依然需要访问 DB2 服务器。为确保所有类型的客户机均能安全地连接,将 DB2 服务器的身份验证类型设置为 KRB_SERVER_ENCRYPT。这将允许所有启用了 Kerberos 的客户机使用 Kerberos 进行身份验证,而其他客户机则使用 SERVER_ENCRYPT 身份验证。下面给出了与 Kerberos 相关的不同的客户机与服务器身份验证设置摘要。
在客户机上进行身份验证 这一选项允许在客户机上进行身份验证。用户成功登录到客户机后,即可轻松连接到数据库,而无需再次提供口令。
这里有一个重要问题需要理解:存在不具有可靠的安全性设施的客户机系统,例如 Windows 9x 和 Classic Mac OS。它们叫做不受信任的客户机。任何人只要可以访问这些系统,就可以不经过身份验证直接连接到 DB2 服务器。谁知道他们会执行怎样的破坏性操作(例如,删除一个数据库)?为提供允许受信任的客户机自行执行身份验证、同时强制不受信任的客户机在服务器处进行身份验证的灵活性,引入了另外两种数据库管理器配置参数: TRUST_ALLCLNTS TRUST_CLNTAUTH 这两个参数仅在身份验证设置为 CLIENT 时被评估。 信任客户机 TRUST_ALLCLNTS 确定信任哪种类型的客户机。参数有以下可能值:
设想一个场景,DB2 服务器将身份验证设置为 CLIENT、TRUST_ALLCLNTS 设置为 YES。您作为 localuser 登录到一台 Windows 2000 计算机,并在未指定用户 ID 和口令的情况下连接到远程数据库。那么 localuser 将成为数据库处的连接授权 ID。而如果您想使用其他用户 ID 连接到数据库(例如,有执行数据库备份权限的 poweruser),又会怎么样呢? 为允许此类行为,可使用 TRUST_CLNTAUTH 来指定,当在 connect 语句或 attach 命令中提供了用户 ID 和密码时将在何处进行身份验证。允许使用的值有两个:
让我们来看一些演示参数用法的示例:
设置权限级别 权限级别控制执行数据库管理器维护操作和管理数据库对象的能力。在 DB2 中共有 5 种权限:
SYSADM 具有管理实例的完整特权,还可访问底层数据库中的数据。 SYSCTRL 和 SYSMAINT 拥有管理实例、其数据库和数据库对象的特定特权。这些权限不含 访问数据的权限。例如,像 'SELECT * FROM mytable' 或 'DELETE FROM mytable' 这样的语句是不允许的。 DBADM 拥有在特定数据库上执行管理任务的特权。还具有数据库的完整数据访问权限。 LOAD 拥有对指定数据库运行加载实用工具的特权。 下表总结了各权限可执行的功能。
管理 DB2 权限 SYS* 权限是在数据库管理器配置中设置的,通过将操作系统或安全性设施中定义的用户组指派给关联的参数进行设置。它必须是最大长度为 8 个字符的组名称,如下所示。
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 特权,之后才能加载数据。下一节将讨论特权。 设置特权 特权给予用户通过特定方式访问数据库对象的权力。如下列表给出了不同数据库对象的特权摘要。 数据库特权:
模式特权:
要显式地创建新模式,可使用 create schema 命令: connect to sample user dbowner; create schema dev authorization devuser; 表空间特权:
表与视图特权:
包特权:
索引特权:
例程特权:
顺序特权:
授予显式特权 授予特权 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 权限将被授予数据库创建者。 CONNECT、CREATETAB、BINDADD 和 IMPLICIT_SCHEMA 特权将被授予 PUBLIC。 USERSPACE1 表空间上的 USE OF TABLESPACE 特权将被授予 PUBLIC。 各成功绑定实用工具上的 BIND 和 EXECUTE 特权将被授予 PUBLIC。 SYSFUN 模式中所有函数的 EXECUTE 特权 with grant option 将被授予 PUBLIC。
|
|
||||
|
|
||||
|
|
|
||||
|
|
||||
|
|
|
||||
|
|
||||
|
|