redis ACL 授权篇

时间:2021-08-08
本文章向大家介绍redis ACL 授权篇,主要包括redis ACL 授权篇使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

@

作为redis6.x版本新增的ACL(access control list)权限管理模块,为redis的安全性提高了保障,至于如何使用,具体详情请参考官方文档:https://redis.io/topics/acl
博主只记录下博主的使用要点

设置用户密码

此处有必要说明redis对于密码的操作有两种方式,一种是明文,一种是SHA256哈希值。而redis为了安全,在数据库保存的是密码的SHA256哈希值。

# 生成 password-demo 的SHA256值,显示值3为:557c2f07e396f27896269ed0698d3d7b5c203c01372ddcf722208a1d0467a5fc
echo -n "password-demo" | shasum -a 256

两种设置用户密码的方式

# 为 user1 用户添加 password-demo 密码(ps:redis一个账号是可以对应多个密码的)
acl setuser user1 #557c2f07e396f27896269ed0698d3d7b5c203c01372ddcf722208a1d0467a5fc
acl setuser user2 >password-demo

ACL配置通过外置文件使用

有与生产环境下至少是三台哨兵模式,甚至集群。那么redis服务就多了,一个一个的去手动通过指令设置用户,虽说也可以实现,但无疑是会增加工作量(没台redis服务器的账号、权限设置过后都要验证一遍),并且错误几率也会大大增加的。

ACL文件相关的两个重要指令

# 重新加载 ACL 文件(如果存在未入文件的用户、权限配置,重新加载后会失效)
ACL LOAD
# 保存当前 ACL 配置至 ACL 文件
ACL SAVE

ACL文件保存的就是 acl list 指令查看的列表信息,需要注意的是关于密码方面虽说可以在ACL文件里面采用明文的方式设置,但是不建议这么做,因为这样的话,如果有人找到了这个文件就直接获取了redis的所有账号密码(基于所有的用户权限管理已经写入该文件的情况)

ACL文件案例

以下案例包含6个用户配置,
1、default用户置为无效,redis默认的defult用户是不需要用户密码校验就可以连接的,而这个用户又不能删除,所以设置位无效
2、admin用户,给与所有权限
3、redis普通使用用户,给于所有的数据操作权限,如果要配置用户只读的话可以参考官方文档:https://redis.io/topics/acl
4、redis服务停止用户,由于我们在redis停止脚本的时候需要用到redis的shutdown权限,所以专门建立一个redis用户来做这个操作
5、redis哨兵用户,参考官方redis哨兵用户权限建议设置:https://redis.io/topics/sentinel
6、redis从用户,参考官方redis从用户权限建议设置:https://redis.io/topics/replication

user default off nopass ~* +@all
user admin-user on #6073ee0c1f33a7c55c023cfb5ae41202634ec5d47f5839766d7e9c72784692c7 ~* +@all
user redis-user on #b29890a1832f93ab561d6e5da14ac6cd6688a72674da66ba342e52dfb3fced0b ~* +@all -@dangerous +get +set
user stop-user on #aa655477ccee0866310f71602923f37351245c53fe77c178cf2f79b04d0b2cd0 +SHUTDOWN
user sentinel-user on #f52269d79c568147710decedb57dac72400211768eb1137097b5f67233f4290d -@all +subscribe +publish +client|setname +client|kill +config|rewrite +role +exec +slaveof +info +multi +ping +script|kill
user replica-user on #3ee15bb3d499740ccdc5ebf49b6f8b3f4a43dfc74b1597f6f3822023cbab008a -@all +ping +psync +replconf

上面的ACL文件配置对应以下账户、密码
随机密码可采用 ACL genpass 指令生成
admin-user 9cb1fdc2d0411f9830559dc525efcc4ecc4f455f6e877a620108bca801c58016
redis-user 47395dbd5fa638e33d31dc3d0bd14eba34ed9c981f11b06b0fa59cad97e54831
stop-user 9ff462ea9279cfbf384ee9a8678e14b0b76cafbe5d82f9787827876ae0028581
sentinel-user 05a364a63b7cd0894a7f97817ac11041fe4f581d82aeeb3b0d773b9dcc19ba9c
replica-user 77c350ef7716951bd54a0524a30ae89c9134a6eb8b54c70a588d7e9b056ac2b5

具体的ACL指令可以参考这一篇文章:https://blog.csdn.net/sl285720967/article/details/106440838

原文地址:https://www.cnblogs.com/jiangdewen/p/15115198.html