首页/数据/数据库速查/ACL 账号与权限(6.0+)
Redis 运维与场景124 条

ACL 账号与权限(6.0+)

ACL 支持多用户与命令/键模式级授权:ACL SETUSER 创建账号,ACL LIST/WHOAMI 查看,ACL LOG 审计被拒操作。

数据库速查数据更新于 2026-10-13

ACL 解决权限粒度问题

Redis 6.0 之前只有单一密码,连上就是全权限,任何一次泄露都等于整个实例失控。ACL 引入多用户模型:每个账号可以单独设置密码、允许执行的命令或命令类别、以及可访问的键前缀。权限从「全通或不通」变成可裁剪的集合,出问题也能快速定位到具体账号。

基本信息

适用平台Redis 6.0+;5.x 及以下只有 requirepass
常用命令ACL SETUSER、ACL LIST、ACL WHOAMI、ACL LOG、ACL SAVE
规则要素on/off、密码、~键模式、+命令/-命令、+@类别/-@类别
持久化ACL SAVE 写入 aclfile 指定的文件
审计ACL LOG 记录被拒绝的调用

典型使用场景

  • 不同业务使用不同账号,按键前缀隔离数据范围
  • 只读账号:仅授予读命令类别并禁止危险命令
  • 排查权限问题:用 ACL LOG 看最近被拒绝的操作
  • 禁用高危命令:对不执行管理操作的应用账号屏蔽管理类命令
  • 多租户场景下给每个租户分配独立的键前缀

创建与查看账号

创建与查看账号
# 只允许访问 cache: 前缀的读写与过期设置
ACL SETUSER app_user on >密码 ~cache:* +get +set +expire
# 只读账号:开放读类别并禁止危险命令
ACL SETUSER readonly_user on >密码 ~* +@read -@dangerous
# 查看当前账号与被拒日志
ACL WHOAMI
ACL LIST
ACL LOG 5
# 持久化账号配置,否则重启后丢失
ACL SAVE

规则语法速查

规则含义注意
on / off启用或禁用账号新建账号默认禁用
>password设置密码(<password 移除)明文会出现在命令历史中
~pattern允许访问的键模式* 表示全部键
+command / -command允许或禁止单个命令命令名用小写更直观
+@read / -@dangerous按命令类别授权类别覆盖范围较粗,需核对
resetkeys / resetcommands清空已配置的键与命令规则调整规则时常用
ACL 的收益在于最小权限:按业务分配键前缀与命令子集后,一次凭证泄露的影响面被限制在很小的范围内,排查时也能直接定位到账号。
ACL 规则调整后必须执行 ACL SAVE 写入配置文件,否则实例重启时新账号与规则全部丢失,回退到旧的权限状态。

易错点

  • 规则收得过紧:上线后业务命令被拒,需要用 ACL LOG 先验证再逐步收紧
  • 配好账号却忘记 ACL SAVE:重启后账号消失,业务连接被拒
  • 给应用账号开放全部键模式:ACL 只相当于加了密码,隔离意义大打折扣
  • 把默认账号仍然保留为全权限:保留一个万能后门,ACL 的收益被大幅削弱

数据来源与参考

  • Redis 官方文档: ACL
  • Redis 官方文档: ACL SETUSER

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