View a markdown version of this page

了解 rds_superuser 角色 - Amazon Relational Database Service

了解 rds_superuser 角色

在 PostgreSQL 中,角色可以针对数据库中的各种对象定义一个用户、一个组或一组授予组或用户的特定权限。PostgreSQL 命令 CREATE USER 和 CREATE GROUP 已替换为更通用的 CREATE ROLE,并使用特定属性来区分数据库用户。数据库用户可以被视为具有 LOGIN 权限的角色。

注意

仍然可以使用 CREATE USER 和 CREATE GROUP 命令。有关更多信息,请参阅 PostgreSQL 文档中的数据库角色。

postgres 用户是您的 RDS for PostgreSQL 数据库实例上权限最高的数据库用户。它具有以下 CREATE ROLE 语句所定义的特征。

CREATE ROLE postgres WITH LOGIN NOSUPERUSER INHERIT CREATEDB CREATEROLE NOREPLICATION VALID UNTIL 'infinity'

属性 NOSUPERUSER、NOREPLICATION、INHERIT 和 VALID UNTIL 'infinity' 是 CREATE ROLE 的默认选项,除非另有说明。

默认情况下,postgres 拥有授予 rds_superuser 角色的权限以及创建角色和数据库的权限。rds_superuser 角色允许 postgres 用户执行以下操作:

  • 添加可用于 Amazon RDS 的扩展。有关更多信息,请参阅 使用 Amazon RDS for PostgreSQL 支持的 PostgreSQL 功能

  • 为用户创建角色并向用户授予权限。有关更多信息,请参阅 PostgreSQL 文档中的 CREATE ROLE 和 GRANT。

  • 创建数据库。有关更多信息,请参阅 PostgreSQL 文档中的 CREATE DATABASE。

  • 将 rds_superuser 权限授予没有这些权限的用户角色,并根据需要撤销权限。建议您仅向执行超级用户任务的那些用户授予此角色。换句话说,您可以将此角色授予数据库管理员 (DBA) 或系统管理员。

  • 向没有 rds_superuser 角色的数据库用户授予(和撤销)rds_replication 角色。

  • 向没有 rds_superuser 角色的数据库用户授予(和撤销)rds_password 角色。

  • 通过使用 pg_stat_activity 视图获取有关所有数据库连接的状态信息。需要时,rds_superuser 可以通过使用 pg_terminate_backend 或 pg_cancel_backend 停止任何连接。

在 CREATE ROLE postgres... 语句中,您可以看到 postgres 用户角色明确禁止 PostgreSQL superuser 权限。RDS for PostgreSQL 是一项托管服务,因此您无法访问主机操作系统,也无法使用 PostgreSQL superuser 账户进行连接。许多需要独立 PostgreSQL 上的 superuser 访问权限的任务都由 Amazon RDS 自动管理。

有关授权权限的更多信息,请参阅 PostgreSQL 文档中的 GRANT。

rds_superuser 角色是 中的几个预定义角色之一。RDS for PostgreSQL 数据库实例。

注意

在 PostgreSQL 13 和更早版本中,预定义角色称为默认角色。

在下面的列表中,您可以找到为新 自动创建的一些其他预定义角色。RDS for PostgreSQL 数据库实例。无法更改预定义角色及其权限。无法删除、重命名或修改这些预定义角色的权限。此类尝试会导致错误。

  • rds_password – 可以为数据库用户更改密码和设置密码限制的角色。默认情况下,rds_superuser 角色被授予此角色,并且可以将此角色授予数据库用户。有关更多信息,请参阅 控制用户对 PostgreSQL 数据库的访问。

    • 对于早于 14 的 RDS for PostgreSQL 版本,rds_password 角色可以为数据库用户和具有 rds_superuser 角色的用户更改密码和设置密码限制。在 RDS for PostgreSQL 14 及更高版本中,rds_password 角色只能为数据库用户更改密码和设置密码限制。只有具有 rds_superuser 角色的用户才能对具有 rds_superuser 角色的其他用户执行这些操作。

  • rdsadmin – 具有 superuser 权限的管理员将对独立的 PostgreSQL 数据库执行许多管理任务,此角色专为处理这些管理任务而创建。此角色由 RDS for PostgreSQL 在内部用于许多管理任务。

  • rdstopmgr – Amazon RDS 在内部用于支持多可用区部署的角色。

  • rds_reserved – Amazon RDS 在内部用于保留数据库连接的角色。