1. 首页 > DB2教程 > 正文

DB2教程FG041-DB2权限管理与安全实战

风哥教程参考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

uid=1001(db2user1) gid=1001(db2user1) groups=1001(db2user1),1002(db2users)

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”

AUTHORITY D_USER D_GROUP D_PUBLIC
———— —— ——- ——–
CONNECT N N Y
CREATETAB N N N
BINDADD N N N
IMPLICIT_SCHEMA N N Y

Part03-权限与角色管理

3.1 授予数据库级别权限

# 授予DBADM权限
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 授予对象级别权限

# 授予表的SELECT权限
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 安全检查清单

  • 检查实例级权限配置
  • 检查数据库级权限配置
  • 检查用户和角色权限
  • 检查审计配置
  • 检查加密配置
  • 检查网络访问控制
  • 检查补丁级别
  • 检查密码策略
更多视频教程www.fgedu.net.cn
学习交流加群风哥微信: itpux-com
风哥Oracle/MySQL/PostgreSQL/Greenplum/DB2/Redis等数据库培训课程,10年一线实战经验,企业级培训,真正掌握数据库核心技术!

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息