第32章:安全与访问控制
本章目标
配置密码、ACL、禁用危险命令
32.1 基础安全配置
bash
# redis.conf
bind 127.0.0.1 192.168.1.100 # 绑定内网IP,不暴露公网
requirepass "strong-password" # 连接密码
protected-mode yes # 无密码时仅本地连接
rename-command FLUSHALL "" # 禁用危险命令
rename-command KEYS "" # 禁用 KEYS32.2 ACL(Redis 6.0+)
bash
# 查看用户
ACL LIST
# 创建只读用户
ACL SETUSER readonly ON >password ~* +@read
# 创建受限用户(只能操作特定前缀)
ACL SETUSER appuser ON >password ~cache:* +@all
# 删除用户
ACL DELUSER readonly
# 查看用户权限
ACL GETUSER readonly
# 保存到配置文件
ACL SAVEACL 规则
| 规则 | 含义 |
|---|---|
ON/OFF | 启用/禁用 |
>password | 设置密码 |
~pattern | Key 匹配模式 |
+@read | 允许读命令集 |
+@all | 允许所有命令 |
-@dangerous | 禁止危险命令 |
-FLUSHALL | 禁止特定命令 |
nopass | 无密码 |
32.3 安全清单
- [ ]
requirepass设强密码 - [ ]
bind绑定内网 IP - [ ]
rename-command禁用 FLUSHALL/FLUSHDB/KEYS/CONFIG - [ ] ACL 限制用户权限
- [ ] 不暴露公网(防火墙/安全组)
- [ ] 定期升级 Redis 版本
- [ ] 开启 protected-mode
本章小结
- requirepass + bind + rename-command 三道防线
- ACL 精确控制用户权限(6.0+)
- 不要暴露到公网(很多 Redis 被黑挖矿)
练习题
- 设连接密码并验证。
- 创建只读用户和受限用户。
- 用 rename-command 禁用 FLUSHALL。