本页面简要介绍了 Memorystore for Redis 上的 AUTH。
如需了解如何为 Redis 实例管理 AUTH,请参阅管理 Redis AUTH。
AUTH 行为
使用 AUTH 对于 Memorystore for Redis 为可选。
连接客户端首先发送 AUTH 命令,后跟 Redis 实例的 AUTH 字符串。每个 AUTH 字符串都是一个通用唯一标识符 (UUID)。每个启用了 AUTH 的 Redis 实例都有唯一的 AUTH 字符串。
如果您在 Memorystore for Redis 实例上启用 AUTH 功能,则传入的客户端连接必须通过身份验证才能连接。客户端通过 AUTH 字符串进行身份验证后,即使您更改 AUTH 字符串,该客户端在相应连接的整个生命周期内仍保持已通过身份验证的状态。
对于 Memorystore for Redis,为实例启用 AUTH 后,系统会自动生成 AUTH 字符串。AUTH 字符串是一个随机生成的 36 个字符的字符串,该字符串为每个 Memorystore 实例专属。每次启用 AUTH 时都会生成唯一的 AUTH 字符串。因此,如果需要更改 AUTH 字符串,您可以将 AUTH 从关闭切换为开启。
与所有命令一样,如果未启用传输中加密,则无法保证命令在传输过程中进行端到端加密。这是因为无法保证客户端流量符合基于 VPC 网络级加密的 Google Cloud 加密标准。
身份验证对客户端连接的影响
本部分介绍了更改 Memorystore for Redis 实例的 AUTH 状态会如何影响该实例上的客户端连接。实例可以具有以下类型的客户端连接:
- 已建立连接:客户端已连接到实例,但未针对该实例进行身份验证。
- 经过身份验证的连接:客户端连接到实例并针对该实例进行身份验证。
行为
下表列出了用于更改实例的每个版本的 AUTH 状态的操作,以及这些操作对实例上的客户端连接的影响。
| 操作 | 版本 3.2 - 5.0 | 版本 6.x - 7.2 |
|---|---|---|
| 正在启用 | 如果您启用 AUTH,则 Memorystore for Redis 会拒绝这些命令,无论连接是否已建立。 | 来自已建立连接的命令会继续正常运行。不过,如果客户端在重新连接时未提供正确的密码,则命令会失败。 |
| 正在停用 | 来自已建立连接的命令继续有效。 不过,即使客户端在重新连接时提供了正确的密码,重新连接也会失败。 | |
| 轮替(停用和重新启用) | 来自已建立且经过身份验证的连接的命令继续有效。不过,如果客户端在重新连接时未提供正确的密码,则命令会失败。 | |
问题排查
下表列出了与更改实例的 AUTH 状态相关的错误消息、适用的版本、说明以及问题排查方法。
| 错误 | 适用版本 | 说明 | 问题排查 |
|---|---|---|---|
NOAUTH Authentication required. |
全部 | 客户端未针对实例进行身份验证,但已启用 AUTH。 | 更新客户端配置,以使用正确的密码进行身份验证。 |
ERR invalid password. |
3.2 - 5.0 | 客户端使用 AUTH 命令,但提供的密码不正确。 | 更新客户端配置以提供正确的密码。 |
ERR Client sent AUTH, but no password is set. |
3.2 - 5.0 | 客户端尝试针对实例进行身份验证,但 AUTH 已停用。 | 在客户端配置中停用身份验证,或在实例上启用 AUTH。 |
WRONGPASS invalid username-password pair or user is disabled.
|
6.x - 7.2 | 客户端使用 AUTH 命令,但提供的用户名或密码不正确。 | 更新客户端配置,以提供正确的用户名和密码。 |
ERR AUTH <password> called without any password configured
for the default user. Are you sure your configuration is correct?
|
6.x - 7.2 | 客户端尝试针对实例进行身份验证,但 AUTH 已停用。 | 在客户端配置中停用身份验证,或在实例上启用 AUTH。 |
安全性与隐私权
AUTH 有助于确保组织中的已知实体不会无意中访问和修改 Redis 实例。AUTH 不会在数据传输过程中提供安全保障。此外,AUTH 无法保护您的实例免受有权访问您的 VPC 网络的恶意实体的侵害。
请确保仅限已知用户和客户端访问您的 VPC 网络。如需了解详情,请参阅 Redis 安全性。
将 AUTH 与启用读取副本的实例搭配使用
如果在启用了读取副本的实例上启用了 AUTH,则与 Redis 实例的任何连接都需要使用 AUTH 字符串进行初始身份验证。
后续步骤
- 执行与 Redis AUTH 相关的常见任务
- 查看执行 Redis AUTH 任务所需的权限。