一、ACL是什么?
Redis ACL(Access Control List)是用于管理 Redis 数据库访问权限的功能,它在 Redis 6.0 版本中引入。Redis ACL 允许你创建用户,并分配访问权限。
二、ACL如何设置
编辑 Redis 配置文件 redis.conf ,注释 requirepass ,直接配置 ACL 规则,或者建立独立文件 aclfile 放置 ACL 规则。
# requirepass foobared
# user default on nopass ~* &* +@all
aclfile "/etc/redis/users.acl"
三、ACL规则
user <username> on <password> +<command> -<command> +@<category> -@<category> ~<pattern>
规则是顺序加载并覆盖
- <username>:定义用户名
- on:启用该用户,off 为禁用。
- +<command> :允许执行特定命令。
- - <command> :禁止执行特定命令。
- +@<category>:添加该类别中的所有命令,有效类别为 @admin,@set ,@sortedset,…以此类推,通过调用 ACL CAT 命令查看完整列表。特殊类别 @all 表示所有命令,包括服务器中当前存在的命令,以及将来通过模块加载的命令。
- -@<category>:类似于+@<category>,但是禁用这些命令。
- ~<pattern>:定义用户可以访问的键。例如 ~* 可以访问所有键。
以下是一些示例 ACL 规则:
- 允许用户 myuser 执行 GET 命令,但不允许执行 SET 命令
user myuser on -set +get
- 允许用户 default 执行所有命令,但不能执行 dangerous 类的命令
user default on nopass ~* +@all -@dangerous
四、 ACL的重要命令
ACL HELP: 查看help文档。
AUTH: 登入或切换用户,用法如下:
auth <username> <password>
ACL SETUSER: 用于创建或修改用户并分配权限,用法如下:
ACL SETUSER username on >password +<command> -<command> +@<category> -@<category> ~<pattern>
#用户 link ,活跃状态 on ,密码 123456 ,允许对所有 sai 开头的 key 使用 get 和set 命令
ACL SETUSER link on >123456 ~sai* +get +set
ACL DELUSER: 用于删除用户,用法如下:
ACL DELUSER username
ACL LIST: 用于列出当前的 ACL 用户和规则。
ACL GETUSER: 用于获取特定用户的 ACL 规则。
ACL CAT: 查看命令类别。
ACL LOG: 用于查看 ACL 日志。
ACL SAVE: 将 ACL 配置动态保存到 ACLFILE 文件中。
ACL LOAD: 从 ACLFILE 文件中动态加载 ACL 配置。