0
点赞
收藏
分享

微信扫一扫

redis 16 ACL (对用户进行细粒度的权限控制)

一ke大白菜 2022-04-13 阅读 42
redis

文章目录


1.1 简介:

  Redis ACL是Access Control List(访问控制列表)的缩写,该功能允许根据可以执行的命令和可以访问的键来限制某些连接。
  在Redis 5版本之前,Redis 安全规则只有密码控制 还有通过rename 来调整高危命令比如 flushdb , KEYS * , shutdown 等。Redis 6 则提供ACL的功能对用户进行更细粒度的权限控制 :
(1)接入权限:用户名和密码
(2)可以执行的命令
(3)可以操作的 KEY

1.2 命令

1、使用acl list命令展现用户权限列表

acl list

在这里插入图片描述
2、使用acl cat命令
(1)查看添加权限指令类别
在这里插入图片描述

(2)加参数类型名可以查看类型下具体命令
在这里插入图片描述

3、使用acl whoami命令查看当前用户
在这里插入图片描述
4、使用aclsetuser命令创建和编辑用户ACL
(1)ACL规则
启动或禁用用户

on  启用
off  禁用

启用或禁用命令

+<command><command> 命令添加到用户可调用的命令列表中
-<command>  从可调用的命令列表中移除 <command> 命令
+@<category>  允许用户调用 <category> 分类中的所有命令(可通过 ACL CAT 命令查看完成分类列表)
-@<category>  禁止用户调用 <category> 分类中的所有命令
+<command>|subcommand  允许使用原本禁用的特定类别下的特定子命令
+@all  允许调用所有命令,与使用 allcommands 效果相同。包括当前存在的命令以及将来通过模块加载的命令
-@all  禁止调用所有命令

允许或禁止访问某些 KEY

~<pattern> 添加符合条件的模式。如:  ~* 允许所有 KEY,使用 ~* 与 allkeys 效果相同 
resetkeys 使用当前模式覆盖所有允许的模式。如: ~foo:* ~bar:*  resetkeys ~objects:* ,最终客户端只允许访问匹配 ~object:* 模式的 KEY

为用户配置有效密码

><password>  将密码添加到用户有效密码列表中。例如:>mypass 将会把 mypass 添加到用户的密码列表中。该操作会清除用户的 nopass 标记。每个用户可由拥有多个有效密码
<<password>  将密码从用户有效密码列表中移除。列表中不存在改密码时,会报错。
#<hash>  将此 SHA-256 哈希值添加到用户的有效密码列表中。该哈希值将与 ACL 用户输入的密码的哈希值进行比较。这将允许用户将此哈希值存储在 acl 配置文件中,而不是存储明文密码。仅接受 SHA-256 哈希值,因为密码的哈希必须由 64 个字符长度的小写的十六进制字符组成。
!<hash>  从有效密码列表中删除该哈希值。(适用于不知道哈希值指定的密码但又想从用户中删除密码的情况)
nopass  删除用户所有密码,并将该用户标记为不需要密码。如果此指令引用于 default 用户,则每个新的连接都将立即通过 default 用户进行连接,而无需任何显示的 AUTH 命令。
resetpass  清除用户可用密码列表的数据,并清除 nopass 状态。之后该用户将没有任何关联的有效密码,将不允许登录,直到为该用户设置了有效密码或将用户设置成 nopass 状态
reset  重置用户到初始状态。该命令会执行以下操作:resetpass,resetkeys,off,-@ all。

(2)通过命令创建新用户默认权限

acl setuser user1

没有指定任何规则。如果用户不存在,这将使用just created的默认属性来创建用户。如果用户已经存在,则上面的命令将不执行任何操作。

在这里插入图片描述
(3)设置有用户名、密码、ACL权限、并启用的用户

acl setuser user1 on >password ~cached:* +get

在这里插入图片描述
(4)切换用户,验证权限
在这里插入图片描述

举报

相关推荐

0 条评论