此方法通过 标准 PostgreSQL 用户角色(每个 AlloyDB 集群都支持)来补充数据库身份验证。如果您在集群上启用基于 IAM 的身份验证,则可以使用 IAM 或 PostgreSQL 用户角色对该集群进行身份验证。
默认情况下,AlloyDB 实例未启用基于 IAM 的身份验证。您可以采取措施来启用 IAM 登录,并设置基于 IAM 的单独数据库用户:
您必须在 IAM 用户或服务账号需要连接到的每个实例上手动启用 IAM 身份验证。
对于需要以数据库用户身份登录的每个 IAM 用户或服务账号,您都必须完成以下步骤:
使用 IAM 管理员工具,向该用户或服务账号授予
alloydb.databaseUser
和serviceusage.serviceUsageConsumer
角色。使用 Google Cloud CLI,创建与 AlloyDB 集群中的相应用户或服务账号对应的数据库用户。
使用数据库管理员账号(例如
postgres
),向新数据库用户授予对相应数据库表的访问权限。
每当您需要向 AlloyDB 集群添加更多 IAM 用户时,都可以根据需要重复后面的步骤。
本页的其余部分将详细介绍这些步骤。
启用或停用 IAM 身份验证
如需在实例上启用 IAM 身份验证,请将该实例上的 alloydb.iam_authentication
标志设为 on
。
如需在实例上停用 IAM 身份验证,请将 alloydb.iam_authentication
恢复为默认值 off
。
如需详细了解如何在 AlloyDB 实例上设置标志,请参阅配置实例的数据库标志。
向 IAM 用户或服务账号授予对实例的访问权限
为新数据库用户启用 IAM 身份验证访问权限是一个两步流程:
更新项目的 IAM 设置,向相应的 IAM 用户或服务账号授予对 AlloyDB 数据库的访问权限。
在集群上创建一个新的数据库用户,并将用户名设置为 IAM 用户或服务账号的电子邮件地址。
您可以根据需要重复第二步,以向 IAM 定义的账号授予对项目中其他集群的访问权限。
更新具有适当角色的 IAM 账号
您可以向 IAM 用户或服务账号授予以下 IAM 角色,让其能够对 AlloyDB 实例进行身份验证:
alloydb.databaseUser
serviceusage.serviceUsageConsumer
为此,请按照向其他用户授予访问权限中的说明操作。在选择要授予 IAM 主账号的角色的步骤中,选择 alloydb.databaseUser
。
将 IAM 用户或服务账号添加到集群
控制台
前往集群页面。
点击您要将用户添加到的集群的名称。
点击用户。
点击添加用户账号。
选择 Cloud IAM。
在 Principal(正文)字段中,输入 IAM 正文。
对于 IAM 用户账号,请提供用户账号的完整电子邮件地址。例如
kai@altostrat.com
。对于 IAM 服务账号,请提供服务账号的地址(不带
.gserviceaccount.com
后缀)。例如,若要指定服务账号my-service@my-project.iam.gserviceaccount.com
,您应在此处使用值my-service@my-project.iam
。点击添加。
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 用户或服务账号
控制台
前往集群页面。
点击您要从中移除用户的集群的名称。
点击用户。
在代表要移除的用户的行中,点击
打开适用于此用户的操作。选择移除。
在移除用户账号?对话框中,点击移除。
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
。