返回博客列表

数据库权限管理混乱?三步建立规范的数据库访问控制流程

SQLDEV 团队 2026年3月3日
权限管理访问控制数据库安全

关键词:数据库权限管理、数据库访问控制、数据库堡垒机、数据库安全管理

引言

你的公司是不是这样管理数据库权限的:

  • 开发、测试、运维共用一个数据库账号
  • root 密码写在项目配置文件里,所有人都知道
  • 新员工入职直接给全库权限,离职了也没人回收
  • 想查谁在什么时候执行了什么 SQL,查不到

如果中了两条以上,恭喜你,你的数据库权限管理和大多数公司一样——基本没有管理。

这不是个小问题。2024 年,国内多家企业因为数据库权限失控导致数据泄露,轻则罚款,重则业务停摆。《数据安全法》和等保 2.0 都对数据库访问控制有明确要求。

今天聊聊怎么用三步建立一个规范的数据库权限管理体系。


第一步:收权——砍掉所有直连

问题根源:直连

大多数权限混乱的根源是同一个——开发和运维可以用 Navicat、DBeaver 等客户端直接连接生产数据库。

一旦能直连,就意味着:

  • 你无法控制他执行什么 SQL
  • 你无法知道他看了什么数据
  • 你无法在事后追溯操作记录

解决方案:数据库堡垒机

把所有数据库的直连通道关掉,所有访问必须通过数据库堡垒机进行:

以前:开发 → Navicat → 生产数据库(无管控)

现在:开发 → SQLDEV(堡垒机)→ 生产数据库(全程管控)

在网络层面:

  1. 数据库只允许堡垒机 IP 访问(修改安全组/防火墙规则)
  2. 关闭数据库的外网访问
  3. 所有人通过堡垒机的 Web 界面或终端操作数据库

这一步是基础中的基础。 没有这一步,后面的权限管理都是空谈。


第二步:分权——最小权限原则

角色定义

角色权限范围典型操作
开发测试库读写,生产库只读SELECT
测试测试库读写SELECT, INSERT, UPDATE
DBA所有库读写 + DDL全部,但需要审批
管理员用户管理 + 审批审批工单、管理权限
只读账号指定库只读SELECT

关键原则

1. 生产库开发只读

开发人员在生产环境只能执行 SELECT,且只能访问与自己项目相关的库。想修改数据?走工单。

2. 敏感字段脱敏

即使是 SELECT,包含手机号、身份证、银行卡号的字段也应该自动脱敏:

-- 开发看到的查询结果
| name   | phone         | id_card              |
|--------|---------------|----------------------|
| 张三   | 138****5678   | 320106****1234       |

3. 按项目/库隔离

A 项目的开发不能看到 B 项目的数据库。在 SQLDEV 中可以用项目维度管理权限,开发只能看到自己被授权的实例和库。

4. 临时权限有有效期

如果开发需要临时查生产数据,走权限申请工单,审批后自动授权,到期自动回收。不要给永久权限。

SQLDEV 中的实现

  1. 创建角色模板(开发、测试、DBA、只读)
  2. 为每个角色配置可访问的数据库实例和库
  3. 配置数据脱敏规则(手机号、身份证、银行卡号等)
  4. 开发申请权限走工单,DBA 审批后自动生效
  5. 设置权限有效期,过期自动回收

第三步:审计——所有操作留痕

需要记录什么

审计项内容
登录审计谁在什么时间从什么 IP 登录了系统
SQL 审计执行了什么 SQL,在哪个库,返回了多少行
导出审计谁导出了数据,导出了哪些字段,多少条
权限变更谁的权限被修改了,谁操作的
工单审计工单的完整生命周期(提交→审核→审批→执行)

审计日志要求

  • 不可篡改:操作者无法删除或修改自己的审计记录
  • 可检索:支持按人、按时间、按数据库、按 SQL 类型查询
  • 可导出:满足合规检查时的导出需求
  • 保留时间:至少 180 天(等保要求)

SQLDEV 的审计能力

  • Web SQL 查询全程记录(SQL + 结果行数 + 耗时)
  • SSH 终端操作录屏回放(.cast 格式,可在 Web 端回放)
  • 高危命令实时告警(如 rm -rfDROP TABLE
  • 操作日志不可由操作者删除
  • 支持日志导出为 Excel/PDF

落地路线图

阶段时间动作
第 1 周部署堡垒机部署 SQLDEV,配置数据库实例连接
第 2 周收权关闭数据库外网访问,所有访问走堡垒机
第 3 周分权创建角色,分配权限,配置脱敏规则
第 4 周审计确认审计日志正常记录,配置告警规则
持续优化根据实际使用反馈调整权限和规则

四周时间,一个人就能搞定。


总结

数据库权限管理的核心就三件事:

  1. 收权 —— 切断直连,所有访问走堡垒机
  2. 分权 —— 最小权限原则,按角色按项目分配
  3. 审计 —— 所有操作留痕,不可篡改

不复杂,但很多团队就是不做。直到出事了才发现,没有流程的代价远比建立流程的成本高。


SQLDEV 社区版免费下载,支持 30+ 种数据库的统一管控: https://www.sqldev.info


本文首发于 SQLDEV 官方博客。更多数据库安全管理实践,请关注我们。