Redis只读账号配置方法

作者:技术拾光

时间:2026-06-07

浏览:428

基于Redis6.0以上ACL系统,可通过CLI临时创建或配置文件永久设置只读账号,支持命令与键空间权限控制。具体使用`-@all+@read`禁用所有命令后开放读命令,也可通过ACL文件热加载实现权限管理,满足监控、开发等场景最小权限需求。

文章目录

一、需求说明

日常工作中,运维工程师经常需要安装和配置Redis。近期有测试同事申请开通一个只读账户,而以往的做法通常是一个读写用户应付一切,很少对权限进行细化管理。实际上,这种需求并不少见。

Redis作为高性能的内存数据库,承载着缓存、会话存储、消息队列等关键功能。当团队规模扩大、微服务架构铺开后,不同服务或团队对Redis的访问权限各有不同要求。典型的场景包括:

  • 监控系统需要读取性能指标,但不能碰数据本身;
  • 数据分析团队要查询数据,但不能影响生产环境;
  • 开发人员在调试时需要查看数据,但绝不能意外修改;
  • 第三方服务需要访问特定数据,权限必须严格受限。

配置只读账号正是为了解决这类权限分离需求——遵循最小权限原则,降低数据被意外修改或删除的风险。

二、Redis账号介绍:ACL系统

从Redis 6.0开始,推荐使用6.2或更高版本,因为引入了更完善的ACL(Access Control List)系统,取代了过去的简单密码认证。Redis ACL支持以下能力:

  • 用户管理:创建多个账号;
  • 命令控制:精确控制每个用户能执行哪些命令;
  • 键空间控制:限制可访问的键模式;
  • 权限类别:读、写、管理等多种类型。

1、命令举例

user admin on >admin_password ~* &* +@all
user readonly on >readonly_password ~* -@all +@read +ping +info

2、上述命令解析

命令类别:

  • +@read:允许所有读命令
  • -@all:先禁止所有命令(作为起点)
  • +get:允许 get 命令
  • +info:允许 info 命令

键模式:

  • ~*:允许访问所有键
  • ~cache:*:仅允许访问以 cache: 开头的键
  • ~user:* ~session:*:允许访问多种模式

本示例的实验环境是 Redis 7.2.11。需要留意的是,如果只授权某个命令或某类命令权限,记得先写上 -@all,后面再跟上需要放开的命令授权。

[root@ywserver ~]# redis-cli --version
redis-cli 7.2.11

三、配置方式及配置示例

1、通过Redis CLI配置(临时)

先创建一个只读用户,然后用只读账户连接测试。可以看到这个用户能执行 get、exists 等只读命令,但无法执行 set 等写入命令。

127.0.0.1:6379> ACL SETUSER readonly on >readonly_password ~* -@all +@read

Redis只读账号配置方法

2、通过配置文件(永久生效)

通过 Redis CLI 配置的账户和授权只在当前服务进程生效,一旦 Redis 重启,配置就会丢失。如果需要永久生效,需要在 /etc/redis.conf 配置文件中进行设置,添加下面一行配置后重启 Redis。

另外,如果用户需要远程连接,记得加上 +@connection 权限。

user readuser on >user123 ~* &* -@all +@read +@connection

Redis只读账号配置方法

Redis只读账号配置方法

3、通过ACL文件管理

为了方便管理用户,可以将用户权限配置单独放在一个文件里,比如 users.acl。这样做的好处是,修改了 users.acl 之后可以通过 ACL LOAD 热加载配置,完全不需要重启 Redis。

[root@ywserver ~]# mkdir -p /etc/redis
[root@ywserver ~]# vim /etc/redis/users.acl
[root@ywserver ~]# systemctl restart redis
[root@ywserver ~]# cat /etc/redis.conf |grep users.acl
aclfile /etc/redis/users.acl
[root@ywserver ~]# cat /etc/redis/users.acl
user default off
user admin on >admin123 ~* &* +@all
user readuser on >user123 ~* -@all +@read +ping +info

Redis只读账号配置方法

Redis只读账号配置方法

四、管理命令参考

  • 查看所有用户:ACL LIST
  • 查看特定用户规则:ACL GETUSER readuser
  • 删除用户:ACL DELUSER readuser
  • 保存ACL配置到文件:ACL SA VE
  • 加载ACL配置:ACL LOAD
  • 查看命令类别:ACL CAT
  • 查看所有读命令:ACL CAT read

五、常见命令类别包含的命令

1、@read 类别(部分)

  • get, mget, hget, hmget
  • exists, type, ttl, pttl
  • llen, lrange, scard, smembers
  • zcard, zrange, zscore
  • keys, scan, hscan, sscan, zscan

2、@write 类别(部分)

  • set, mset, hset, hmset
  • del, hdel, srem, zrem
  • incr, decr, hincrby
  • lpush, rpush, lpop, rpop

3、其他实用类别

  • @connection:连接相关(AUTH, HELLO, QUIT等)
  • @pubsub:发布订阅相关
  • @fast:快速命令(PING, ECHO等)

总结

从实际需求出发,配置Redis只读账号并不复杂,关键是理解ACL的权限模型和不同配置方式的适用场景。希望这些示例能帮助同样有权限管理需求的运维同行。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章