从权限、访问、存储、传输、审计、备份、运维、应用层多个维度,整理数据库安全实践,适用于 MySQL、PostgreSQL、openGauss 等主流数据库。
一、账号与权限管理(身份访问控制)
最小权限原则
用户只分配业务必需权限,禁止使用
root/sa/admin超级账号做日常业务;拆分增删改查、DDL、运维权限,避免权限过大。账号管控
删除无用、默认、测试账号,锁定闲置账号;
强密码策略:复杂度、定期更换,禁止硬编码密码;
限制账号登录来源 IP,只允许业务服务器网段访问数据库。
角色 RBAC 权限模型
按业务角色分配权限,不直接给业务用户授权;方便批量权限变更,减少授权混乱。
禁止公开超级账号对外访问,远程登录按需开启。
二、数据存储安全
数据加密
静态加密(存储加密):数据库透明加密 TDE,对数据文件、表空间加密,磁盘被盗数据无法读取;
敏感字段加密:手机号、身份证、银行卡等,业务层加密存储(AES),不要明文入库;
区分加密:密码使用不可逆哈希算法(bcrypt、Argon2),禁止明文保存密码。
数据脱敏
开发、测试环境对真实敏感数据脱敏,模糊替换,防止测试库泄露真实业务数据。
行级 / 列级权限控制:部分数据库支持,不同用户只能查看指定行、指定列数据。
三、传输安全
开启 SSL/TLS 加密数据库连接,客户端和数据库之间通信加密,防止抓包窃听;
内网也建议启用加密,避免内网嗅探;关闭非加密连接端口。
四、访问与网络安全
网络隔离
数据库不直接暴露公网;使用防火墙、安全组,只放行应用服务器 IP;优先内网访问,公网通过跳板机、VPN 访问。
连接管控
限制最大连接数,防止恶意连接耗尽资源;启用连接超时,闲置连接自动断开。
防暴力破解
登录失败次数限制,多次失败锁定账号;开启登录日志。
五、日志与安全审计
开启数据库审计日志:登录、DDL 变更、DML 增删改、权限修改全部记录;
日志独立保存,禁止数据库用户修改、删除审计日志,日志定期归档;
定期审计:异常登录、大批量删除、权限变更行为及时告警。
六、备份与灾难恢复
定期备份:全量备份 + 增量备份,备份文件加密存储;
异地备份,不要只和数据库存同一台服务器;
备份权限严格控制,备份文件也是高价值数据;定期做备份恢复演练,确认备份可用;
防误删:生产环境禁止随意执行 drop、delete;开启回收站、闪回功能。
七、数据库本身运维安全
版本更新,打安全补丁,修复 CVE 漏洞,不使用老旧停止维护版本;
修改数据库默认端口,移除示例数据库,关闭不必要功能、存储过程、扩展插件;
关闭不必要的系统函数,防止 SQL 注入提权;
运维操作双人复核,高危 DML/DDL 走审批流程。
八、应用层防护(非常关键,大部分泄露来自注入)
杜绝 SQL 注入:强制使用预编译语句(PreparedStatement),参数化查询;禁止拼接 SQL 字符串;
输入校验过滤,ORM 框架合理使用;
业务层做权限校验,不能完全依赖数据库权限;
避免把报错详情直接返回前端,防止泄露库表结构。
九、其他安全机制
高可用环境注意主从复制安全:复制账号最小权限,复制链路加密;
定期安全扫描,漏洞检测;
数据生命周期管理,过期敏感数据安全销毁,不是简单删除;
人员安全:岗位分离,运维人员操作留痕,离职回收数据库账号。
总结简要版
用户权限管理,遵循最小权限原则,强密码,IP 限制访问;
数据加密:传输 SSL、存储 TDE、敏感字段加密,密码哈希;
网络隔离,不暴露公网,防火墙限制访问来源;
开启审计日志,监控异常操作;
加密定期异地备份,定期恢复演练;
及时更新版本修复漏洞,关闭无用功能;
应用层防止 SQL 注入,参数化查询;
数据脱敏,管控测试环境真实数据。
本文原创作者:易君召,详见:https://www.yijunzhao.cn/authors/yijunzhao,转载请注明出处。
原文链接
欢迎访问 小易撩挨踢