Redis ACL 规则说明

Redis ACL 规则说明

  • 前情回顾
  • ACL 定义规范
    • 启用和禁用用户
    • 允许和禁止调用命令
    • 允许或禁止访问某些 Key
    • 为用户配置有效密码
  • ACL 命令说明

make great efforts

前情回顾

上一篇文章 我们整体性的介绍了 RedisACL,我们来回顾下 ACL 的两种配置方式。

redis 使用 acl 有两种方式可以配置,分别是 configaclfile 模式。在 config 配置文件中配置的 ACL 权限,需要执行 ACL LOAD 或者 重启 Redis 服务 才能生效,事实上我们可以直接在命令行下配置 ACL,在命令行模式下配置的权限无需重启服务即可生效。

我们也可以在命令行模式下配置 ACL 并将其持久化到 aclfile 或者 config 文件中(这取决于配置文件中选择的是 config模式 还是 外部 aclfile 模式),一旦将 user 权限持久化到 aclfileconfig 文件中,下次重启就会自动加载该权限,注意如果忘记持久化,一旦服务宕机或重启,该权限就会丢失。

# 如果使用 config 模式,将 ACL 权限持久化到 redis.conf 文件中使用下面的命令:
config rewrite# 如果使用 aclfile 模式,将 ACL 权限持久化到 users.acl 文件中使用下面的命令:
acl save

说明:redis acl 是 redis v 6.0 扩展的 Auth 机制,因此要使用 acl 功能,redis 服务必须是 6.0 及其以上版本(redis version ≥ 6.0)。

ACL 定义规范

ACL 是使用 DSL(Domain specific language) 定义的,该 DSL 描述了用户能够执行的操作。该规则始终 从上到下,从左到右应用,因为规则的顺序对于理解用户的实际权限很重要。

ACL 规则可以在 redis.conf 文件以及 users.acl 文件中配置 DSL,也可以在命令行中通过 ACL 命令配置

接下来的我们细说 ACL 的规则以及命令描述。

启用和禁用用户

  • on:启用用户:可以以该用户身份进行认证。
  • off:禁用用户:不再可以使用此用户进行身份验证,但是已经通过身份验证的连接仍然可以使用。

允许和禁止调用命令

  • +<command>:将命令添加到用户可以调用的命令列表中。
  • -<command>:将命令从用户可以调用的命令列表中移除。
  • +@<category>:允许用户调用 <category> 类别中的所有命令,有效类别为 @admin,- @set,@sortedset 等,可通过调用 ACL CAT 命令查看完整列表。特殊类别 @all 表示所有命令,包括当前和未来版本中存在的所有命令。
  • -@<category>:禁止用户调用 <category> 类别中的所有命令。
  • +<command>|subcommand:允许使用已禁用命令的特定子命令。
  • allcommands:+@all 的别名。包括当前存在的命令以及将来通过模块加载的所有命令。
  • nocommands:-@all 的别名,禁止调用所有命令。

允许或禁止访问某些 Key

  • ~<pattern>:添加可以在命令中提及的键模式。例如 ~**allkeys 允许所有键。
  • *resetkeys:使用当前模式覆盖所有允许的模式。如:~foo:* ~bar:* resetkeys ~objects:* ,客户端只能访问匹配 object:* 模式的 KEY

为用户配置有效密码

  • ><password>:将此密码添加到用户的有效密码列表中。例如,>mypass“mypass” 添加到有效密码(采用 sha256 加密保存)列表中。该命令会清除用户的 nopass 标记。每个用户可以有任意数量的有效密码。
  • <<password>:从有效密码列表中删除此密码。若该用户的有效密码列表中没有此密码则会返回错误信息。
  • #<hash>:将此 SHA-256 哈希值添加到用户的有效密码列表中。该哈希值将与为 ACL 用户输入的密码的哈希值进行比较。允许用户将哈希存储在 users.acl 文件中,而不是存储明文密码。仅接受 SHA-256 哈希值,因为密码哈希必须为 64 个字符且小写的十六进制字符。
  • !<hash>:从有效密码列表中删除该哈希值。当不知道哈希值对应的明文是什么时很有用。
  • nopass:移除该用户已设置的所有密码,并将该用户标记为 nopass 无密码状态:任何密码都可以登录。resetpass 命令可以清除 nopass 这种状态。
  • resetpass:情况该用户的所有密码列表。而且移除 nopass 状态。resetpass 之后用户没有关联的密码同时也无法使用无密码登录,因此 resetpass 之后必须添加密码或改为nopass 状态才能正常登录。
  • reset:重置用户状态为初始状态。执行以下操作 resetpass,resetkeys,off,-@all

