管理 AlloyDB 用户角色

本页介绍了 AlloyDB for PostgreSQL 如何与 PostgreSQL 用户角色配合使用。

AlloyDB 中的用户角色简介

AlloyDB 数据库使用 PostgreSQL 的标准角色概念。角色可以充当数据库用户或一组用户,或同时充当这两者。

用户角色具有 LOGIN 特权,可让用户登录系统。群组角色包含具有各种权限的成员角色,您可以一次性向所有成员授予或从所有成员撤消这些权限。

AlloyDB 预定义的 PostgreSQL 角色

PostgreSQL 具有一组具有各种权限的预定义角色。AlloyDB 会向这组 PostgreSQL 预定义角色添加多个用户和群组角色。

下表列出了 AlloyDB 预定义的 PostgreSQL 角色:

角色名称 权限
alloydbsuperuser CREATEROLECREATEDBLOGIN
postgres CREATEROLECREATEDBLOGIN
alloydbimportexport CREATEROLECREATEDB
alloydbagent CREATEROLECREATEDB
alloydbreplica REPLICATION
alloydbiamuser 默认情况下,此角色没有任何权限。

以下部分介绍了一些最常用的 AlloyDB 专用角色。

alloydbsuperuser 群组角色

alloydbsuperuser 角色是一种预定义角色,用于初始设置数据库系统和执行其他超级用户任务。此角色具有以下权限:

  • 创建需要超级用户权限的扩展程序
  • 创建事件触发器
  • 创建复制用户
  • 创建复制发布和订阅

作为一项托管式服务,AlloyDB 不允许您向用户授予 PostgreSQL superuser 角色。不过,您可以通过向任何数据库用户角色授予 alloydbsuperuser 角色来向其授予 AlloyDB 超级用户权限。

postgres 用户角色

postgres 用户属于 alloydbsuperuser 角色。创建 AlloyDB 集群时,您需要为 postgres 用户角色分配密码。然后,您可以使用 postgres 用户角色登录系统,以创建数据库、其他角色等。

alloydbimportexport 用户角色

创建 AlloyDB 集群时,系统会创建默认用户 alloydbimportexport,并为其授予导入和导出操作所需的一组最低权限。

您可以选择自行创建用户来执行这些操作。如果您未创建自定义 alloydbimportexport 用户,系统将使用默认 alloydbimportexport 用户执行导入和导出操作。

alloydbimportexport 用户是系统用户;您无法直接使用 alloydbimportexport 用户在 PostgreSQL 数据库中登录或执行其他操作。

alloydbiamuser 群组角色

alloydbiamuser 群组角色中的数据库用户通过使用身份和访问管理(IAM)对 AlloyDB 实例进行身份验证,而不是使用基于密码的标准 PostgreSQL 身份验证。

AlloyDB 不允许您使用 GRANT PostgreSQL 命令或类似方法向用户授予此角色。不过,您可以使用 AlloyDB 管理工具来创建和管理基于 Identity and Access Management 的数据库用户。如需了解详情,请参阅管理 IAM 身份验证

在 AlloyDB 中创建其他 PostgreSQL 用户

您可以创建其他 PostgreSQL 用户或角色。这些用户拥有与 postgres 用户相同的一组权限:CREATE ROLECREATEDBLOGIN。如需详细了解这些特权,请参阅 CREATE ROLE

您可以使用 ALTER ROLE 命令更改任何用户的权限。如果您使用 psql 客户端创建新用户,则可以选择将其与其他角色相关联,或分配不同的权限。

管理用户

您可以使用 Google Cloud CLI 或 PostgreSQL 命令创建和管理 AlloyDB 用户角色。以下部分将展示使用这两种方法执行常见用户管理任务。

准备工作

如需使用 PostgreSQL 命令管理集群中的用户,您需要满足以下条件:

  • 有权访问 psql 客户端
  • postgres 数据库用户或具有适当管理员权限的其他用户角色的访问权限

若要使用 Google Cloud 控制台或 Google Cloud CLI 管理集群中的用户,该集群必须有一个主实例。如果您的集群没有主实例,则必须先创建一个主实例,然后才能管理用户。

创建数据库用户

如需创建直接使用用户名和密码(也称为内置身份验证)与数据库进行身份验证的数据库用户,请按照本部分中的步骤操作。

如需改为创建使用 Identity and Access Management 进行身份验证的数据库用户,请参阅管理 IAM 身份验证

控制台

  1. 前往集群页面。

    转到集群

  2. 点击您要向其中添加用户的集群的名称。

  3. 点击用户

  4. 点击添加用户账号

  5. 内置身份验证保持选中状态。

您可以改为选择 Cloud IAM,以创建使用 IAM 进行身份验证的数据库用户。若选择此选项,您需要执行额外的步骤来准备项目并向新的数据库用户授予适当的权限。如需了解详情,请参阅管理 IAM 身份验证

  1. 为新用户输入用户名和密码。

  2. 点击 Add(添加)。

psql

CREATE USER USERNAME WITH PASSWORD 'PASSWORD';

如需详细了解如何创建和定义数据库用户,请参阅 CREATE USER

创建用户角色后,您可以在 psql 客户端中使用 ALTER ROLE 命令更改其权限。

gcloud

使用 gcloud alloydb users create 命令:

gcloud alloydb users create USERNAME \
--password=PASSWORD \
--cluster=CLUSTER_ID \
--region=REGION_ID

替换以下内容:

  • USERNAME:新用户角色的用户名。

  • PASSWORD:新用户角色的密码。如需创建无密码的用户,请省略此参数。

  • CLUSTER_ID:要向其中添加新用户角色的集群的 ID。

  • REGION_ID:集群所在区域的 ID,例如 us-central1

