管理 IAM 身份验证

本页介绍了如何准备 AlloyDB for PostgreSQL 实例,以便通过身份和访问权限管理 (IAM) 进行数据库身份验证。

IAM 身份验证通过标准 PostgreSQL 用户(每个 AlloyDB 集群都支持)对数据库身份验证进行补充。如果您在集群上启用 IAM 身份验证,则可以使用 IAM 或 PostgreSQL 用户角色对该集群进行身份验证。

默认情况下,AlloyDB 实例未启用 IAM 身份验证。如需启用 IAM 身份验证,请完成以下步骤:

每当您需要向 AlloyDB 集群添加更多 IAM 用户时,都可以重复上述步骤。

启用或停用 IAM 身份验证

如需在实例上启用 IAM 身份验证,请将该实例的 alloydb.iam_authentication 标志设为 on

如需在实例上停用 IAM 身份验证,请将 alloydb.iam_authentication 设回默认值 off

如需详细了解如何在 AlloyDB 实例上设置标志,请参阅配置实例的数据库标志

向 IAM 用户或服务账号授予对实例的访问权限

向新数据库用户授予 IAM 访问权限是一个两步流程:

  1. 更新项目的 IAM 设置,向相应的 IAM 用户或服务账号授予 AlloyDB 数据库访问权限。

  2. 在集群上创建新的数据库用户,并将用户名设置为 IAM 用户或服务账号的电子邮件地址。

您可以重复第 2 步,向 IAM 账号授予对项目中其他集群的访问权限。

更新具有适当角色的 IAM 账号

您可以向 IAM 用户或服务账号授予以下 IAM 角色,让其能够对 AlloyDB 实例进行身份验证:

  • alloydb.databaseUser:允许用户连接到您的 AlloyDB 实例。
  • serviceusage.serviceUsageConsumer:向用户授予对用于检查权限的 API 的访问权限。

为此,请按照向其他用户授予访问权限中的说明操作。在选择要授予 IAM 主账号的角色的步骤中,选择 alloydb.databaseUser

将 IAM 用户或服务账号添加到集群

控制台

  1. 前往集群页面。

    转到集群

  2. 点击您要将用户添加到的集群的名称。

  3. 点击用户

  4. 点击添加用户账号

  5. 选择 Cloud IAM

  6. Principal(正文)字段中,输入 IAM 正文。

    对于 IAM 用户账号,请提供用户账号的完整电子邮件地址。例如 kai@altostrat.com

    对于 IAM 服务账号,请提供不带 .gserviceaccount.com 后缀的服务账号地址。例如,如需指定服务账号 my-service@my-project.iam.gserviceaccount.com,您应在此处使用值 my-service@my-project.iam

  7. 点击添加

gcloud

如需根据 IAM 用户或服务账号创建 PostgreSQL 数据库用户,请使用 gcloud alloydb users create 命令

gcloud alloydb users create USERNAME \
--cluster=CLUSTER \
--region=REGION \
--type=IAM_BASED

执行以下变量替换操作:

  • USERNAME:您要添加为新数据库用户的 IAM 用户的标识符。

    对于 IAM 用户账号,请提供用户账号的完整电子邮件地址。例如 kai@altostrat.com

    对于 IAM 服务账号,请提供不带 .gserviceaccount.com 后缀的服务账号地址。例如,如需指定服务账号 my-service@my-project.iam.gserviceaccount.com,您应在此处使用值 my-service@my-project.iam

  • CLUSTER:要在其中创建此数据库用户账号的集群的 ID。

  • REGION:集群所在区域的 ID。例如 us-central1

向 IAM 用户授予适当的数据库权限

默认情况下,将 IAM 用户添加到数据库实例时,该新用户不会对任何数据库授予权限。

用户或服务账号连接到数据库时,可以针对已被授予 PUBLIC 访问权限的任何数据库对象运行查询。

如果他们需要其他访问权限,可以使用 GRANT PostgreSQL 语句授予更多权限。

GRANT SELECT ON TABLE_NAME TO "USERNAME";

执行以下变量替换操作:

  • USERNAME:用户的电子邮件地址。您必须在地址周围添加双引号。

  • TABLE_NAME:您要向用户授予访问权限的表的名称。

从集群中移除 IAM 用户或服务账号

控制台

  1. 前往集群页面。

    转到集群

  2. 点击您要从中移除用户的集群的名称。

  3. 点击用户

  4. 在代表要移除的用户的行中,点击 打开针对此用户的操作

  5. 选择移除

  6. 移除用户账号?对话框中,点击移除

gcloud

使用 gcloud alloydb users delete 命令

gcloud alloydb users delete USERNAME \
--cluster=CLUSTER \
--region=REGION

替换以下内容:

  • USERNAME:您要从集群中移除的 IAM 用户的标识符。

    对于 IAM 用户账号,请提供用户账号的完整电子邮件地址。例如 kai@altostrat.com

    对于 IAM 服务账号,请提供不带 .gserviceaccount.com 后缀的服务账号地址。例如,如需指定服务账号 my-service@my-project.iam.gserviceaccount.com,您应在此处使用值 my-service@my-project.iam

  • CLUSTER:要从中移除此用户的集群的 ID。

  • REGION:集群所在区域的 ID。例如 us-central1

后续步骤