实施适当的身份验证和访问控制对保护您的 Redis 环境至关重要。本节涵盖了 Redis 实例的密码管理和基于角色的访问控制配置。
Redis 5.0 仅支持使用一组凭据进行基本密码身份验证,而 Redis 6.0 及后续版本实现了全面的访问控制列表 (ACL) 系统,支持多个具有细粒度权限的用户。Redis 6.0 及以上版本为向后兼容旧客户端保留了默认用户。
以下方法允许您查看与 Redis 实例相关的所有用户。
Redis 实例 (版本 6.0+) 利用 RedisUser
自定义资源 (CR) 来管理用户账户。列出与特定实例关联的所有用户:
例如,要列出名为 s6
的实例的所有用户:
输出字段提供以下信息:
字段 | 描述 |
---|---|
NAME | RedisUser 自定义资源标识符 |
INSTANCE | 关联的 Redis 实例名称 |
USERNAME | 在 Redis 中注册的用户名 |
PHASE | 同步状态:
|
每个 Redis 实例都包括一个内置的 operator 用户,该用户在实例创建期间自动生成。此系统账户具有全面的权限(包括用户管理功能),并使用复杂的 64 字符密码进行保护。
该账户仅供系统操作使用,切勿用于应用程序访问。对该账户配置的任何修改可能导致实例严重不稳定,并可能导致无法恢复的故障状态。
以下步骤允许您更新用户密码以增强安全性。定期更换密码被认为是安全的最佳实践。
以下操作仅适用于 Redis 6.0 或更高版本。对于 Redis 5.0,请参考 "Redis 5.0 CLI" 选项卡。
从 RedisUser 列表中识别目标用户。
在此示例中,我们将更新实例 s6
的 default
用户的密码。
检索 RedisUser 资源以识别关联的密码 Secret:
从 spec.passwordSecrets[0]
字段可以看出,密码存储在 Secret redis-s6-2hqxb
中。
注意:
password
键是 Redis Operator 使用的保留字段名,其值以 base64 编码的字符串形式存储。
在更新密码后,RedisUser 资源将暂时进入 Pending
状态,直到更改在所有 Redis 节点上传播。一旦同步,状态将恢复为 Success
。
Redis 6.0+ 通过其 ACL 系统支持细粒度的访问控制。该平台提供了常见用例的预定义权限配置:
权限配置 | ACL 规则 | 描述 |
---|---|---|
NotDangerous | +@all -@dangerous ~* | 允许对所有键执行所有命令,但不包括被标记为潜在危险的操作 |
ReadWrite | -@all +@write +@read -@dangerous ~* | 允许在所有键上进行读写操作,但阻止危险命令 |
ReadOnly | -@all +@read -keys ~* | 限制访问所有键的只读操作 |
Administrator | +@all -acl ~* | 提供对所有 Redis 功能的全面访问,但不包括 ACL 管理命令 |
对于高级用例,支持自定义 ACL 规则。有关详细语法和功能,请参阅 Redis ACL 文档。
注意:所有权限配置,包括自定义配置,明文撤销 ACL 管理权限。用户修改必须通过平台的用户管理接口进行。
成功创建后,用户将随机进入 Pending
状态。等待其变为 Success
状态,表示更新成功。
为 Redis 集群实例创建用户。