redis 16 禁用重命名高危命令,ACL (对用户进行细粒度的权限控制、基于外部aclfile模式)

本文介绍了Redis从5版本开始引入的ACL功能,详细讲解了如何通过ACL实现更精细的权限控制,包括禁用/重命名高危命令、使用acllist、aclcat、aclwhoami和aclsetuser等命令创建和管理用户,以及如何配置和加载外部aclfile。此外,还讨论了如何在Redis配置中启用和持久化ACL设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言

  在Redis 5版本之前,Redis 安全规则只有依赖于密码控制以及通过rename 调整高危命令

如:

(1)禁用高危命令

在这里插入图片描述
修改redis配置文件redis.conf 添加

rename-command FLUSHALL ""
rename-command FLUSHDB  ""

在这里插入图片描述
重启redis服务发现flushdb和flushall被禁用
在这里插入图片描述

(2)重命名高危命令

修改redis配置文件redis.conf 添加

rename-command FLUSHALL "fall"
rename-command FLUSHDB  "fdb"

在这里插入图片描述
重启redis服务发现flushdb和flushall被禁用,新的命令为fdb和fall
在这里插入图片描述


1.1 简介:

  ACL,即Access Control List(访问控制列表),允许系统设置用户可执行的命令和可访问的键,用于限制用户权限。Redis 6 提供ACL的功能对用户进行更细粒度的权限控制 :
在这里插入图片描述
官方文档说明


1.2 命令

1.2.1 acl list命令展现用户权限列表

acl list

在这里插入图片描述

1.2.2 acl cat命令查看添加权限指令类别

在这里插入图片描述

加类型名可查看类型下具体命令
在这里插入图片描述

1.2.3 acl whoami 命令查看当前用户

在这里插入图片描述

1.2.4 acl setuser命令创建和编辑用户

acl setuser [rule [rule ...]]

(1)ACL 参数规则
启动或禁用用户

on  启用
off  禁用

启用或禁用命令

+<command><command> 命令添加到用户可调用的命令列表中
-<command>  从可调用的命令列表中移除 <command> 命令
+@<category>  允许用户调用 <category> 分类中的所有命令(可通过 ACL CAT 命令查看)
-@<category>  禁止用户调用 <category> 分类中的所有命令
+<command>|subcommand  允许使用原本禁用的特定类别下的特定子命令
+@all  允许调用所有命令
-@all  禁止调用所有命令

允许或禁止访问某些 KEY

~<pattern> 添加符合条件的模式。如:~* 允许访问所有 KEY
resetkeys 使用当前模式覆盖所有允许的模式。如:resetkeys ~objects:* ,最终客户端只允许访问匹配 ~object:* 模式的 KEY

为用户配置有效密码

><password>  将密码添加到用户有效密码列表中。例如:>123456 将会把 123456 添加到用户的密码列表中。该操作会清除用户的 nopass 标记。
<<password>  将密码从用户有效密码列表中移除。
nopass  删除用户所有密码,并将该用户标记为不需要密码。

(2) 通过命令创建新用户默认权限

acl setuser user1

没有指定任何规则

在这里插入图片描述

(3)设置有用户名、密码、ACL权限、并启用的用户
创建一个仅有get操作权限,仅读取cached:开头,密码为password的用户

acl setuser user1 on >password ~cached:* +get

在这里插入图片描述
(4)切换用户,验证权限
在这里插入图片描述


1.3 基于外部aclfile模式

1.3.1 开启alcfile,修改配置文件(不能同时设置requirepass)

在redis.conf添加

aclfile /myredis/users.acl

在这里插入图片描述

启动redis报错:

 Error loading ACLs, opening file '/myredis/users.acl': No such file or directory

创建此文件后,启动服务,创建用户

在这里插入图片描述

1.3.2 将acl权限持久化到aclfile

ACL SAVE

在这里插入图片描述
查看文件users.acl:
在这里插入图片描述

1.3.3 acl load 将aclfile中的权限加载至redis服务

修改users.acl文件,添加:

user cz on #5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8 ~cached:* &* -@all +get

查看当前users.acl文件:
在这里插入图片描述
执行 acl load

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

但行益事莫问前程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值