Redis 6.0 新增功能 - ACL
Redis 6.0 ACL
期待已久的ACL终于来了,大家知道在redis集群中只有一个db,在多项目操作时可以通过key前缀来区分,但是还是能获取其它key,这样就带来了安全风险.
Access Control Lists ACL
在之前 登录可以AUTH pwd 有了ACL后AUTH user pwd
ACL LIST
我们可以使用 ACL LIST 命令来检查当前活动的 ACL
> ACL LIST
1) "user default on nopass ~* +@all"
user 代表是用户
default 代表默认用户(反之 为自己创建的用户)
on 代表激活(反之off,默认新增的为off)
nopass 代表不需要密码
~* 代表可以访问的key
+@all 代表可以操作的command
key
~<pattern> ~* 所有key
allkeys 别名 ~*
resetkeys 刷新允许的键模式列表
可以多个一起使用,如:
~foo:* ~bar:* resetkeys ~objects:*
只能访问 ~objects:*
command
+<command> 添加命令
-<command> 移除命令
+@<category> 添加一类命令,如:@admin, @set, @sortedset, ... 可以ACL CAT 查看
如:+@geo -@readonly 会排除geo的只读命令
-@<category> 移除一类命令
+<command>|subcommand 允许一个特定的子命令,没有-<command>|subcommand
allcommands 所有cmd 别名 +@all
nocommands 别名 -@all
配置密码
>pwd 添加密码列表
<pwd 移除密码列表
#hash 添加SHA-256值
!hash 移除SHA-256值
nopass 移除所有密码
resetpass 刷新密码列表,并且也不会回到nopass 状态,之后一定要添加密码
没有使用nopass标记的用户并且没有有效密码列表 是不能登录的
reset 重置用户 实际上是执行 resetpass, resetkeys, off, -@all
另外,在默认用户的特殊情况下,拥有 nopass 规则意味着新的连接将通过默认用户的自动身份验证,而不需要任何显式的 AUTH 调用。
ACL CAT
第一大类
127.0.0.1:0>ACL CAT
1) "keyspace"
2) "read"
3) "write"
4) "set"
5) "sortedset"
6) "list"
7) "hash"
8) "string"
9) "bitmap"
10) "hyperloglog"
11) "geo"
12) "stream"
13) "pubsub"
14) "admin"
15) "fast"
16) "slow"
17) "blocking"
18) "dangerous"
19) "connection"
20) "transaction"
21) "scripting"
127.0.0.1:0>ACL CAT set
1) "spop"
2) "sunionstore"
3) "sinter"
4) "sdiffstore"
5) "sscan"
6) "sunion"
7) "smembers"
8) "sinterstore"
9) "sismember"
10) "smove"
11) "srem"
12) "sdiff"
13) "srandmember"
14) "sort"
15) "sadd"
16) "scard"
ACL SETUSER
添加用户 - 区分大小写
ACL SETUSER alice
检查一下默认的用户状态:
> ACL LIST
1) "user alice off -@all"
2) "user default on nopass ~* +@all"
设置密码
ACL SETUSER alice on >p1pp0 ~cached:* +get
> AUTH alice p1pp0
OK
> GET foo
(error) NOPERM this user has no permissions to access one of the keys used as arguments
> GET cached:1234
(nil)
> SET cached:1234 zap
(error) NOPERM this user has no permissions to run the 'set' command or its subcommnad
查看单独用户
打开一个新的连接
> ACL GETUSER alice
1) "flags"
2) 1) "on"
3) "passwords"
4) 1) "2d9c75..."
5) "commands"
6) "-@all +get"
7) "keys"
8) 1) "cached:*"
返回 field-value 数组
如果使用RESP3
> ACL GETUSER alice
1# "flags" => 1~ "on"
2# "passwords" => 1) "2d9c75..."
3# "commands" => "-@all +get"
4# "keys" => 1) "cached:*"
新增权限
ACL SETUSER alice ~objects:* ~items:* ~public:*
> ACL LIST
1) "user alice on #2d9c75... ~cached:* ~objects:* ~items:* ~public:* -@all +get"
2) "user default on nopass ~* +@all"
ACL SETUSER alice +set
ACL SETUSER alice +get
> ACL LIST
1) "user alice on #2d9c75... ~cached:* ~objects:* ~items:* ~public:* -@all +get +set"
2) "user default on nopass ~* +@all"
其它
ACL GENPASS
生成随机数、密码
redis.conf
配置文件中可以保存用户信息
如: user worker +@list +@connection ~jobs:* on >ffa9203c493aa99
也可以指定外部acl文件信息
如:aclfile /etc/redis/users.acl
ACL LOAD 重置加载acl文件(如果你修改了acl文件)
ACL SAVE 保存acl文件
哨兵和副本
略...
Redis 6.0 新增功能 - ACL的更多相关文章
- Redis 7.0 新功能新特性总览
说明:本文根据Redis 7 RC2 的release note 整理并翻译 近日,Redis 开源社区发布了7.0的两个预览版.在这两个预览版中,有很多Redis 7.0中新增加的特性,新增加的命令 ...
- Redis 4.0新功能介绍
Redis 的作者 antirez 在三天之前通过博客文章<The first release candidate of Redis 4.0 is out>发布了 Redis 4.0 的第 ...
- Redis 6.0 新特性 ACL 介绍
Redis 6.0 新特性 ACL 介绍 Intro 在 Redis 6.0 中引入了 ACL(Access Control List) 的支持,在此前的版本中 Redis 中是没有用户的概念的,其实 ...
- C#基础拾遗系列之二:使用ILSpy探索C#7.0新增功能点
C#基础拾遗系列之二:使用ILSpy探索C#7.0新增功能点 第一部分: C#是一种通用的,类型安全的,面向对象的编程语言.有如下特点: (1)面向对象:c# 是面向对象的范例的一个丰富实现, 它 ...
- C#2.0新增功能06 协变和逆变
连载目录 [已更新最新开发文章,点击查看详细] 在 C# 中,协变和逆变能够实现数组类型.委托类型和泛型类型参数的隐式引用转换. 协变保留分配兼容性,逆变则与之相反. 以下代码演示分配兼容性.协 ...
- Redis 5.0新功能介绍
Redis 5.0 Redis5.0版是Redis产品的重大版本发布,我们先看一下它的最新特点: 新的流数据类型(Stream data type) https://redis.io/topics/s ...
- Redis 6.0 访问控制列表ACL说明
背景 在Redis6.0之前的版本中,登陆Redis Server只需要输入密码(前提配置了密码 requirepass )即可,不需要输入用户名,而且密码也是明文配置到配置文件中,安全性不高.并且应 ...
- C#基础拾遗系列之二:C#7.0新增功能点
第一部分: C#是一种通用的,类型安全的,面向对象的编程语言.有如下特点: (1)面向对象:c# 是面向对象的范例的一个丰富实现, 它包括封装.继承和多态性.C#面向对象的行为包括: 统一的类型系统 ...
- C#7.0新增功能点
原文地址: https://www.cnblogs.com/runningsmallguo/p/8972678.html 第二部分:C#7.0新增的功能 (1)数字字面量的提升: C#7中的数字文字 ...
随机推荐
- HTML笔记03------cookie
新浪布局 初始布局代码: div.header+(div.container>(div.left+div.right))+div.footer ---------- .header{height ...
- 非对称加密算法RSA 学习
非对称加密算法RSA 学习 RSA加密算法是一种非对称加密算法.RSA是1977年由罗纳德·李维斯特(Ron Rivest).阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Ad ...
- JAVA 中的反射(reflact)
获取反射加载类(获取类的字节码)的3种方式: Class class1=Class.forName("lession_svc.lession_svc.reflact.Person" ...
- 什么是Activiti
什么是Activiti Activiti属于工作流引擎的一个开源实现.Activiti由Tom Bayen发起.在2010年5月发布了第一个版本.命名也很有意思的采取了Activities(活动)的化 ...
- 组件化思路:以selection为例子,使用prop-types实现组件化控制,重用
需求 书接上文,UI 积累之select section 这里又来两个需求了. 当我点击选择了option后,我应该看到的是我选择的option的内容 多例重用,即同样是个selection,我只是需 ...
- HTTP协议详解(深入理解)
版权声明:本文为CSDN博主「有抱负的小狮子」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明.原文链接:https://blog.csdn.net/weixin_ ...
- AJAX 的 Ajax返回数据之前的loading等待效果(gif效果等)
首先,我们通过ajax请求,向后台传递参数,然后后台经过一系列的运算之后向前台返还数据,我希望在等待数据成功返还之前可以展示一个loading.gif图 不废话,在页面上执行点击事件(<a sc ...
- 使用 Redis 如何实现查询附近的人?「视频版」——面试突击 003 期
面试问题 Redis 如何实现查询附近的人? 涉及知识点 Redis 中如何操作位置信息? GEO 底层是如何实现的? 如何在程序实现查询附近的人? 在实际使用中需要注意哪些问题? 视频答案 视频地址 ...
- Yuchuan_Linux_C编程之五gdb调试
一.整体大纲 二.gdb调试 1. 启动gdb start -- 只执行一步 n -- next s -- step(单步) -- 可以进入到函数体内部 c - continue - ...
- 基于springboot1.5.9整合shiro时出现静态文件找不到的问题
开门见山吧,上午对shiro进行整合了下,因为之前使用ssm框架对shiro框架整合过,所以觉得使用springboot再次对shiro框架进行整合也是没啥问题,但最后整合完之后,使用thymelea ...