风哥教程参考DB2官方文档Security Guide、Administrative API Reference等内容,详细介绍DB2权限管理、用户管理、角色管理以及安全最佳实践。更多视频教程www.fgedu.net.cn
目录大纲
Part01-权限管理基础概念
1.1 DB2权限层次结构
DB2权限分为以下几个层次:
- 实例级别权限(SYSADM、SYSCTRL、SYSMAINT、SYSMON)
- 数据库级别权限(DBADM、SECADM、DATAACCESS、ACCESSCTRL等)
- 模式级别权限
- 对象级别权限(表、视图、索引、存储过程等)
1.2 实例级别权限
| 权限 | 描述 |
|---|---|
| SYSADM | 系统管理员,拥有实例的所有权限 |
| SYSCTRL | 系统控制员,可以管理实例和数据库 |
| SYSMAINT | 系统维护员,可以进行备份、恢复等维护操作 |
| SYSMON | 系统监控员,可以监控实例和数据库 |
1.3 数据库级别权限
| 权限 | 描述 |
|---|---|
| DBADM | 数据库管理员,拥有数据库的所有权限 |
| SECADM | 安全管理员,管理用户和权限 |
| DATAACCESS | 数据访问权限,可以访问和修改数据 |
| ACCESSCTRL | 访问控制权限,可以授予和撤销权限 |
| LOAD | 可以执行LOAD命令 |
| CREATETAB | 可以创建表 |
| CREATE_EXTERNAL_ROUTINE | 可以创建外部例程 |
| QUIESCE_CONNECT | 可以在静默状态下连接数据库 |
| IMPLICIT_SCHEMA | 可以隐式创建模式 |
Part02-用户与组管理
2.1 创建操作系统用户
useradd -m -d /home/db2user1 db2user1
passwd db2user1
# 创建用户组
groupadd db2users
# 将用户添加到组
usermod -a -G db2users db2user1
# 查看用户信息
id db2user1
2.2 配置实例级别权限
db2 get dbm cfg | grep -i “sys”
# 更新实例配置,设置权限组
db2 update dbm cfg using SYSADM_GROUP db2adm
db2 update dbm cfg using SYSCTRL_GROUP db2ctrl
db2 update dbm cfg using SYSMAINT_GROUP db2maint
db2 update dbm cfg using SYSMON_GROUP db2mon
# 重启实例使配置生效
db2stop force
db2start
2.3 验证用户权限
su – db2user1
db2 connect to fgedb
# 查看当前用户的权限
db2 “SELECT AUTHORITY, D_USER, D_GROUP, D_PUBLIC FROM TABLE(SYSPROC.AUTH_LIST_AUTHORITIES_FOR_AUTHID(‘DB2USER1’, ‘U’)) AS T ORDER BY AUTHORITY”
———— —— ——- ——–
CONNECT N N Y
CREATETAB N N N
BINDADD N N N
IMPLICIT_SCHEMA N N Y
Part03-权限与角色管理
3.1 授予数据库级别权限
GRANT DBADM ON DATABASE TO USER db2user1;
# 授予DATAACCESS权限
GRANT DATAACCESS ON DATABASE TO USER db2user1;
# 授予多个权限
GRANT CREATETAB, BINDADD, LOAD ON DATABASE TO USER db2user1;
# 授予组权限
GRANT CONNECT, CREATETAB ON DATABASE TO GROUP db2users;
3.2 授予对象级别权限
GRANT SELECT ON fgedu_order TO USER db2user1;
# 授予表的多个权限
GRANT SELECT, INSERT, UPDATE, DELETE ON fgedu_order TO USER db2user1;
# 授予所有权限
GRANT ALL ON fgedu_order TO USER db2user1;
# 授予模式权限
GRANT CREATEIN, ALTERIN, DROPIN ON SCHEMA fgedu TO USER db2user1;
# 授予存储过程执行权限
GRANT EXECUTE ON PROCEDURE fgedu.sp_get_order TO USER db2user1;
3.3 撤销权限
REVOKE DBADM ON DATABASE FROM USER db2user1;
# 撤销对象级别权限
REVOKE SELECT, INSERT ON fgedu_order FROM USER db2user1;
# 撤销所有权限
REVOKE ALL ON fgedu_order FROM USER db2user1;
3.4 角色管理
CREATE ROLE app_read_role;
CREATE ROLE app_write_role;
# 授予角色权限
GRANT SELECT ON fgedu_order TO ROLE app_read_role;
GRANT SELECT, INSERT, UPDATE, DELETE ON fgedu_order TO ROLE app_write_role;
# 将角色授予用户
GRANT ROLE app_read_role TO USER db2user1;
GRANT ROLE app_write_role TO USER db2user2;
# 启用角色
SET ROLE app_read_role;
# 查看角色信息
SELECT * FROM SYSCAT.ROLES;
SELECT * FROM SYSCAT.ROLEAUTH;
Part04-安全配置与最佳实践
4.1 实例安全配置
db2 update dbm cfg using FEDERATED NO;
# 配置认证方式
db2 update dbm cfg using AUTHENTICATION SERVER;
# 限制实例用户
db2 update dbm cfg using SYSADM_GROUP db2adm;
# 配置审计
db2 update dbm cfg using AUDIT_BUF_SZ 1000;
4.2 数据库安全配置
ALTER TABLE fgedu_order ACTIVATE ROW ACCESS CONTROL;
# 创建安全策略
CREATE SECURITY POLICY fgedu_security_policy;
# 配置加密
CREATE TABLESPACE encrypt_ts ENCRYPT USING ‘AES256’;
# 查看数据库配置
db2 get db cfg for fgedb;
4.3 安全最佳实践
- 最小权限原则:只授予必要的权限
- 使用角色管理权限,便于维护
- 定期审查用户和权限
- 启用审计功能
- 使用强密码策略
- 限制远程访问
- 定期更新DB2补丁
- 监控异常访问
4.4 权限审查脚本
SELECT GRANTEE, GRANTEETYPE, DBADMAUTH, SECADMAUTH, DATAACCESSAUTH, ACCESSCTRLAUTH
FROM SYSCAT.DBAUTH;
# 查看表权限
SELECT TABSCHEMA, TABNAME, GRANTEE, GRANTEETYPE, CONTROLAUTH, ALTERAUTH, DELETEAUTH, INSERTAUTH, SELECTAUTH, UPDATEAUTH
FROM SYSCAT.TABAUTH
WHERE TABSCHEMA = ‘FGEDU’;
# 查看模式权限
SELECT SCHEMANAME, GRANTEE, GRANTEETYPE, CREATEINAUTH, ALTERINAUTH, DROPINAUTH
FROM SYSCAT.SCHEMAAUTH;
# 查看角色权限
SELECT ROLE, GRANTEE, GRANTEETYPE, ADMIN
FROM SYSCAT.ROLEAUTH;
Part05-风哥经验总结与分享
5.1 权限管理经验
- 使用角色来管理权限,而不是直接给用户授权
- 定期审查权限,撤销不再需要的权限
- 区分开发、测试、生产环境的权限
- 文档化所有权限变更
- 使用自动化工具来管理权限
5.2 常见安全问题
| 问题 | 风险 | 解决方案 |
|---|---|---|
| 过多用户拥有DBADM权限 | 数据安全风险高 | 限制DBADM用户数量,使用角色 |
| 使用默认用户名和密码 | 容易被攻击 | 修改默认密码,使用强密码 |
| PUBLIC权限过大 | 所有用户都有过多权限 | 撤销PUBLIC的不必要权限 |
| 没有审计日志 | 无法追溯安全事件 | 启用审计功能 |
5.3 安全检查清单
- 检查实例级权限配置
- 检查数据库级权限配置
- 检查用户和角色权限
- 检查审计配置
- 检查加密配置
- 检查网络访问控制
- 检查补丁级别
- 检查密码策略
学习交流加群风哥微信: itpux-com
风哥Oracle/MySQL/PostgreSQL/Greenplum/DB2/Redis等数据库培训课程,10年一线实战经验,企业级培训,真正掌握数据库核心技术!
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