创建用户角色后,您可以使用 gcloud alloydb users set-roles 命令更改其权限。

您还可以在创建用户时向其授予角色或超级用户权限。为此,请添加 --db-roles--superuser 参数,如以下部分所述。

向数据库用户授予角色

控制台

如需向数据库用户授予角色,请使用 psql 或 gcloud CLI,而不是 Google Cloud 控制台。

psql

GRANT ROLE to USERNAME;

如需向用户授予超级用户权限,请向该用户授予 alloydbsuperuser 角色。

gcloud

使用 gcloud alloydb users set-roles 命令指定您希望用户拥有的所有角色:

gcloud alloydb users set-roles USERNAME \
--db-roles=ROLES \
--cluster=CLUSTER_ID \
--region=REGION_ID

替换以下内容:

  • USERNAME:要向其授予角色的用户角色。

  • ROLES:您希望指定用户拥有的所有角色的逗号分隔列表。请务必列出您要分配给用户的所有角色,包括现有角色和新角色。

    如需查找分配给用户的现有角色列表,请运行以下命令:

    gcloud alloydb list users --cluster=CLUSTER_ID --region=REGION_ID
  • CLUSTER_ID:包含用户的集群的 ID。

  • REGION_ID:集群所在区域的 ID,例如 us-central1

如需向用户授予超级用户权限,您可以使用前面介绍的命令手动向该用户授予 alloydbsuperuser 角色,也可以使用 --superuser=true 参数运行 gcloud alloydb users set-superuser 命令:

gcloud alloydb users set-superuser USERNAME \
--superuser=true \
--cluster=CLUSTER_ID \
--region=REGION_ID

更改数据库用户的密码

如需为标准 PostgreSQL 数据库用户设置新密码,请按照本部分中的步骤操作。

您无法更改或设置基于 IAM 的用户的密码,因为基于 IAM 的用户不使用密码进行身份验证。如需了解详情,请参阅使用 IAM 账号进行连接

控制台

  1. 前往集群页面。

    转到集群

  2. 点击包含您要更改密码的数据库用户的集群的名称。

  3. 点击用户

  4. 在代表您要更改密码的用户的行中,点击 打开适用于此用户的操作

  5. 选择更改密码

  6. 指定密码:

    • 如需为此用户设置新密码,请在密码字段中输入密码。

    • 如需为此用户不设置密码,请选中无密码复选框。

  7. 点击确定

psql

ALTER USER USERNAME WITH PASSWORD 'PASSWORD';

如需详细了解如何更改用户的密码,请参阅 ALTER ROLE

gcloud

使用 gcloud alloydb users set-password 命令:

gcloud alloydb users set-password USERNAME \
--password=PASSWORD \
--cluster=CLUSTER_ID \
--region=REGION_ID

替换以下内容:

  • USERNAME:用户角色的用户名。

  • PASSWORD:要分配给用户角色的新密码。

  • CLUSTER_ID:用户角色所属的集群的 ID。

  • REGION_ID:集群所在区域的 ID,例如 us-central1

撤消数据库用户的角色

控制台

如需撤消数据库用户的角色,请使用 psql 或 gcloud CLI,而不是 Google Cloud 控制台。

psql

您可以撤消一个或多个角色之前授予的权限,也可以撤消用户对某个角色的成员资格。

REVOKE ROLE FROM USERNAME;

如需移除用户的超级用户权限,请从该用户撤消 alloydbsuperuser 角色。

gcloud

如需使用 Google Cloud CLI 撤消角色,请使用 gcloud alloydb users set-roles 命令指定您希望用户拥有的所有角色,并省略要从用户撤消的角色。

gcloud alloydb users set-roles USERNAME \
--db-roles=ROLES \
--cluster=CLUSTER_ID \
--region=REGION_ID

替换以下内容:

  • USERNAME:要撤消角色的用户角色。

  • ROLES:您希望指定用户拥有的所有角色的逗号分隔列表,其中省略了要撤消的角色。

    如需查找分配给用户的所有角色的列表,请运行以下命令:

    gcloud alloydb list users --cluster=CLUSTER_ID --region=REGION_ID
  • CLUSTER_ID:包含用户的集群的 ID。

  • REGION_ID:集群所在区域的 ID,例如 us-central1

如需撤消超级用户权限,您可以使用前面介绍的命令手动移除用户的 alloydbsuperuser 角色,也可以使用 --superuser=false 参数运行 gcloud alloydb users set-superuser 命令。

查看数据库用户列表

控制台

  1. 前往集群页面。

    转到集群

  2. 点击您要查看其用户的集群的名称。

  3. 点击用户

psql

\du 命令会输出一个包含所有数据库用户(包括其群组成员资格)的表格。

\du

gcloud

使用 gcloud alloydb users list 命令:

gcloud alloydb users list \
--cluster=CLUSTER_ID \
--region=REGION_ID

替换以下内容:

  • CLUSTER_ID:要列出用户的集群的 ID。

  • REGION_ID:集群所在区域的 ID,例如 us-central1

删除数据库用户

控制台

  1. 前往集群页面。

    转到集群

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

  3. 点击用户

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

  5. 选择移除

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

psql

在删除用户之前,您必须先放弃该用户拥有的所有对象或重新分配其所有权,并撤消该角色对其他对象拥有的任何特权。

DROP ROLE USERNAME;

gcloud

使用 gcloud alloydb users delete 命令:

gcloud alloydb users delete USERNAME \
--cluster=CLUSTER_ID \
--region=REGION_ID

替换以下内容:

  • USERNAME:要删除的用户角色。

  • CLUSTER_ID:要从中移除用户角色的集群的 ID。

  • REGION_ID:集群所在区域的 ID,例如 us-central1

后续步骤