了解 rds_superuser 角色 - Amazon Aurora

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

了解 rds_superuser 角色

於 PostgreSQL 中,角色可定義使用者、群組或授予群組或使用者對資料庫中各種物件的一組特定權限。CREATE USERCREATE GROUP 的 PostgreSQL 命令已為更為通用的 CREATE ROLE 所取代,其具有可區分資料庫使用者的特定屬性。資料庫使用者可視為具有 LOGIN 權限的角色。

注意

CREATE USERCREATE GROUP 命令仍可使用。如需詳細資訊,請參閱 PostgreSQL 文件中的資料庫角色

postgres 使用者是 Aurora PostgreSQL 資料庫叢集上具最高權限的資料庫使用者。其具有下列 CREATE ROLE 陳述式所定義的特性。

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

屬性 NOSUPERUSERNOREPLICATIONINHERIT,和 VALID UNTIL 'infinity' 為 CREATE ROLE 的預設選項,除非另有指定。

根據預設,postgres 具有授與 rds_superuser 角色的權限,以及建立角色和資料庫的許可。rds_superuser 角色可讓 postgres 使用者執行下列動作:

  • 新增可與 Aurora PostgreSQL。如需詳細資訊,請參閱 使用擴充功能和外部資料包裝函式

  • 建立使用者的角色,並授予使用者權限。如需詳細資訊,請參閱 PostgreSQL 文件中的 CREATE ROLEGRANT

  • 建立資料庫。如需詳細資訊,請參閱 PostgreSQL 文件中的 CREATE DATABASE

  • rds_superuser 權限授予並無這些權限的使用者角色,並視需要撤銷這些權限。建議您僅將此角色授予執行超級使用者任務的使用者。換句話說,您可以將此角色授予資料庫管理員 (DBA) 或系統管理員。

  • 對不具 rds_replication 角色的資料庫使用者授予 (和撤銷) rds_superuser 角色。

  • 對不具 rds_password 角色的資料庫使用者授予 (和撤銷) rds_superuser 角色。

  • 使用 pg_stat_activity 檢視,取得有關所有資料庫連線的狀態資訊。如有需要,rds_superuser 可使用 pg_terminate_backendpg_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 對持續改善安全性的承諾。

如果您的應用程式受到上述增強功能的影響,請更新應用程式中的個別邏輯。