总结:整理不易,如果对你有帮助,可否点赞关注一下?
更多详细内容请参考:Linux运维实战总结
一、背景说明
1、Redis开启ACL是提升数据库安全性的关键措施,尤其是在生产环境中。核心原因:Redis 默认“裸奔”,极其不安全。
1、无用户概念:所有客户端连接都拥有“超级管理员”权限。
2、无密码保护(除非配置了 requirepass,但这只是简单密码,不支持多用户)。
3、任意客户端可执行任何命令:包括 FLUSHALL、CONFIG SET、SHUTDOWN 等危险操作。
2、开启 ACL 后,你可以:
1、创建多个用户
2、为每个用户分配不同的权限(能访问哪些 key、能执行哪些命令)
3、实现最小权限原则
3、开启ACL的五大核心价值
价值 | 说明 |
---|---|
权限隔离 |
不同应用、服务使用不同用户,避免越权操作 |
最小权限原则 |
用户只能访问必要的 key 和命令,降低误操作或攻击影响 |
审计追踪 |
日志中记录是哪个用户执行了命令,便于安全事件溯源 |
多租户支持 |
一个 Redis 实例服务多个应用/团队,互不干扰 |
符合安全合规 |
满足等保、GDPR、PCI-DSS 等安全审计要求 |
三、配置ACL
说明:这里以哨兵节点为例,这里为了方便就只配置了一个管理用户lolage,具有拥有所有权限。
节点类型 | 是否需要 ACL | 配置项 | 说明 |
---|---|---|---|
主节点(Master) |
必须 |
aclfile, users.acl |
定义所有用户(admin、app、repl、sentinel) |
从节点(Replica) |
不需要客户端 ACL,但需配置主节点认证 |
masteruser, masterauth |
用于连接主节点复制数据 |
哨兵节点(Sentinel) |
必须配置主从节点的 ACL 凭据 |
sentinel auth-user, sentinel auth-pass |
用于监控和故障转移 |
1、master节点配置
# 1、修改redis master节点配置文件
# redis主节点上正确配置ACL(Access Control List),就完全不需要再使用 requirepass
# requirepass 123456
aclfile /opt/redis/conf/user.acl
# 创建user.acl文件
vim /opt/redis/conf/user.acl
user default off
user lolaage on >NX1wsMnTWVHHYbFy +@all ~* &* allkeys
2、salve节点配置
masterauth NX1wsMnTWVHHYbFy
masteruser lolaage
3、sentinel节点配置
sentinel auth-pass mymaster NX1wsMnTWVHHYbFy
sentinel auth-user mymaster lolaage