redis6新特性ACL(基于外部ACLFILE模式 )

redis6新出特性ACL(access control list 访问控制列表),类似MySQL中的用户授权特性,本篇ACL特性是基于外部aclfile模式,安装过程简单,docker或者编译安装亦可,以下是目前比较稳定的redis6下载地址。
https://download.redis.io/releases/redis-6.2.1.tar.gz
1、修改配置文件,开启alcfile

vim redis.conf
868 #aclfile /etc/redis/users.acl   #去掉前面的注释即可

如下:
开启aclfile

说明:配置文件中有这样的解释:The requirepass is not compatable with aclfile option and the ACL LOAD command, these will cause requirepass to be ignored
意思就是requirepass与aclfile选项和ACL LOAD命令不兼容,密码认证失效,所以默认用户登录不需要认证的。

2、创建文件目录及文件
文件是需要存在的,我们新建空白文件即可:

mkdir /etc/redis
cd /etc/redis
touch users.acl

3、命令详解
1、acl list 查看当前的acl

127.0.0.1:6379> ACL LIST
1) "user default on nopass ~* &* +@all"

在这里插入图片描述

说明:其中user表示关键词用户,default表示用户名,on表示用户状态,nopass表示无密码, ~* 表示匹配所有key,+@all表示所有权限

2、acl users 查看所有用户名

127.0.0.1:6379> ACL USERS
1) "default"

在这里插入图片描述
3、acl whoami 查看当前用户

127.0.0.1:6379> ACL WHOAMI
"default"

在这里插入图片描述
4、acl cat 返回命令类别

127.0.0.1:6379> 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"

命令类别
5、acl cat <category> 返回命令类别下的所有命令,以set为例

127.0.0.1:6379> ACL CAT set
 1) "sdiffstore"
 2) "sismember"
 3) "scard"
 4) "sadd"
 5) "smembers"
 6) "sinter"
 7) "sdiff"
 8) "spop"
 9) "sinterstore"
10) "smove"
11) "sunion"
12) "sscan"
13) "srandmember"
14) "smismember"
15) "sort"
16) "srem"
17) "sunionstore"

命令类别下的命令
6、acl setuser 创建用户,若用户已存在,即为修改用户属性

127.0.0.1:6379> ACL SETUSER mike
OK
127.0.0.1:6379> ACL SETUSER Mike
OK
127.0.0.1:6379> ACL USERS
1) "Mike"
2) "default"
3) "mike"

在这里插入图片描述

说明:
ACL SETUSER <username> 
用户不存在,则按默认规则创建用户。若用户存在则该命令不做任何操作。
ACL SETUSER <username> <rules>
若用户不存在,则按默认规则创建用户,并为其增加rules若用户存在则在已有规则上增加rules。
默认规则下新增的用户处于非活跃状态,且没有密码,同时也没有任何命令和key的权限,用户名区分大小写。

在这里插入图片描述

7、alc setuser 授权

127.0.0.1:6379> ACL SETUSER mike on >123456 ~name* +get +set
OK
on为活跃状态,密码为123456,允许对所有name开头的key使用get和set命令
127.0.0.1:6379> ACL SETUSER mike on >666666
OK
为mike用户新增一个可用密码666666

在这里插入图片描述
8、alc deluser 删除用户

127.0.0.1:6379> ACL USERS
1) "Mike"
2) "default"
3) "mike"
127.0.0.1:6379> ACL DELUSER Mike
(integer) 1
127.0.0.1:6379> ACL USERS
1) "default"
2) "mike"

删除用户
9、acl save 将acl权限持久化到aclfile中

127.0.0.1:6379> ACL SAVE
OK
cat /etc/redis/users.acl   #查看文件中的规则

在这里插入图片描述
10、acl load 将aclfile中的权限加载至redis服务中

vim /etc/redis/users.acl
#添加以下内容,然后保存退出
user jone on #8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92  ~name* &* -@all +set +get
127.0.0.1:6379> ACL USERS
1) "default"
2) "mike"
127.0.0.1:6379> ACL LOAD
OK
127.0.0.1:6379> ACL USERS
1) "default"
2) "jone"
3) "mike"

在这里插入图片描述

11、acl log 查看ACL安全日志
12、auth <username> <password> 认证用户,也可作切换用户

127.0.0.1:6379> AUTH mike 123456
OK
127.0.0.1:6379> set name haha
OK
127.0.0.1:6379> get name
"haha"
127.0.0.1:6379> set age 14
(error) NOPERM this user has no permissions to access one of the keys used as arguments

在这里插入图片描述

总结:redis6的ACL新特性,将redist的权限进行细化,具体化,操作更安全。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值