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的更多相关文章

  1. Redis 7.0 新功能新特性总览

    说明:本文根据Redis 7 RC2 的release note 整理并翻译 近日,Redis 开源社区发布了7.0的两个预览版.在这两个预览版中,有很多Redis 7.0中新增加的特性,新增加的命令 ...

  2. Redis 4.0新功能介绍

    Redis 的作者 antirez 在三天之前通过博客文章<The first release candidate of Redis 4.0 is out>发布了 Redis 4.0 的第 ...

  3. Redis 6.0 新特性 ACL 介绍

    Redis 6.0 新特性 ACL 介绍 Intro 在 Redis 6.0 中引入了 ACL(Access Control List) 的支持,在此前的版本中 Redis 中是没有用户的概念的,其实 ...

  4. C#基础拾遗系列之二:使用ILSpy探索C#7.0新增功能点

    C#基础拾遗系列之二:使用ILSpy探索C#7.0新增功能点   第一部分: C#是一种通用的,类型安全的,面向对象的编程语言.有如下特点: (1)面向对象:c# 是面向对象的范例的一个丰富实现, 它 ...

  5. C#2.0新增功能06 协变和逆变

    连载目录    [已更新最新开发文章,点击查看详细] 在 C# 中,协变和逆变能够实现数组类型.委托类型和泛型类型参数的隐式引用转换. 协变保留分配兼容性,逆变则与之相反. 以下代码演示分配兼容性.协 ...

  6. Redis 5.0新功能介绍

    Redis 5.0 Redis5.0版是Redis产品的重大版本发布,我们先看一下它的最新特点: 新的流数据类型(Stream data type) https://redis.io/topics/s ...

  7. Redis 6.0 访问控制列表ACL说明

    背景 在Redis6.0之前的版本中,登陆Redis Server只需要输入密码(前提配置了密码 requirepass )即可,不需要输入用户名,而且密码也是明文配置到配置文件中,安全性不高.并且应 ...

  8. C#基础拾遗系列之二:C#7.0新增功能点

    第一部分: C#是一种通用的,类型安全的,面向对象的编程语言.有如下特点: (1)面向对象:c# 是面向对象的范例的一个丰富实现, 它包括封装.继承和多态性.C#面向对象的行为包括: 统一的类型系统 ...

  9. C#7.0新增功能点

    原文地址:  https://www.cnblogs.com/runningsmallguo/p/8972678.html 第二部分:C#7.0新增的功能 (1)数字字面量的提升: C#7中的数字文字 ...

随机推荐

  1. api安全规范

    1. API签名的目的 校验API调用者的身份,是否有权访问    校验请求的数据完整性,防止被中间人篡改    防止重放攻击 2.基本概念 AccessKey: API使用者向API提供方申请的Ac ...

  2. C++走向远洋——65(十五周、项目一)

    */ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhe ...

  3. C#开发BIMFACE系列30 服务端API之模型对比1:发起模型对比

    系列目录     [已更新最新开发文章,点击查看详细] 在实际项目中,由于需求变更经常需要对模型文件进行修改.为了便于用户了解模型在修改前后发生的变化,BIMFACE提供了模型在线对比功能,可以利用在 ...

  4. hw从外网到内网的渗透姿势分享

    现在这段时间是全员 hw 时期,刚好前几天也有幸参与了某个地方的 hw 行动,作为攻击方,这里就简单总结一下最近挖洞的思路吧.因为可能怕涉及到敏感的东西,这里就有的地方不会细说了. 因为本人比较菜,所 ...

  5. 小技巧(一):将文本文件txt或网页快捷方式固定到win10开始菜单

    win10不知道怎么回事不支持将文本文件和网页快捷方式固定到开始菜单 解决方法: 利用cmd 创建一个快捷方式: 路径:cmd /A /C  C:\Users\Admin\Desktop\test.t ...

  6. celery异步任务框架

    目录 Celery 一.官方 二.Celery异步任务框架 Celery架构图 消息中间件 任务执行单元 任务结果存储 三.使用场景 四.Celery的安装配置 五.两种celery任务结构:提倡用包 ...

  7. 探索 Redux4.0 版本迭代 论基础谈展望(对比 React context)

    Redux 在几天前(2018.04.18)发布了新版本,6 commits 被合入 master.从诞生起,到如今 4.0 版本,Redux 保持了使用层面的平滑过渡.同时前不久, React 也从 ...

  8. Java原来还可以这么学:如何搞定面试中必考的集合类

    原创声明 本文作者:黄小斜 转载请务必在文章开头注明出处和作者. 系列文章介绍 本文是<五分钟学Java>系列文章的一篇 本系列文章主要围绕Java程序员必须掌握的核心技能,结合我个人三年 ...

  9. Oracle 11g rac中关于crsctl stop cluster/crs/has的区别

    转载至http://www.oracleplus.net/arch/1203.html,整理后得. 1 通过命令查看cluster/has/crs管理的内容 [root@11rac1 ~]# crsc ...

  10. scrapy 执行同个项目多个爬虫

    一开始我们默认都是只有一个爬虫的,所以执行的代码都是在项目下创建一个py文件 from scrapy import cmdline cmdline.execute('scrapy crawl 爬虫名' ...