首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Redis 6.0新特性——ACLs

Redis 6.0新特性——ACLs

作者头像
zeekling
发布2022-08-26 19:57:10
7980
发布2022-08-26 19:57:10
举报

简介

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

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

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

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

image.png
image.png

acl 配置文件

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

aclfile /etc/redis/users.acl

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

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

image.png
image.png

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

image.png
image.png

注意

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

acl save
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020.11.22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
  • ACL 权限
  • acl 配置文件
  • 注意
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档