数据库账号须遵循最小权限原则,分为应用、运维、备份三类角色,严格限制对象级权限,禁用高危操作,定期审计回收闲置权限,并启用会话级动态脱敏。

数据库运行账号应严格遵循最小权限原则,只授予完成业务功能所必需的最低限度权限,避免使用高权限账号(如 root、sa、db_owner)直接运行应用服务。
明确区分账号角色与用途
将数据库账号按职责划分为三类:应用连接账号、运维管理账号、备份恢复账号。应用账号仅能访问指定库表,执行预设的增删改查操作;运维账号用于日常监控和故障排查,具备有限的系统视图查询权;备份账号仅授权执行备份命令及访问备份路径。不同角色账号严禁混用,尤其禁止应用服务以 DBA 身份连接数据库。
限制对象级权限范围
不开放库级或实例级授权,而是精确到具体数据库、指定表、甚至特定字段和存储过程。例如:
- 应用账号仅授予 SELECT/INSERT/UPDATE 权限于 orders 和 customers 表,且 UPDATE 仅限 status 字段
- 禁用 DROP TABLE、CREATE INDEX、EXECUTE(除白名单存储过程外)等高危操作
- 敏感表(如 user_credentials)默认拒绝所有应用账号访问,需通过视图或代理接口间接获取脱敏数据
定期审查与自动回收闲置权限
建立权限审计机制,每季度扫描账号实际 SQL 日志,识别长期未使用的权限项并自动标记;对连续 90 天无登录记录或无有效查询行为的账号,触发权限冻结流程。同时,在 CI/CD 流水线中嵌入权限校验环节,新上线的应用配置若申请超出基线权限,须经安全团队人工审批后方可部署。
启用会话级权限控制与动态脱敏
在支持行级安全(RLS)或动态数据脱敏(DDM)的数据库中(如 SQL Server、PostgreSQL 10+、OceanBase),为应用账号绑定策略:根据登录用户身份标签过滤可见数据行,或自动隐藏手机号、身份证号等字段的中间段。该机制不依赖应用层改造,从数据库引擎侧强制实施,有效降低越权读取风险。










