DBAtlas · 数据库运维图谱

创建 ACL 用户、测试权限并使其持久化

Redis安全

命令

# Application user: only app:* keys and channels, dangerous commands excluded:
ACL SETUSER app_rw on >S3cret-Change ~app:* resetchannels &app:* +@read +@write -@dangerous
# Monitoring user: no key access, only specific commands:
ACL SETUSER monitor on >M0n-Secret resetkeys resetchannels -@all +info +ping +client|list +slowlog|get +latency +config|get
# Test permissions without running the command:
ACL DRYRUN app_rw GET app:1001
ACL GETUSER app_rw
ACL LIST
# Make it persistent: ACL SAVE if aclfile is set, otherwise CONFIG REWRITE into redis.conf
ACL SAVE

作用

创建按 key 前缀、pub/sub 频道和命令类别授权的应用和监控用户;用 DRYRUN 在不执行命令的情况下测试命令是否被允许,并将 ACL 写入磁盘。

适用场景

从单一共享密码(requirepass)迁移到按用户访问、隔离各应用的 key,或为监控工具创建只读账户时。

注意

规则顺序很重要:resetchannels 会删除在它之前给出的所有 &channel 规则。-@dangerous 也会阻止 KEYS、FLUSHALL、CONFIG 和 DEBUG 等命令;用 DRYRUN 验证应用使用的命令。若 default 用户以 nopass 和 +@all 保持启用,ACL 就起不到保护作用;创建管理员用户后运行 ACL SETUSER default off。在 redis-cli 中,若使用 --user/--pass 的 AUTH 失败,连接会以 default 用户继续,命令照样执行;因此权限测试请使用 DRYRUN。

在 DBAtlas 中打开 →

相关内容