Memorystore 提供 Identity and Access Management (IAM) 身份验证功能,该功能利用 IAM 帮助您更好地管理用户和服务账号的登录访问权限。基于 IAM 的身份验证与 Redis AUTH 集成,让您可以无缝轮替凭据(IAM 令牌),而无需依赖静态密码。
如需了解如何为 Memorystore 集群设置 IAM 身份验证,请参阅管理 IAM 身份验证。
Redis 的 IAM 身份验证
使用 IAM 身份验证时,不会直接向最终用户授予 Memorystore 集群访问权限。而是会将权限分组到各个角色中,然后将这些角色授予主账号。如需了解详情,请参阅 IAM 概览。
通过 IAM 进行身份验证的管理员可以使用 Memorystore IAM 身份验证,通过 IAM 政策集中管理其实例的访问权限控制。 IAM 政策涉及以下实体:
主账号。在 Memorystore 中,您可以使用两种类型的主账号:用户账号和服务帐号(用于应用)。IAM 身份验证尚不支持其他主账号类型,例如 Google 群组、Google Workspace 网域或 Cloud Identity 网域。如需了解详情, 请参阅与身份相关的概念。
角色。对于 Memorystore IAM 身份验证,用户需要 redis.clusters.connect 权限才能通过集群进行身份验证。如需获取此权限,您可以将用户或服务帐号绑定到预定义的 Redis Cluster DB Connection User (roles/redis.dbConnectionUser) 角色。如需详细了解 IAM 角色,请参阅角色。
资源。主账号有权访问的资源是 Memorystore 集群。默认情况下,IAM 政策绑定在项目级层应用,以便主账号获得项目中所有 Memorystore 实例的角色权限。不过,IAM 政策绑定可以限制为特定集群。如需了解相关说明,请参阅 管理 IAM 身份验证的权限。
Redis AUTH 命令
IAM 身份验证功能使用 Redis AUTH 命令与 IAM 集成,允许客户端提供 IAM 访问令牌,该令牌将由 Memorystore 集群进行验证,然后才允许访问数据。
和每个命令一样,除非启用了 传输加密,否则 AUTH 命令会以未加密的形式发送。
如需查看 AUTH 命令的示例,请参阅连接到使用 IAM 身份验证的 Redis 集群。
IAM 访问令牌时间范围
默认情况下,您在身份验证过程中检索到的 IAM 访问令牌会在检索后一小时过期。或者,您在生成访问令牌时,可以将 令牌的到期时间延长至最多 12 小时。
建立新的 Redis 连接时,您必须使用 AUTH 命令提供有效的访问令牌。如果令牌过期,则必须获取新令牌才能建立新连接。不过,如果您已对现有连接进行身份验证,即使令牌过期,该连接也会继续正常运行。
终止经过身份验证的连接
如果您想终止连接,请使用 Redis CLIENT KILL 命令。如需查找要终止的连接,请先运行 CLIENT LIST,该命令会按时间顺序返回客户端连接。然后,您可以运行 CLIENT KILL 来终止连接。
启用 IAM 身份验证
启用 IAM 身份验证不会降低稳态性能。不过,它会影响您建立连接的速率。
启用 IAM 身份验证会限制每秒建立的客户端连接速率。这是因为 Google Cloud 的 IAM 身份验证必须对每个新连接进行身份验证。在稳态下,应用会启用连接池,因此这种影响可以忽略不计。不过,当客户端应用通过部署或反弹处理进行刷新时,可能会再次建立大量连接。 如果您逐步更新客户端并实现指数退避,则可以吸收这种降低的速率。
如需查看有关如何使用 IAM 身份验证的代码示例,请参阅 IAM 身份验证和传输加密代码示例。
安全性与隐私权
IAM 身份验证有助于确保您的 Redis 集群只能由经过授权的 IAM 主账号访问。除非启用了传输加密,否则系统不会提供 TLS 加密。因此,建议在使用 IAM 身份验证时启用传输加密。
通过 Compute Engine 虚拟机连接
如果您使用 Compute Engine 虚拟机 连接到使用 IAM 身份验证的实例,则必须为您的项目启用以下访问权限范围和 API:
Cloud Platform API 范围 。如需了解如何启用此范围,请参阅服务帐号并更新访问权限范围。如需了解此访问权限范围的最佳实践,请参阅范围最佳实践。
Memorystore for Redis Cluster API 。如需获取启用该 API 的链接,请点击以下按钮:
Memorystore for Redis Cluster