DB2的认证和授权

DB2 的安全性由两方面组成:认证和授权

1.认证
认证就是系统验证用户身份的过程。说的简单点,就是验证用户名和密码,因为DB2用户同时也是操作系统用户,所以,首先必须得到操作系统的认可。在默认情况下,DB2使用的就是基于操作系统的用户认证。当然,你也可以指定其它认证方式。DBM CFG 的AUTHENTICATION参数决定在哪里进行用户认证。

AUTHENTICATION可以设定为以下值:

参数 释义
SERVER (default) 认证在服务器端执行
CLIENT 认证在客户端执行
SERVER_ENCRYPT 和SERVER 参数相似,而且用户的id 和密码都经过加密
KERBEROS 认证使用Kerberos 安全机制
SQL_AUTHENTICATION_DATAENC 在服务器端进行认证,数据库连接时必须使用数据加密
SQL_AUTHENTICATION_DATAENC_CMP 与上面类似,但当条件不允许的情况下,可以不对数据进行加密
GSSPLUGIN 使用外部的基于GSS API 插件的安全工具进行认证

查看当前设置:

db2 get dbm cfg | grep AUTHENTICATION

2.授权
授权是 DB2 获取有关已认证的 DB2 用户的信息的过程,此信息指示该用户可执行的数据库操作,以及可访问的数据对象。

很多人都感觉DB2的权限非常难理解,其实非常简单,大家之所以感觉难理解,主要原因是IBM把它介绍复杂了,然后,各种书籍、资料把DB2 的官方资料翻译出来呈现在大家面前,有的翻译的可能并不是很好,所以大家就感觉难理解了。其实,大家完全可以把DB2想象一个仓库,仓库中有好多房间,房间中有好多东西。仓库管理员有所有房间的钥匙,你想进入某个房间时,你必须有该房间的钥匙。如果你没有钥匙,你可以像管理员申请。那么DB2 有哪些房间呢(也就是DB2的组成部分)? DB2由 实例、数据库、表空间、模式、表、视图等组成。每个组成部分都定义了相应的权限,如:你想访问某个表,那么你首先得连接数据库,所以,你必须具有该数据库的CONNECT权限,同时你还必须有该表的SELECT 权限。这就相当于,你想进入一个房间,你必须有该房间的钥匙。下面我们来了解一下DB2的不同组成部分定义了哪些权限

实例级别权限:

参数 释义
SYSADM 系统管理权限
SYSCTRL 系统控制权限
SYSMAINT 系统维护权限
SYSMON 系统监视权限

SYSADM > SYSCTRL > SYSMAINT > SYSOMN
查看方式:
get authorizations

数据库级别权限:

参数 释义
ACCESSCTRL 允许拥有者授予和撤销所有对象特权和数据库权限以及 ACCESSCTRL、DATAACCESS、DBADM 和 SECADM 权限。
BINDADD 允许拥有者在数据库中创建新包
CONNECT 允许拥有者连接到数据库
CREATETAB 允许拥有者在数据库中创建新表
CREATE_EXTERNAL_ROUTINE 允许拥有者创建过程以供数据库的应用程序和其他用户使用
CREATE_NOT_FENCED_ROUTINE 允许拥有者创建未受防护的用户定义的函数(UDF)或过程
DATAACCESS 允许拥有者访问存储在数据库表中的数据
Editing is enabled. Use the "Save changes" button below the editor to commit modifications to this file.