

认证鉴权
不同于ORACLE,PG,MYSQL等数据库,DB2拥有特立独行的用户验证、鉴权
官网解释如下;
用户认证是使用 Db2® 数据库系统外部的安全设施完成的。
此安全性工具可以是操作系统的一部分,也可以是一个独立的产品
系统创建用户,数据库层面赋权
DB2 has left authentication up to the OS.
This differs from Oracle and MYSQL and many other relational databases,
which at least offer the option of storing the users in the database itself.
create a user at the OS level and then grant them privileges at the database level and they’re ready to go.
认证类型
| 认证类型 | 含义 |
|---|---|
| SERVER | 在数据库服务器机器上进行用户认证。 |
| SERVER_ENCRYPT | 在数据库服务器机器上进行用户认证,密码在送到服务器端时需要加密。 |
| CLIENT | 在客户端机器上进行用户认证。如果使用了CLIENT,另外两个参数也控制认证在客户端进行还是在服务器端进行。TRUST_ALLCLNTS决定是否所有客户端机器都是可信的。对于可信的客户端才会在客户端机器进行认证,不可信的需要在服务器端认证,也就是需要提供用户名和密码。TRUST_CLNTAUTH决定可信客户端如果连接时提供了用户名和密码,认证在客户端进行还是服务器端进行。当然如果没有提供用户名密码,对于可信客户端一定会在客户端进行认证的。 |
| KERBEROS | 用户认证由 Kerberos 软件完成。 |
| KRB_SERVER_ENCRYPT | 如果客户端设置为KERBEROS, 用户认证由KERBEROS 软件完成. 否则使用 SERVER_ENCRYPT。 |
| GSS | 用户认证由 GSS plug-in完成。 |
| GSS_SERVER_ENCRYPT | 用户认证由 GSS plug-in完成,如果客户端不支持GSS,将使用SERVER认证的方法。 |
| DATA_ENCRYPT | 除了密码,与数据库交互的数据也进行加密。 |
赋权
connect to db_name;
grant createtab,bindadd,connect on database to user user_name;
connect reset;
用户标识限制
必须位于除 guests、admins、users 和 local 之外的主组中
可以包含小写字母 (a-z)、数字 (0-9) 和下划线字符 ( _ )
长度不能超过 8 个字符
不能以 IBM, SYS , SQL 或数字开头
不能是 DB2 保留字(USERS、ADMINS、GUESTS、PUBLIC 或 LOCAL)或 SQL 保留字
不能使用任何具有 root 用户特权的用户标识。
不能包含重音字符
如果已指定现有用户标识,而不是创建新用户标识,请确保该用户标识:
未被锁定
具有未锁定的密码
基本权限控制
建库时限制public
CREATE DATABASE RESTRICTIVE
手动收回public权限
CONNECT,IMPLICIT_SCHEMA ,CREATETAB,BINDADD
不同用户权限设置
SECADM, ACCESSCTRL, DBADM
总结:
1.系统创建用户,数据库层面赋权;如linux在系统PAM APIs执行认证。
2.支持多种认证方式,实际server居多,当使用SERVER_ENCRYPT支持本地用户和LDAP,对JDBC连接默认不加密,需要设置环境变量db2set DB2AUTH=JCC_ENFORCE_SECMEC。
3.尽量控制系统建立用户名在8个字符内,且回收public权限,避免所有OS用户都有隐式权限


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




