• redis 用户权限管理


     ads

    关注以下公众号查看更多文章

    redis6 可以使用acl命令创建用户分配权限,还可以支持操作key的范围

    创建一个用户test2 并指定密码 123456

    acl setuser test2 >123456

    查看可以分配的权限组

    acl cat

    返回的列表是这样的

    1. 1) "keyspace"
    2. 2) "read"
    3. 3) "write"
    4. 4) "set"
    5. 5) "sortedset"
    6. 6) "list"
    7. 7) "hash"
    8. 8) "string"
    9. 9) "bitmap"
    10. 10) "hyperloglog"
    11. 11) "geo"
    12. 12) "stream"
    13. 13) "pubsub"
    14. 14) "admin"
    15. 15) "fast"
    16. 16) "slow"
    17. 17) "blocking"
    18. 18) "dangerous"
    19. 19) "connection"
    20. 20) "transaction"
    21. 21) "scripting"

    查看权限组下具体包含的命令有哪些

    acl cat keyspace

    返回如下

    1. 1) "expireat"
    2. 2) "randomkey"
    3. 3) "restore-asking"
    4. 4) "pexpire"
    5. 5) "flushall"
    6. 6) "dump"
    7. 7) "persist"
    8. 8) "keys"
    9. 9) "exists"
    10. 10) "expiretime"
    11. 11) "migrate"
    12. 12) "pexpiretime"
    13. 13) "move"
    14. 14) "ttl"
    15. 15) "pexpireat"
    16. 16) "dbsize"
    17. 17) "object|freq"
    18. 18) "object|encoding"
    19. 19) "object|idletime"
    20. 20) "object|help"
    21. 21) "object|refcount"
    22. 22) "swapdb"
    23. 23) "pttl"
    24. 24) "expire"
    25. 25) "unlink"
    26. 26) "type"
    27. 27) "scan"
    28. 28) "renamenx"
    29. 29) "touch"
    30. 30) "restore"
    31. 31) "del"
    32. 32) "flushdb"
    33. 33) "copy"
    34. 34) "rename"

    我们想给test2这个用户授予 string 权限组权力,以及     expireat
        pexpireat
        pexpire
        exists
        keys
        ttl
        expire
        unlink 这几个命令的权力,允许操作key的命名格式为 test2:

    acl setuser test2 +@string +expireat +pexpireat +pexpire +exists +keys +ttl +expire +unlink ~test2:*

    看一下test2这个用户的情况

    acl getuser test2

    返回如下

    1. 1) "flags"
    2. 2) 1) "off"
    3. 3) "passwords"
    4. 4) 1) "8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92"
    5. 5) "commands"
    6. 6) "-@all +@string +pexpire +keys +exists +ttl +pexpireat +expire +unlink +expireat"
    7. 7) "keys"
    8. 8) "~test2:*"
    9. 9) "channels"
    10. 10) ""
    11. 11) "selectors"
    12. 12) (empty array)

    打开test2这个用户允许登陆

    acl setuser test2 on

    下面我们用test2 这个用户登陆验证权限

    1. ➜ ~ redis-cli
    2. 127.0.0.1:6379> auth test2 123456
    3. OK
    4. 127.0.0.1:6379> keys *
    5. 1) "age"
    6. 127.0.0.1:6379> keys test2*
    7. (empty array)
    8. 127.0.0.1:6379> del age
    9. (error) NOPERM this user has no permissions to run the 'del' command
    10. 127.0.0.1:6379> unlink age
    11. (error) NOPERM this user has no permissions to access one of the keys used as arguments
    12. 127.0.0.1:6379> set test2:age 12
    13. OK
    14. 127.0.0.1:6379> unlink test2:age
    15. (integer) 1
    16. 127.0.0.1:6379> unlink age
    17. (error) NOPERM this user has no permissions to access one of the keys used as arguments
    18. 127.0.0.1:6379>

    =====================================================================

    2022-12-07 补充

    上面设置内容重启redis后无法保存并失效,redis.conf需要配置acl文件位置

    aclfile conf/users.acl

    使用 acl save 把最新acl用户列表保存到 users.acl文件中

  • 相关阅读:
    向NS-3添加新模块_ns3.35添加新模块_ns3.35以及更早版本添加新模块
    MySQL 使用客户端以及SELECT 方式查看 BLOB 类型字段内容总结
    Transformer为什么如此有效 | 通用建模能力,并行
    基于JAVA+SpringMVC+Mybatis+MYSQL的公寓租赁系统
    Linux防火墙添加白名单
    Java操作Elasticsearch(新增数据)
    python使用opencv库对比两张图片并用红框标记出不同点
    vue问题01:路由鉴权跳转页面,vuex+sessionStorage中的token不一致,刷新页面数据丢失
    基于Docker搭建Redis集群并进行扩容、缩容教程
    详解操作符
  • 原文地址:https://blog.csdn.net/fanghailiang2016/article/details/128092705