ACL 命令说明

  • ACL HELP,查看 ACL 帮助信息:
alc help

在这里插入图片描述

  • ACL CAT,查看命令类别,用于授权:
# 显示所有的命令类别。
ACL CAT
# 显示所有指定类别下的所有命令。 
ACL CAT <category>
  • ACL DELUSER,删除指定的用户:
# 删除指定的用户
acl deluser <username>
  • ACL DRYRUN,返回用户是否可以在不执行给定命令的情况下执行该命令:
acl dryrun <username> command
  • ACL GETUSER,使用下面的命令查看用户的 ACL 权限:
# 查看用户的 ACL 权限
acl getuser <username>
  • ACL GENPASS,生成一个安全的 256 位用户密码。可选的“位”参数可用于指定不同的大小:
# 删除指定的用户
acl genpass <username>
  • ACL LIST,我们可以使用 ACL LIST 命令来查看当前活动的 ACL,默认情况下,有一个 “default” 用户:
127.0.0.1:6379> acl list
1) "user default on nopass ~* +@all"

其中 user 为关键词,default 为用户名,后面的内容为 ACL规则 描述,on 表示活跃的,nopass 表示无密码, ~* 表示所有key,+@all 表示所有命令。

所以上面的命令表示活跃用户 default 无密码且可以访问所有命令以及所有数据。

  • ACL SETUSER,使用下面的命令创建或修改用户属性,username 区分大小写:
#username区分大小写
#若用户不存在则按默认规则创建用户,若存在则修改用户属性
SETUSER <username> [attribs ...]#若用户不存在,则按默认规则创建用户。若用户存在则该命令不做任何操作。
ACL SETUSER <username> #若用户不存在,则按默认规则创建用户,并为其增加<rules>。若用户存在则在已有规则上增加 <rules>。
ACL SETUSER <username> <rules> 
  • ACL USERS,返回所有用户名:
acl users
  • ACL WHOAMI,返回当前用户名:
acl whoami
  • ACL LOAD,我们也可以直接在 aclfile 中修改或新增 ACL 权限,修改之后不会立刻生效,我们可以在 redis 命令行中执行 acl load 将该 aclfile 中的权限加载至 redis 服务中:
# 将 aclfile 中的权限加载至 redis 服务中,是配置生效
acl load
  • ACL LOG,查看 ACL 安全日志:
acl log
  • ACL SAVE,前面提到过,我们可以使用 acl save 命令将当前服务器中的 ACL 权限持久化到 aclfile 中,如果没持久化就关闭 redis 服务,那些 ACL 权限就会丢失,因此我们每次授权之后一定要记得 ACL SAVEACL 权限持久化到 aclfile 中:
# 将 acl 权限持久化到磁盘的 aclfile 中
acl save# 如果使用 redis.conf 配置 ACL,则使用 config rewrite 命令将 ACL 持久化到 redis.conf 中
config rewrite
  • AUTH,使用 auth 命令切换用户:
AUTH <username> <password>

以上就是关于 Redis ACL 命令的详细说明,你 “学废” 了么?

“只有每天不断学习,才能成长为更好的自己。” – 巨石强森(Dwayne Johnson)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/197564.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用centos搭建内网的yum源

1.安装httpd服务 2.启动服务&#xff0c;设置开机自启 #启动服务 systemctl start httpd # 设置开机自动启动 systemctl enable httpd systemctl status httpd3.新建一个目录&#xff0c;将rpm文件放到该目录下 4.将/etc/httpd/conf/httpd.conf文件中的DocumentRoot "…

拼多多官方开放平台接口app商品详情接口获取实时商品详情数据演示

拼多多开放平台提供了一种名为“商品详情接口”的API接口&#xff0c;它允许卖家从自己的系统中快速获取商品信息&#xff0c;如商品标题、描述、价格、库存等&#xff0c;并将这些信息展示在自己的店铺中。通过该接口&#xff0c;卖家可以更好地管理自己的商品库存和销售&…

