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