了解 rds_superuser 角色
在 PostgreSQL 中,角色可以针对数据库中的各种对象定义一个用户、一个组或一组授予组或用户的特定权限。PostgreSQL 命令 CREATE USER 和 CREATE GROUP 已替换为更通用的 CREATE ROLE,并使用特定属性来区分数据库用户。数据库用户可以被视为具有 LOGIN 权限的角色。
注意
仍然可以使用 CREATE USER 和 CREATE GROUP 命令。有关更多信息,请参阅 PostgreSQL 文档中的数据库角色
postgres 用户是您的 Aurora 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 用户执行以下操作:
-
添加可用于 Aurora 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 权限。Aurora PostgreSQL 是一项托管服务,因此您无法访问主机操作系统,也无法使用 PostgreSQL superuser 账户进行连接。许多需要独立 PostgreSQL 上的 superuser 访问权限的任务都由 Aurora 自动管理。
有关授权权限的更多信息,请参阅 PostgreSQL 文档中的 GRANT
rds_superuser 角色是 Aurora PostgreSQL 数据库集群中的几个预定义角色之一。
注意
在 PostgreSQL 13 和更早版本中,预定义角色称为默认角色。
在下面的列表中,您可以找到为新 Aurora 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 数据库执行许多管理任务,此角色专为处理这些管理任务而创建。此角色由 Aurora PostgreSQL 在内部用于许多管理任务。
注意
Aurora PostgreSQL 版本 15.2 和 14.7 引入了 rds_superuser 角色的限制行为。Aurora PostgreSQL 用户需要在相应的数据库上获得 CONNECT 权限才能连接,即使向该用户授予了 rds_superuser 角色也是如此。在 Aurora PostgreSQL 版本 14.7 和 15.2 之前,如果向用户授予了 rds_superuser 角色,则用户可以连接到任何数据库和系统表。这种限制行为符合 Amazon 的要求和 Amazon Aurora 对持续改善安全性的承诺。
如果上述增强功能有影响,请更新应用程序中的相应逻辑。