查看角色及其权限 - Amazon Aurora

查看角色及其权限

根据您的 PostgreSQL 版本,您可以使用不同的命令在 RDS for PostgreSQL 数据库实例中查看预定义角色及其权限。

对于 PostgreSQL 15 及更早版本

连接到 RDS for PostgreSQL 数据库实例,并在 psql 中使用 \du 命令:

postgres=> \du List of roles Role name | Attributes | Member of -----------------+------------------------------------------------------------+------------------------------------------------------ postgres | Create role, Create DB +| {rds_superuser} | Password valid until infinity | rds_ad | Cannot login | {} rds_iam | Cannot login | {} rds_password | Cannot login | {} rds_replication | Cannot login | {} rds_superuser | Cannot login | {pg_monitor,pg_signal_backend,rds_password,rds_replication} rdsadmin | Superuser, Create role, Create DB, Replication, Bypass RLS+| {} | Password valid until infinity |

对于 PostgreSQL 16 及更高版本

从 PostgreSQL 16 开始,可以使用 \drg+ 命令来查看详细的角色成员资格信息:

postgres=> \drg+ List of role grants Role name | Member of | Options | Grantor ---------------+-----------------------------+---------------------+---------- postgres | rds_superuser | INHERIT, SET | rdsadmin rds_superuser | pg_checkpoint | ADMIN, INHERIT, SET | rdsadmin rds_superuser | pg_monitor | ADMIN, INHERIT, SET | rdsadmin rds_superuser | pg_signal_backend | ADMIN, INHERIT, SET | rdsadmin rds_superuser | pg_use_reserved_connections | ADMIN, INHERIT, SET | rdsadmin rds_superuser | rds_password | ADMIN, INHERIT, SET | rdsadmin rds_superuser | rds_replication | ADMIN, INHERIT, SET | rdsadmin

要检查角色成员资格,无论 PostgreSQL 版本如何,都可以使用以下 SQL 查询:

SELECT m.rolname AS "Role name", r.rolname AS "Member of" FROM pg_catalog.pg_roles m JOIN pg_catalog.pg_auth_members pam ON (pam.member = m.oid) LEFT JOIN pg_catalog.pg_roles r ON (pam.roleid = r.oid) LEFT JOIN pg_catalog.pg_roles g ON (pam.grantor = g.oid) WHERE m.rolname !~ '^pg_' ORDER BY 1, 2;

在输出中,您可以看到 rds_superuser 不是数据库用户角色(无法登录),但它具有许多其他角色的权限。您还可以看到数据库用户 postgresrds_superuser 角色的成员。如前所述,postgres 是 Amazon RDS 控制台的 Create database(创建数据库)页面中的默认值。如果您选择了另一个名称,则该名称将显示在角色列表中。