MR素数测试及 pycryptodome库下 已知MR伪素数以及强伪证 生成指定伪随机数生成器绕过素性检测

MR素数测试在密码学库中应用广泛&#xff0c;通常作为BSPW的一部分来进行素数测试&#xff0c;由于在其算法中&#xff0c;有随机数的使用&#xff08;选择一个随机的base&#xff09;&#xff0c;若一个MR伪素数 n n n&#xff0c;已知其在某一个强伪证 a a a&#xff08;随机…

人脸识别相关代码

人脸识别相关代码 这个是网上别人做的视频的学习地址&#xff1a; https://www.bilibili.com/video/BV1zc41197BA/?p8&vd_sourcee9167c654bb4523338a765358a8ac2af 手敲了一遍&#xff1a; 总结 我只能说自己训练的人脸效果实在是不好&#xff0c;还是没搞懂为啥别人的…

Universal adversarial perturbations(2017 CVPR)

Universal adversarial perturbations----《普遍对抗扰动》 通俗UAP算法步骤理解&#xff1a;对于 x i ∈ X {x_i} \in X xi​∈X 的每个采样数据点&#xff0c;比较 k ^ ( x i v ) \hat k({x_i} v) k^(xi​v) 与 k ^ ( x i ) \hat k({x_i}) k^(xi​) &#xff0c;如果 k…

深入浅出讲解python闭包

一、定义 在 Python 中&#xff0c;当一个函数内部定义的函数引用了外部函数的局部变量时&#xff0c;就形成了一个闭包。这个内部函数可以访问并修改外部函数的局部变量&#xff0c;而这些局部变量的状态会一直被保存在闭包中&#xff0c;即使外部函数已经执行完毕。 这种机…

苹果签名应用掉签频繁原因排查,以及如何避免

作为一个对iOS生态有着深厚理解的实用技术博主&#xff0c;我明白苹果签名应用掉签对我们的开发和使用带来的困扰。签名在苹果设备中扮演着至关重要的角色&#xff0c;它不仅确保了应用来源的合法性&#xff0c;也影响着应用的顺畅运行。 今天&#xff0c;我将和您一同探讨苹果…

如何使用$APPEALS法,分析用户期待?

$APPEALS分析法是一种用于分析用户期待和需求的方法&#xff0c;它可以帮助企业全方位多角度地了解客户对产品的期望&#xff0c;有助于企业多维度有侧重地调整市场规划和产品改进策略&#xff0c;帮助企业打造优势产品&#xff0c;提高市场竞争力。 下面是使用$APPEALS分析法来…

运动耳机什么牌子好?十大运动蓝牙耳机品牌排行榜

​运动耳机需求各有不同&#xff0c;对于我们每个人来说&#xff0c;选择最适合自己的耳机是一项重要任务。在这个耳机类型繁多&#xff0c;五花八门的时代&#xff0c;如何找到一款适合自己的运动耳机呢&#xff1f;选对运动耳机很重要&#xff0c;所以接下来安利五款相当不错…

实时监控电脑屏幕的软件丨同时查看12台电脑屏幕

Hello 大家好 又见面啦 今天给大家推荐两款比较实用的监控电脑使用情况、屏幕的软件&#xff01; 软件一 实时性能监控 从软件名就可以看出来&#xff0c;这是一款电脑性能监测工具。它可以实时监测内存、CPU、磁盘占用情况&#xff0c;也能一键结束进程&#xff0c;给电脑提…

8 Redis与Lua

LUA脚本语言是C开发的&#xff0c;类似存储过程,是为了实现完整的原子性操作&#xff0c;可以用来补充redis弱事务的缺点. 1、LUA脚本的好处 2、Lua脚本限流实战 支持分布式 import org.springframework.core.io.ClassPathResource; import org.springframework.data.redis…

[一周AI简讯]OpenAI宫斗;微软Bing Chat更名Copilot;Youtube测试音乐AI

OpenAI宫斗&#xff0c;奥特曼被解雇&#xff0c;董事会内讧 Sam Altman被解雇&#xff0c;不再担任CEO&#xff0c;董事会的理由是奥特曼在与董事会的沟通中始终不坦诚&#xff0c;阻碍了董事会履行职责的能力。原首席技术官Mira Murati担任新CEO。OpenAI宫斗剧远未结束&…