IAM 身份验证简介

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 集成,允许客户端提供将由 Memorystore 集群验证的 IAM 访问令牌,然后才能访问数据。

与所有命令一样,除非启用传输中加密,否则 AUTH 命令会以未加密的形式发送。

如需查看 AUTH 命令的示例,请参阅连接到使用 IAM 身份验证的 Redis 集群

IAM 访问令牌时间范围

默认情况下,您在身份验证过程中检索到的 IAM 访问令牌会在检索到后一小时过期。或者,您可以在生成访问令牌时定义访问令牌的过期时间。

建立新的 Redis 连接时,您必须使用 AUTH 命令提供有效的访问令牌。如果令牌过期,您必须获取新令牌才能建立新连接。不过,如果您已对现有连接进行身份验证,即使令牌过期,该连接仍可继续正常运行。

结束已通过身份验证的连接

如果您想结束连接,请使用 Redis CLIENT KILL 命令。如需查找要结束的连接,请先运行 CLIENT LIST,该命令会按时间顺序返回客户端连接。然后,您可以运行 CLIENT KILL 来结束连接。

启用 IAM 身份验证

启用 IAM 身份验证不会降低稳态性能。不过,它确实会影响您建立连接的速率。

启用 IAM 身份验证会限制每秒建立的客户端连接数。这是因为 Google Cloud 的 IAM 身份验证必须对每个新连接进行身份验证。在稳定状态下,应用会启用连接池,因此这种影响可以忽略不计。不过,当客户端应用通过部署或反弹处理进行刷新时,可能会再次建立大量连接。如果您逐步更新客户端并实现指数退避,则可以承受这种降低的速率。

如需查看有关如何使用 IAM 身份验证的代码示例,请参阅 IAM 身份验证和传输中加密代码示例

安全性与隐私权

借助 IAM 身份验证,您可以确保只有经过授权的 IAM 主账号才能访问您的 Redis 集群。除非启用传输加密,否则系统不会提供 TLS 加密。因此,建议在使用 IAM 身份验证时启用传输中加密。

通过 Compute Engine 虚拟机建立连接

如果您使用 Compute Engine 虚拟机连接到使用 IAM 身份验证的实例,则必须为项目启用以下访问权限范围和 API: