redis acl

redis acl

redis 安全访问控制

官网

本文基于redis 6.2.17 版本进行测试验证

使用方式

redis 使用 acl 的配置有2种方式:使用 redis.conf 文件配置,和在 redis.conf 文件中配置 aclfile path 指定外部 aclfile 文件路径

使用 redis.conf 文件配置

首先,打开redis-cli,配置用户访问控制权限,如密码、可执行的命令等

bash 复制代码
# redis-cli中执行命令
## 配置用户信息
acl setuser 用户名 on +@all -eval -evalsha >明文密码

其次,手动将配置写入 redis.conf 文件中,持久化保存

Properties 复制代码
user 用户名 on +@all -eval -evalsha >明文密码

通过 aclfile 指定其他配置文件路径

首先,在redis.conf配置文件中配置 aclfile /x/x/x/users.acl 配置文件,根据需求替换路径

properties 复制代码
aclfile /x/x/x/users.acl

接下来有2种方式使规则生效,任选一种即可

方式1 ,在 redis-cli 中配置规则,最后通过acl save命令将配置写入/x/x/x/users.acl配置文件

bash 复制代码
# redis-cli中执行命令
## 配置用户信息
acl setuser 用户名 on +@all -eval -evalsha >明文密码

## 查看配置
acl list

## 持久化存储
acl save

方式2 ,在/x/x/x/users.acl中写入规则,在redis-cli 执行 acl load命令使配置生效

/x/x/x/users.acl中添加规则

properties 复制代码
user 用户名 on +@all -eval -evalsha >明文密码

redis-cli中执行命令

bash 复制代码
# redis-cli中执行命令
acl load

acl配置语法和常用配置项

使用acl list可以查看当前系统中的配置

bash 复制代码
> ACL LIST
1) "user default on nopass ~* &* +@all"

上面acl list 命令的响应信息可以直接写入到配置文件中,下面讲解中有几部分:

  1. user 是一个固定的单词
  2. default 是默认用户信息,如果需要配置其他用户,可使用其他的用户名
  3. on 表示用户启用,可以使用off禁用某个用户,但已经建立的连接不会关闭
  4. nopass 表示没有启用密码控制
    1. 设置密码,可以在命令的最后添加>password,其中>标记后面的事明文的密码,password可以替换成自己需要的密码,如
      user default on ~* &* +@all >123456
  5. ~* 访问每个可能的密钥
  6. &* 访问每个可能的Pub/Sub 通道
  7. +@all 访问所有命令

如果需要禁用某个命令,使用 -命令,如-eval -evalsha表示禁用 eval 和 evalsha 命令

使用技巧

  1. 常用配置

    给出一条常用的命令,每次新增用户权限可直接复制命令,然后根据实际需求进行调整

    redis-cli

    bash 复制代码
        acl setuser 用户名 on ~* &* +@all -eval -evalsha -flushdb -flushall >明文密码

    users.acl文件

    Properties 复制代码
        user 用户名 on ~* &* +@all -eval -evalsha -flushdb -flushall >明文密码
  2. 通过acl list命令的响应内容,快速修改配置

    redis-cli 交互式窗口中,使用acl list可以查看redis中目前生效的配置信息,可以复制其响应内容,在命令后使用+xxx -xxx来快速修改对应用户可执行和禁用的命令

    bash 复制代码
    ### 使用 acl list,查看响应内容
    127.0.0.1:6379> acl list
    1) "user alice on #8bb0cf6eb9b17d0f7d22b456f121257dc1254e1f01665370476383ea776df414 &* +@all"
    2) "user default on sanitize-payload #8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92 ~* &* +@all"
    ### 复制第一条,在前方增加acl set,并在后方增加 -flushdb -flushall
    127.0.0.1:6379>acl setuser alice on #8bb0cf6eb9b17d0f7d22b456f121257dc1254e1f01665370476383ea776df414 &* +@all
    OK
  3. acl list 中显示的是加密后的密码,如果项目要求不允许在配置文件中出现明文密码,可以将acl list中的内容复制到配置文件中

  4. 不建议使用命令重命名的方式(rename-command),如果需要恢复权限很不方便

  5. 使用acl配置,则可以不使用和redis默认的requirepass

  6. redis.conf中,直接配置user xxxx和指定aclfile xxxx.acl,两种方式只能二选一

相关推荐
知初~2 小时前
出行项目案例
hive·hadoop·redis·sql·mysql·spark·database
weixin_425878236 小时前
Redis复制性能优化利器:深入解析replica-lazy-flush参数
数据库·redis·性能优化
左灯右行的爱情6 小时前
Redis数据结构总结-listPack
数据结构·数据库·redis
想要打 Acm 的小周同学呀7 小时前
Redis三剑客解决方案
数据库·redis·缓存
rkmhr_sef7 小时前
Redis 下载与安装 教程 windows版
数据库·windows·redis
是姜姜啊!8 小时前
redis的应用,缓存,分布式锁
java·redis·spring
库库林_沙琪马8 小时前
Redis 缓存穿透、击穿、雪崩:问题与解决方案
数据库·redis·缓存
Hanson Huang9 小时前
【存储中间件API】MySQL、Redis、MongoDB、ES常见api操作及性能比较
redis·mysql·mongodb·es
落落落sss9 小时前
MongoDB
数据库·windows·redis·mongodb·微服务·wpf
小丑西瓜66611 小时前
分布式简单理解
linux·redis·分布式·架构·架构演变