主从数据库访问权限安全建议
腾讯云MySQL(主库)+ 群晖MariaDB(从库)的部署场景,从「账号权限、网络访问、操作管控、审计监控」四个维度给出可落地的安全建议,兼顾易用性和安全性:
一、账号权限管控(核心)
1. 复制账号最小权限原则
- 仅授予必要权限:复制账号(如
同步用户名)只需要REPLICATION SLAVE和REPLICATION CLIENT权限,禁止授予ALL/WRITE/ALTER等高危权限,且仅授权同步所需的主机范围:-- 正确授权(仅群晖IP可访问,仅复制权限) CREATE USER '同步用户名'@'群晖公网IP' IDENTIFIED WITH mysql_native_password BY '强密码'; GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO '同步用户名'@'群晖公网IP'; FLUSH PRIVILEGES; - 拒绝通配符主机:避免
同步用户名@'%'(允许任意IP访问),仅授权群晖的固定公网IP;若群晖IP动态,可缩小网段范围(如123.45.0.0/16)。 - 强密码策略:复制账号密码需满足「大小写+数字+特殊字符」,长度≥12位,且定期(每3个月)更换。
2. 业务/管理账号权限隔离
- 主库账号分类:
- 业务账号:仅授予
同步数据库库的SELECT/INSERT/UPDATE/DELETE权限,禁止DROP/ALTER等结构修改权限; - 管理账号:仅允许从公司内网IP访问,授予
同步数据库库的完整权限,且开启多因素认证(腾讯云MySQL支持)。
- 业务账号:仅授予
- 从库账号只读化:从库仅用于容灾和读查询,所有业务账号在从库仅授予
SELECT权限,禁止任何写操作(INSERT/UPDATE/DELETE/DROP):-- 从库业务账号授权(仅读) GRANT SELECT ON 同步用户名.* TO 'biz_user'@'业务服务器IP';
3. 禁用高危默认账号
- 主从库均删除/禁用
root@%、空用户名、test等默认账号:-- 删除无用默认账号 DROP USER IF EXISTS ''@'localhost'; DROP USER IF EXISTS 'root'@'%'; -- 仅保留root@localhost(本地管理) RENAME USER 'root'@'%' TO 'root'@'localhost'; - 定期执行
SELECT user, host FROM mysql.user;检查账号列表,清理非必要账号。
二、网络访问安全
1. 端口与IP白名单
- 主库3306端口限制:
- 腾讯云安全组:仅放行「群晖IP(从库)+ 业务服务器IP + 管理员内网IP」访问3306端口,拒绝所有其他IP;
- 宝塔防火墙:同步配置IP白名单,且禁止3306端口暴露到公网(若业务允许,可将主库3306端口改为非默认端口)。
- 从库网络隔离:群晖MariaDB仅允许内网/指定IP访问,若需公网访问,通过VPN/跳板机中转,禁止直接暴露3306端口。
2. 加密传输(必做)
主从复制的binlog传输和客户端访问均开启SSL/TLS加密,避免数据明文传输:
- 主库开启SSL:腾讯云MySQL默认开启SSL,需强制复制账号使用SSL连接:
-- 主库:强制同步用户名使用SSL ALTER USER '同步用户名'@'群晖IP' REQUIRE SSL; - 从库配置SSL复制:修改从库同步配置,指定SSL参数(群晖MariaDB需先开启SSL):
CHANGE MASTER TO MASTER_HOST='主库IP', MASTER_USER='同步用户名', MASTER_PASSWORD='密码', MASTER_SSL=1, -- 开启SSL加密 MASTER_SSL_CA='/path/to/ca.pem'; -- 腾讯云SSL证书路径
三、操作与配置安全
1. 禁止从库手动写操作
- 从库
my.cnf中配置read_only=1(超级用户仍可写),若需完全禁止所有写操作,配置super_read_only=1:[mysqld] read_only = 1 super_read_only = 1 # 禁止root等超级用户写操作 - 仅在主库执行数据修改操作,从库的同步仅依赖binlog,禁止手动修改从库
pcwnas库数据(避免主从不一致)。
2. 权限变更审计
- 主从库开启权限操作日志:主库(腾讯云MySQL)开启「审计日志」功能,记录所有
GRANT/REVOKE/ALTER USER等权限操作; - 定期(每周)检查权限变更记录,确认无未授权的权限调整:
-- 查看最近权限操作(主库) SELECT * FROM mysql.general_log WHERE argument LIKE '%GRANT%' OR argument LIKE '%ALTER USER%';
四、监控与应急
1. 权限异常监控
- 主库监控指标:配置告警规则,当出现「新账号创建、权限变更、3306端口异常访问」时,立即推送告警(腾讯云可配置短信/邮件告警);
- 从库同步监控:监控
Slave_IO_Running和Slave_SQL_Running状态,若变为No或出现权限相关错误,及时告警。
2. 应急处理
- 权限泄露:立即删除泄露的账号/重置密码,执行
FLUSH PRIVILEGES刷新权限,同时检查是否有异常数据操作; - 同步异常:若从库被恶意修改,暂停同步(
STOP SLAVE),从主库重新全量备份恢复从库,再重启同步。
总结
- 最小权限:复制账号仅授复制权限,从库账号仅授只读权限,禁止通配符IP和高危权限;
- 网络隔离:3306端口仅放行必要IP,所有传输开启SSL加密;
- 操作管控:从库强制只读,权限变更审计,禁用默认高危账号;
- 监控告警:覆盖权限变更、同步状态、端口访问,确保异常及时发现。
这些建议可直接落地到你的主从库配置中,既保障同步功能正常,又能大幅降低权限泄露、数据篡改的风险。
