除了 Identity and Access Management (IAM) 身份验证, 您还可以使用基于基本令牌的身份验证来保护对 Memorystore for Valkey 实例的访问。作为一种轻量级解决方案,基于基本令牌的身份验证可让客户端使用其令牌在您的应用中验证自己的身份。
基于基本令牌的身份验证对资源的要求极低,资源开销也很低。此外,如果您在 Memorystore for Redis 或本地应用上的当前工作负载已使用基于基本令牌的身份验证,那么当您迁移到 Memorystore for Valkey 时,此功能有助于实现平稳过渡。
福利
通过使用基于基本令牌的身份验证,您可以获得以下优势:
- 灵活性:对于新实例和现有实例,您可以随时启用身份验证。启用基于基本令牌的身份验证后,您的实例将受到 保护。对于所有新连接,用户必须提供身份验证令牌才能通过身份验证并进入您的实例。
- 零停机时间轮替:轮替用户令牌,而不会导致 应用停机。
- 兼容性:
default超级用户保留授予此用户的相同权限。基于基本令牌的身份验证增加了一层额外的保护。当您将工作负载从 Memorystore for Redis 迁移到 Memorystore for Valkey 时,这可确保向后兼容性。
身份验证模式
基于基本令牌的身份验证支持两种主要身份验证模式:
- 简单身份验证:一种简单的方法,用户发送
身份验证令牌以将自己验证为
default用户 - 多用户身份验证:管理多个用户以验证对实例的访问权限
最佳实践
出于安全考虑,我们建议您对基于基本令牌的身份验证使用以下最佳实践:
- 轮替用户令牌:对用户 令牌使用轮替政策。
使用 Secret Manager:请勿在应用代码中硬编码用户的基于基本令牌的 身份验证凭据。而是将它们存储在 Secret Manager 中,并在 运行时检索它们。
Secret Manager 为用户凭据提供了一个集中式加密保险库,可消除 Secret 蔓延,并减少手动管理凭据的运营开销。它使用 IAM 强制执行访问控制,并自动生成审核日志。这可确保合规性并防止凭据泄露。
将基于基本令牌的身份验证与传输层安全协议 (TLS) 相结合: 当您使用基于基本令牌的身份验证时,我们建议您启用传输中加密。这可确保用户名和身份验证令牌不会通过网络以纯文本形式发送。
准备工作
在开始使用基于基本令牌的身份验证来保护实例之前,请完成本部分中的前提条件。
验证客户端对基于基本令牌的身份验证的支持
如需确认客户端应用可以支持基于基本令牌的身份验证,请确保应用可以使用 AUTH 命令。
default 用户使用以下命令向客户端应用进行身份验证:
AUTH TOKEN
对于此命令,TOKEN 是默认用户的身份验证令牌。
所有其他用户都使用以下命令进行身份验证:
AUTH USERNAME TOKEN
对于此命令,USERNAME 和 TOKEN 是用户的 用户名和身份验证令牌。
如需详细了解 AUTH 命令,请参阅 AUTH
Valkey 文档。
使用 Google Cloud 控制台、Google Cloud CLI 和 API
如需使用 Google Cloud 控制台、gcloud CLI 和 API,请执行以下 操作:
- 在 Google Cloud 控制台的项目选择器页面上,选择或 创建项目。 Google Cloud
- 确保您的项目已启用结算功能。了解如何检查项目是否已启用结算功能。
安装并初始化 Google Cloud CLI (gcloud CLI)。
注意 :如果您已安装 gcloud CLI,请运行
gcloud components update以确保您拥有最新版本。如需访问 Memorystore for Valkey gcloud CLI 命令,您至少需要 gcloud CLI 版本489.0.0。-
启用 Memorystore for Valkey API。
Memorystore for Valkey API -
启用 Network Connectivity API。
Network Connectivity API -
启用 Service Consumer Management API。
Service Consumer Management API
分配角色
如需为实例配置基于基本令牌的身份验证,您必须在您的 Google Cloud 项目中拥有 以下 IAM 角色 之一:
roles/memorystore.admin(Memorystore Admin 角色)roles/owner(Owner 角色)roles/editor(Editor 角色)
管理实例的基于基本令牌的身份验证
Memorystore for Valkey 支持以下操作来管理实例的基于基本令牌的身份验证:
- 创建启用基于基本令牌的身份验证的实例
- 为实例启用基于基本令牌的身份验证
- 为实例创建基于基本令牌的身份验证用户
- 列出实例的基于基本令牌的身份验证用户
- 查看基于基本令牌的身份验证用户的相关信息
- 从实例中删除基于基本令牌的身份验证用户
创建启用基于基本令牌的身份验证的实例
通过创建启用基于基本令牌的身份验证的实例,您可以使用一种轻量级且广泛支持的方法来限制用户对实例的访问权限。
您可以使用 gcloud CLI 创建实例。
如需创建启用了基于基本令牌的身份验证的实例,请使用
gcloud beta memorystore instances create
命令。
gcloud beta memorystore instances create INSTANCE_ID \ --location=REGION \ --authorization-mode=token-auth
进行以下替换:
- INSTANCE_ID:您要创建以使用 基于基本令牌的身份验证的实例的 ID
- REGION:您希望实例所在的区域
为实例启用基于基本令牌的身份验证
通过为实例启用基于基本令牌的身份验证,您可以使用一种轻量级且广泛支持的方法来限制用户对实例的访问权限。
default 用户只需使用其令牌即可向实例进行身份验证。所有其他用户都使用标准用户名和令牌进行身份验证。如需了解更多
信息,请参阅验证客户端对基于基本令牌的身份验证的支持。
启用基于基本令牌的身份验证可能会导致尝试创建新连接的应用停机,因为 Memorystore for Valkey 需要经过身份验证的请求。虽然现有连接不受影响,但如需对任何后续连接尝试使用基于基本令牌的身份验证,您必须更新应用。如需了解详情,请参阅 使用基于基本令牌的身份验证连接到实例。
您可以使用 gcloud CLI为实例启用基于基本令牌的身份验证。
如需启用基于基本令牌的身份验证,请使用 gcloud beta memorystore instances update 命令。
gcloud beta memorystore instances update INSTANCE_ID \ --location=REGION \ --authorization-mode=token-auth
进行以下替换:
- INSTANCE_ID:您要为其启用 基于基本令牌的身份验证的实例的 ID
- REGION:实例所在的区域
为实例创建基于基本令牌的身份验证用户
通过为实例创建基于基本令牌的身份验证用户,您可以将实例配置为允许多用户身份验证。用户首次登录后,此身份验证模式将充当新连接的安全且可撤消的凭据。用户可以继续使用身份验证令牌,直到他们删除该令牌或用户被移除为止。
您可以使用 gcloud CLI 创建基于基本令牌的身份验证用户。
如需创建用户,请使用 gcloud beta memorystore instances create-token-auth-user 命令。
gcloud beta memorystore instances create-token-auth-user INSTANCE_ID \ --location=REGION \ --token-auth-user=USERNAME
进行以下替换:
- INSTANCE_ID:您要为其创建 基于基本令牌的身份验证用户的实例的 ID
- REGION:实例所在的区域
- USERNAME:用户的用户名
列出实例的基于基本令牌的身份验证用户
您可以使用 gcloud CLI 检索实例的基于基本令牌的身份验证用户列表。
如需列出用户,请使用 gcloud beta memorystore instances token-auth-users list 命令。
gcloud beta memorystore instances token-auth-users list \ --instance=INSTANCE_ID \ --location=REGION
进行以下替换:
- INSTANCE_ID:您要为其检索 基于基本令牌的身份验证用户列表的实例的 ID
- REGION:实例所在的区域
查看基于基本令牌的身份验证用户的相关信息
您可以使用 gcloud CLI查看基于基本令牌的身份验证用户的相关信息。
如需查看用户的相关信息,请使用 gcloud beta memorystore instances token-auth-users describe 命令。
gcloud beta memorystore instances token-auth-users describe USERNAME \ --instance=INSTANCE_ID \ --location=REGION
进行以下替换:
- USERNAME:您要查看其信息的基于基本令牌的身份验证用户的用户名
- INSTANCE_ID:用户可以通过 身份验证进入的实例的 ID
- REGION:实例所在的区域
从实例中删除基于基本令牌的身份验证用户
通过从实例中删除基于基本令牌的身份验证用户,您可以撤消用户对实例的访问权限。
您可以使用 gcloud CLI从实例中删除基于基本令牌的身份验证用户。
如需删除用户,请使用 gcloud beta memorystore instances token-auth-users delete 命令。
gcloud beta memorystore instances token-auth-users delete USERNAME \ --instance=INSTANCE_ID \ --location=REGION
进行以下替换:
- USERNAME:基于基本令牌的身份验证用户的用户名
- INSTANCE_ID:您要从中删除 用户的实例的 ID
- REGION:实例所在的区域
对于您要删除的用户,Memorystore for Valkey 不会结束现有连接。如需结束这些连接,请在实例中的所有节点上运行以下命令:
CLIENT KILL USER USERNAME
管理用户的基于基本令牌的身份验证
Memorystore for Valkey 支持以下操作来管理用户的基于基本令牌的身份验证:
为用户创建身份验证令牌
通过为用户创建身份验证令牌,您可以轮替 用户的现有令牌,而不会导致应用停机。
您可以使用 gcloud CLI 为用户创建身份验证令牌。
如需创建用户,请使用 gcloud beta memorystore instances token-auth-users create-auth-token
命令。
gcloud beta memorystore instances token-auth-users create-auth-token USERNAME \ --instance=INSTANCE_ID \ --location=REGION
进行以下替换:
- USERNAME:您要为其创建 身份验证令牌的用户的用户名
- INSTANCE_ID:用户可以使用 令牌访问的实例的 ID
- REGION:实例所在的区域
列出用户的身份验证令牌
您可以使用 gcloud CLI 检索用户的身份验证令牌列表。
如需列出令牌,请使用 gcloud beta memorystore instances token-auth-users auth-tokens list
命令。
gcloud beta memorystore instances token-auth-users auth-tokens list \ --token-auth-user=USERNAME \ --instance=INSTANCE_ID \ --location=REGION
进行以下替换:
- USERNAME:身份验证令牌所属的用户的用户名
- INSTANCE_ID:用户可以使用身份验证令牌访问的实例的 ID
- REGION:实例所在的区域
查看用户的身份验证令牌的相关信息
您可以使用 gcloud CLI 查看用户的身份验证令牌的相关信息。
如需查看信息,请使用 gcloud beta memorystore instances token-auth-users auth-tokens describe
命令。
gcloud beta memorystore instances token-auth-users auth-tokens describe AUTH_TOKEN \ --instance=INSTANCE_ID \ --location=REGION \ --token-auth-user=USERNAME
进行以下替换:
- AUTH_TOKEN:您要查看其信息的身份验证令牌的名称
- INSTANCE_ID:用户可以使用 令牌访问的实例的 ID
- REGION:实例所在的区域
- USERNAME:身份验证 令牌所属的用户的用户名
从用户中删除身份验证令牌
从用户中删除身份验证令牌是一项关键的安全操作,会使令牌失效。
您可以使用 gcloud CLI 从用户中删除身份验证令牌。
如需删除令牌,请使用 gcloud beta memorystore instances token-auth-users auth-tokens delete
命令。
gcloud beta memorystore instances token-auth-users auth-tokens delete AUTH_TOKEN \ --instance=INSTANCE_ID \ --location=REGION \ --token-auth-user=USERNAME
进行以下替换:
- AUTH_TOKEN:您要从用户中删除的身份验证令牌的名称
- INSTANCE_ID:您要通过删除令牌来阻止 用户访问的实例的 ID
- REGION:实例所在的区域
- USERNAME:拥有您要删除的令牌的用户的用户名
使用基于基本令牌的身份验证连接到实例
您可以使用以下方法通过基于基本令牌的身份验证连接到实例:
- 统一资源标识符 (URI) 字符串:此单个格式化字符串非常方便,因为所有必要的连接信息(例如用户的用户名和身份验证令牌,以及实例的 IP 地址和主机名)都包含在一个字符串中。
- 标志:此方法更适合单独使用命令行工具 、编写脚本或环境,在这些环境中,配置使用多个单独的实参分解为 单独的环境变量。
在以下部分中,我们将介绍每种连接方法。
使用 URI 字符串
如需使用 URI 字符串从 Compute Engine 虚拟机或受支持的环境进行连接,请使用以下命令:
valkey-cli -u redis://USERNAME:TOKEN@IP_ADDRESS:PORT
进行以下替换:
- USERNAME:尝试连接到 实例的用户的用户名
- TOKEN:用户的身份验证令牌
- IP_ADDRESS:实例的 IP 地址
- PORT:为实例预留的端口号
使用标志
如需使用标志从 Compute Engine 虚拟机或受支持的环境进行连接,请使用以下命令:
valkey-cli --user USERNAME -a TOKEN -h IP_ADDRESS -p PORT
进行以下替换:
- USERNAME:尝试连接到 实例的用户的用户名
- TOKEN:用户的身份验证令牌
- IP_ADDRESS:实例的 IP 地址
- PORT:为实例预留的端口号
以零停机时间轮替用户的身份验证令牌
如需轮替用户的身份验证令牌,而不会导致应用停机,请执行以下操作:
- 为用户创建额外的身份验证令牌: Memorystore for Valkey 会生成第二个有效令牌。这两个令牌均有效。
- 更新应用:更新应用以使用新令牌。
- 删除用户的身份验证令牌: Memorystore for Valkey 会移除第一个令牌。用户只能使用第二个令牌通过身份验证并进入您的应用。
基于基本令牌的身份验证的访问日志
对于与身份验证令牌和用户相关的操作,Memorystore for Valkey 会生成管理员活动和数据访问审核日志。如需详细了解这些审核日志,请参阅使用审核日志监控访问权限。