跳到主要内容

Redis ACL 命令

介绍

Redis 是一个高性能的键值存储系统,广泛应用于缓存、消息队列等场景。随着 Redis 的使用范围扩大,安全性变得尤为重要。Redis 6.0 引入了访问控制列表(ACL)功能,允许管理员更精细地控制用户对 Redis 实例的访问权限。

ACL 命令提供了一种机制,可以定义用户、分配权限以及限制用户对特定命令和键的访问。通过 ACL,你可以确保只有授权的用户才能执行敏感操作,从而提高 Redis 的安全性。

ACL 基础

在 Redis 中,ACL 通过用户名和密码来管理用户。每个用户可以拥有不同的权限,例如只读、只写或执行特定命令的权限。ACL 还支持通配符,允许你为多个键或命令设置相同的权限。

创建用户

使用 ACL SETUSER 命令可以创建或修改用户。以下是一个简单的示例,创建一个名为 alice 的用户,并为其分配密码和权限:

redis
ACL SETUSER alice on >password +@read -@all +get
  • on 表示启用该用户。
  • >password 设置用户的密码为 password
  • +@read 授予用户读取权限。
  • -@all 移除所有权限。
  • +get 授予用户执行 GET 命令的权限。

查看用户权限

使用 ACL LIST 命令可以查看当前所有用户的权限:

redis
ACL LIST

输出可能如下:

1) "user alice on >password ~* +@read -@all +get"

删除用户

使用 ACL DELUSER 命令可以删除用户:

redis
ACL DELUSER alice

实际案例

假设你正在管理一个 Redis 实例,其中存储了敏感的用户数据。你希望确保只有特定的管理员才能访问这些数据,而其他用户只能读取非敏感数据。

案例 1:限制管理员权限

首先,创建一个管理员用户 admin,并为其分配所有权限:

redis
ACL SETUSER admin on >adminpassword +@all

案例 2:限制普通用户权限

接下来,创建一个普通用户 user,并限制其只能读取非敏感数据:

redis
ACL SETUSER user on >userpassword +@read -@all +get

案例 3:使用通配符限制键访问

你还可以使用通配符来限制用户对特定键的访问。例如,限制用户 user 只能访问以 public: 开头的键:

redis
ACL SETUSER user on >userpassword +@read -@all +get ~public:*

总结

Redis 的 ACL 命令为管理员提供了强大的工具,可以精细地控制用户对 Redis 实例的访问权限。通过合理配置 ACL,你可以显著提高 Redis 的安全性,防止未经授权的访问和操作。

附加资源

练习

  1. 创建一个名为 bob 的用户,并为其分配只读权限。
  2. 使用 ACL LIST 命令查看当前所有用户的权限。
  3. 尝试删除 bob 用户,并验证是否成功删除。

通过以上练习,你将更好地理解 Redis ACL 命令的使用方法。