了解 rds_superuser 角色
於 PostgreSQL 中,角色可定義使用者、群組或授予群組或使用者對資料庫中各種物件的一組特定權限。CREATE USER 和 CREATE GROUP 的 PostgreSQL 命令已為更為通用的 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_replication角色的資料庫使用者授予 (和撤銷)rds_superuser角色。 -
對不具
rds_password角色的資料庫使用者授予 (和撤銷)rds_superuser角色。 -
使用
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 角色行為。即使已將 rds_superuser 角色授予 Aurora PostgreSQL 使用者,使用者仍需被授予對應資料庫的 CONNECT 權限才能連線。在 Aurora PostgreSQL 14.7 和 15.2 版之前,只要已將 rds_superuser 角色授予使用者,該使用者就能夠連線到任何資料庫和系統資料表。這種限制性的行為合乎 AWS 和 Amazon Aurora 對於持續改善安全所做的承諾。
如果您的應用程式受到上述增強功能的影響,請更新應用程式中的個別邏輯。