做后端或 DBA 的人常遇到这种局面:出了事才发现权限给大了、删改没留痕、备份能读但没人验证过。可数据库安全到底该管哪几块,很多人答不全。这篇把维度拆开,每块给出该问的问题、该做的动作,以及什么情况下可以放缓,方便你当成一次自查的坐标。
做后端或 DBA 的人常遇到这种局面:出了事才发现权限给大了、删改没留痕、备份能读但没人验证过。可数据库安全到底该管哪几块,很多人答不全。这篇把维度拆开,每块给出该问的问题、该做的动作,以及什么情况下可以放缓,方便你当成一次自查的坐标。
先说清一件事:这些维度不是按重要程度排的,是按「出事时能不能兜住」排的。权限、入口、数据分级、变更留痕、备份恢复、凭证、监测、流程,缺哪块最后都会以另一种形式返回来找你。你可以把它当一版检查清单来用,不必一次做完,但每一项都要有结论:做了、还是决定不做并写清原因。
账号、权限与身份归属
很多团队出问题的根子不在外部攻击,而在自己人手里的一个高权账号被共用、被闲置、被复制到了不该在的地方。第一步不是加工具,而是先把账号清点出来,按用途分门别类,再逐个决定它该活还是该死。
- 先分三类账号:人用的、应用用的、运维用的,三类不能共用同一个高权账号;应用账号只给到具体的库和表级读写权限,禁止带 DDL 权限
- 问四个问题:谁有这个账号、它从哪连过来、什么时候用过、离职或换人后谁接手;答不上来的账号就是待清理项
- 权限收敛要有顺序:先确认业务依赖,再补一条绕行路径,最后才收权限,别反过来先收再说
- 每一项权限变更都要有人复核,哪怕只是口头确认,也要在工单或聊天记录里留一句
| 账号类型 | 典型权限范围 | 判断标准 |
|---|---|---|
| 人用(开发/分析) | 只读或受限写入,按库划分 | 能不能在十分钟内列出它连过哪些库 |
| 应用用 | 只给到的库表读写,无 DDL | 它掉线会不会影响业务,会就说明权限设计依赖太高 |
| 运维用(高权) | 临时提权,用完即回收 | 有没有申请记录和回收记录,缺一个就算不合格 |
判断标准是「按需可回收」:如果收回权限会让线上业务直接挂,说明当初设计就错了,得先补一条绕行路径再收。不适用的情况:单机小项目、数据本身公开可读,硬做细粒度授权反而拖慢交付,此时至少保住高权账号不共用,别一整个团队共用一个超级账号。
访问路径与网络边界
数据库安全的第二层不是密码,而是「谁能摸到它」。同一个漏洞,从公网打进来的代价和从内网跳板机打进来的代价完全不一样。要做的第一件事是把所有入口列全,而不是只盯着应用配置里那一个连接串。
- 列出所有能连到库的入口:应用内网、跳板机、本地开发直连、第三方同步任务、报表工具,逐个确认是否真的必要
- 能只走内网就不要开公网,能不落固定 IP 就用白名单;连接串和凭证不要写死在代码仓库里
- 排查顺序:先从数据库侧的连接日志看来源分布,再回到网络侧找对应策略,比反过来猜快得多
- 每季度对一次入口清单,新增的第三方同步任务最容易漏登
实际排查时,很多人一上来就翻防火墙规则,其实更快的做法是先看数据库自己在记录什么来源,再倒推网络侧该收紧哪条。不适用的情况:跨云、跨办公网无法收敛成单一入口时,至少把入口数量固定下来并逐个登记,别让它自己长出来。
数据分级与脱敏边界
数据分级听起来像合规部门的事,但对 DBA 和后端来说它直接决定了两件事:哪些字段能进测试库,哪些字段能在日志里打印。没分级,脱敏就无从下手,因为没人知道该脱谁。
- 可公开
- 被拖走也不造成个体损失,主要影响业务本身
- 内部可见
- 泄露会带来管理麻烦,但不涉及具体个人
- 强敏感
- 身份、联系方式、支付相关,泄露即涉及个人,必须默认加密或脱敏
脱敏和加密不是二选一,脱敏解决「看到也没用」,加密解决「拿走也打不开」,同一张表可能两样都要。动作上,给每个强敏感字段标注一份规则表,写明导出、抽样、日志打印时各自怎么处理。不适用的情况:只存公开数据的库不必强做分级,但一旦混入一列个人信息,就要重新过一遍,别因为「只加了一列」就跳过。
变更管控与审计留痕
结构和数据的变更如果没被记录,事后就只能靠猜。这里的重点不是「禁止变更」,而是「变更之后能还原出发生了什么、谁干的、怎么退回去」。这跟权限是两码事,权限管的是能不能动,留痕管的是动了之后查不查得到。
- 走评审和窗口DDL 改动先评审,选低峰窗口执行;谁改的、改了什么、回滚方案是什么,三样都要落到工单里。
- 关键表带变更字段给重要表加上修改人、修改时间字段,让「某条记录在某时间点被谁改成什么样」能直接查出来,而不是只靠数据库日志翻。
- 定义留痕的合格线如果一次误删发生后你无法在十分钟内定位到是哪个账号、哪个入口干的,就说明留痕不够,需要补。
- 控制留存和归档日志留存期限不是越久越好,按合规要求和存储成本定,超过期限的做归档而不是堆在热库。
不适用的情况:日志留存期限不是越久越好,超过期限的做归档而不是堆在热库。另外,如果你们的变更频率极低、半年动不了一次结构,也可以把评审流程简化成一次确认,但确认动作本身不能省。
备份、恢复与可验证性
备份额度最容易被高估的能力就是「我备份了」。备份文件存在不等于能恢复,能恢复不等于能在你接受的时间内恢复。这块的验收标准只有一条:有人真的按流程恢复过一次,并且记录下来。
- 分清两类备份:给故障恢复用的,要能算出恢复到哪个时间点;给合规归档用的,要能解冻读出来,两者别混用同一套策略
- 给核心库定恢复目标:能丢多少数据、多久必须起来,按这个目标反推备份频率和方式
- 定期做恢复演练,别等真出事才第一次跑流程;演练至少覆盖「只恢复单表」和「整库恢复」两种场景
- 备份文件本身的访问权限也要管,能读备份的人往往等于能读全量数据
不适用的情况:纯缓存类、可随时重建的库可以降低要求,但要先确认它真的可重建,而不是嘴上说可重建。判断不清的时候,宁可多做一次演练。
凭证、密钥与连接安全
密码和密钥是数据库安全里最常见、也最常被敷衍的一环。不是没人知道要管,而是平时没事,一动就容易把线上打挂,于是拖着不动。解决思路是把「轮换」当成有步骤的操作,而不是一句口号。
- 集中存放数据库密码、连接串、云上托管的访问密钥统一存到专门的凭证管理位置,不跟业务配置混放,不进公开仓库。
- 确认影响面轮换前先列出还有谁在用这条旧凭证,包括定时任务、报表工具、第三方同步,漏一个就会断。
- 灰度替换先让新凭证可用、再切老服务、最后才作废旧凭证,中间留出观察窗口。
- 交接跟人走访问权限跟人走而不是跟机器名走,人员变动时按清单回收,别留下一个没人认领的凭证。
不适用的情况:本地开发环境可以宽松些,但本地库不要放生产数据的完整副本,这一条没有例外。
异常监测与响应顺序
监测的目的不是做一张好看的仪表盘,而是让异常在业务报错之前就被看到。如果每次都是用户先发现,那监测等于没做。要盯的信号不多,但都要能对应到具体动作。
| 信号 | 为什么值得盯 | 对应的第一动作 |
|---|---|---|
| 非工作时段的高权操作 | 正常业务很少在这个时间点动高权账号 | 确认是不是已知的运维任务,不是就先联系执行人 |
| 单次影响行数异常大的语句 | 误删、误更新通常会先以这个形式出现 | 先停会话,再评估影响范围,不要立刻重跑 |
| 陌生来源的连接 | 可能是入口没登记,也可能是凭证外泄 | 核对入口清单,找出它从哪来 |
| 导出类操作突增 | 数据外带的前兆 | 确认操作人和用途,必要时先切掉入口 |
响应顺序建议:先确认还在不在继续、再切掉入口、然后保留现场(日志、会话、快照)、最后才谈恢复和复盘。判断标准是「能被发现」:如果异常只有等业务报错才知道,监测等于没有。不适用的情况:低流量内部系统不必上全套告警,交给人工定期看日志也可以,但要写进值班约定,别变成没人看。
流程、责任人与定期自查
前面七块讲完,最后一块是把它们变成一张有人负责的表。没有负责人和检查频率的项,默认就是没人管。这一节不涉及技术,但决定了前面那些动作能不能长期生效。
- 把上面几块落成一张表:每项写清负责人、检查频率、通过标准,没写的项默认是没人管
- 自查节奏不必一刀切,核心库勤一些,边缘系统可以按季度;重点是每次都有结论,而不是走个流程
- 新人接手、系统扩容、接入新的第三方同步任务,这三个节点都必须重新过一遍权限和入口
- 权限变更和凭证轮换这两类操作,哪怕团队很小,也要做到至少一人复核
不适用的情况:团队只有一两个人时不必设专职,但至少要做到权限变更有人复核。如果连复核都做不到,就把变更频率压下来,用「少动」换「少错」。想对照其他团队在中转站与工具选择上的思路,可以去站内工具目录看看别人怎么组织这类检查。
下一步如果你想把这套自查落到具体工具和站点选择上,可以到站内工具目录和可信度检测页核对当时的清单与实测记录,把「该管哪几块」变成「今天先做哪一块」。→常见问题
数据库安全管理到底有没有一个标准清单?
没有放之四海皆准的清单,但维度是固定的:账号权限、访问路径、数据分级、变更留痕、备份恢复、凭证、监测响应、流程责任人。你可以按这八块逐项打勾,具体数值和频率按自己业务的合规要求定,站内安全与合规模块有更多对照材料。
权限最小化会不会把业务搞挂?
会,如果直接在生产上硬收。正确做法是先看这个账号实际用到哪些库表,补一条满足业务的窄权限,验证跑通后再撤旧权限,中间留出观察期。涉及批量任务和定时脚本的要单独确认,它们常是最容易被漏掉的调用方。
备份每天都做,还需要演练吗?
需要。备份能不能恢复是两回事,常见坑包括备份文件本身就损坏、恢复出来缺少某段时间的数据、恢复流程依赖一个已经离职的人。建议核心库至少完整走一次恢复演练,记录耗时和卡点,之后按节奏复查。
审计日志要留多久才够?
取决于你受哪套要求约束,有的按行业规定,有的按内部制度。实操上先确定能接受的最短可追溯窗口,再按存储成本决定热库留多久、归档留多久。留存期限的具体口径可以在站内安全与合规分区找对应页面核对。
小团队没人专职做安全,怎么起步?
先把最容易出事的三件事做了:高权账号不共用、生产凭证不进代码仓库、备份验证过一次。这三件做完再谈权限细分和告警。顺序比全面重要,一上来铺全套流程通常跑不动。