• 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

  • 相关阅读:
    Golang的类型转换实战案例
    Golang的基础数据类型-布尔型
    Golang的运算符优先级实操案例
    Golang的单目(一元)运算符-地址操作符和接收操作符
    基于Ambari的WebUI部署kafka服务
    HBase集群优化篇
    HBase Master的高可用实战案例
    HBase 数据迁移实战案例
    HBase API实战案例
    MySQL数据源接入DBus
  • 原文地址:https://www.cnblogs.com/jiangdewen/p/15115198.html
Copyright © 2020-2023  润新知