美文网首页redis 学习
Redis 6.0新特性——ACLs

Redis 6.0新特性——ACLs

作者: zeekling | 来源:发表于2020-11-24 00:46 被阅读0次

    简介

    Redis在6版本之前是没有权限的概念的,所以所有连接的客户端都可以对Redis里面的数据进行操作,也可以使用所有高危命令,这样就可能存在Redis直接down掉或者数据被全部清空的情况。

    • 当执行flushall 或者flashdb的时候会清空掉数据库里面的所有数据。
    • 当执行DEBUG SEGFAULT的时候Redis进程会直接down掉。如下图所示: 202011221955.png

    在Redis 5以及之前的版本为了避免这种情况的出现,可以使用 rename-command将高危命令禁用掉。

    rename-command KEYS ""
    rename-command FLUSHALL ""
    rename-command FLUSHDB ""
    rename-command CONFIG ""
    rename-command EVAL ""
    rename-command SHUTDOWN ""
    

    以上方法虽然可以解决掉高危命令带来的问题,但是只是使用了简单粗暴的方式,没有做的比较细致。

    ACL 权限

    Redis ACL是Access Control List(访问控制列表)的缩写,该功能允许根据可以执行的命令和可以访问的键来限制某些连接。它的工作方式是,在连接之后,要求客户端进行身份验证,以提供用户名和有效密码:如果身份验证阶段成功,则连接与给定用户关联,并且该用户具有限制。可以对Redis进行配置,以使新连接已过“默认”用户进行身份验证(这是默认配置),因此,配置默认用户具有的能力是,仅向连接提供特定功能子集的功能未明确认证。

    为某个用户设置权限可以使用下面命令:

    ACL SETUSER test >passwd on allkey +set
    

    setuser...on表示启用此用户,off则是只定义一个不可用(unaccessable)的用户。

    >passwd表示给当前用户设置密码,可以通过auth命令进行登录acl控制的用户。

    auth test passwd
    
    202011222015.png

    +set当前用户拥有执行set命令的权限,与之相反的是 -set表示取消指定用户执行set命令的权限。

    切换用户之后只对指定的命令拥有执行权限。

    image.png

    acl 配置文件

    一般情况下,我们使用命令行设置的acl权限只是保存在内存里面,当Redis进程重启之后我们设置的权限就不见了。那我们应该怎么办呢,对于这种情况,官方也想到了,提供了acl的配置文件。在Redis的配置文件(redis.conf)中可以配置acl文件的位置:

    aclfile /etc/redis/users.acl
    

    那么acl里面到底保存的是什么呢?其实acl里面保存的就是命令 acl list执行的结果。其中密码的经过加密了的也比较安全。

    下图是acl配置文件的样例,是通过执行命令 acl save生成的。

    image.png

    下图是命令 acl list执行的结果。

    image.png

    注意

    acl 权限不会自动写入到配置文件里面,在生成ACL配置文件的时候一定要注意执行夏明命令进行持久化(需要先配置 aclfile)

    acl save
    

    标 题:《Redis 6.0新特性——ACLs
    作 者:zeekling
    提 示:转载请注明文章转载自个人博客:小令童鞋

    相关文章

      网友评论

        本文标题:Redis 6.0新特性——ACLs

        本文链接:https://www.haomeiwen.com/subject/rvdpiktx.html