DB2定义了一个权限层次结构,用于将一组预先确定的管理权限授予用户账号组(group)。这些管理权限包括能够对数据库进行备份、更改配置参数、查看表数据等等。权限级别控制执行数据库管理器维护操作和管理数据库对象的能力。 DB2授权控制数据库安全策略的以下方面:
用户被授予的权限级别允许用户运行的命令允许用户读取或修改的数据允许用户创建、修改和删除的数据库对象 DB2中共包括两类权限:实例级和数据库级权限。实例级权限
SYSADM 系统管理员SYSCTRL 系统控制SYSMAINT 系统维护SYSMON 系统监视这些权限只能分配给组数据库级权限
DBADMSECADMLOAD用户可以通过以下命令来判断自己拥有哪些权限和数据库级特权
db2 get authorizations ---9.7 [db2inst1@db22 adm]$ db2 "SELECT substr(AUTHORITY,1,30) as AUTHORITY, D_USER, D_GROUP, D_PUBLIC, ROLE_USER, ROLE_GROUP, ROLE_PUBLIC, D_ROLE FROM TABLE (SYSPROC.AUTH_LIST_AUTHORITIES_FOR_AUTHID ('DB2INST1', 'U') ) AS T ORDER BY AUTHORITY"结果如图:
AUTHORITYD_USERD_GROUPD_PUBLICROLE_USERROLE_GROUPROLE_PUBLICD_ROLEACCESSCTRLYNNNNN*BINDADD (允许用户在数据库中创建新的包)NNYNNN*CONNECT (允许用户连接数据库)NNYNNN*CREATETAB (允许创建表)NNYNNN*CREATE_EXTERNAL_ROUTINE (允许用户注册外部例程-用C或java写的例程)NNNNNN*CREATE_NOT_FENCED_ROUTINENNNNNN*CREATE_SECURE_OBJECTNNNNNN*DATAACCESSYNNNNN*DBADMYNNNNN*EXPLAINNNNNNN*IMPLICIT_SCHEMA 允许用户在尙不存在的模式中创建对象(自动创建模式)NNYNNN*LOADNNNNNN*QUIESCE_CONNECT(允许用户连接处于quiesced状态的数据库)NNNNNN*SECADMYNNNNN*SQLADMNNNNNN*SYSADM*Y*****SYSCTRL*N*****SYSMAINT*N*****SYSMON*N*****WLMADMNNNNNN*可以看到db2inst1用户所在的组是有SYSADM权限的
DB2中的SYSADM权限就像是unix上的root权限。SYSADM用户能够对其他用户授予或撤销特权或权限。只允许SYSADM 用户更新DBM CFG文件。SYSADM 权限由DBM CFG中的SYSADM GROUP参数控制。
[db2inst1@db22 ~]$ db2 get dbm cfg | grep -i sysadm SYSADM group name (SYSADM_GROUP) = DB2IADM1SYSCTRL用户可以对实例中的任何数据库执行的命令示例如下所示:
db2start/db2stopdb2 create/drop databsedb2 create/drop tablespacedb2 backup/restore/rollforward databasedb2 runstats (针对任何表)db2 update db cfg for database dbname拥有SYSADM权限的用户使用以下命令将SYSCTRL分配给一个组:
db2 update dbm cfg using SYSCTRL_GROUP group_name数据库级权限包括DBADM、CONNECT、CREATETAB 、SECADM和LOAD。
