了解 rds_superuser 角色 - Amazon Aurora

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

了解 rds_superuser 角色

在 Postgre 中SQL,角色可以定義使用者、群組或一組特定許可,授予群組或使用者資料庫中各種物件。將 命令發佈SQL至 CREATE USER,並CREATE GROUP已由更一般的 取代,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'

除非另有指定ROLE,否則屬性 NOSUPERUSERINHERITNOREPLICATION和 CREATE VALID UNTIL 'infinity'是 的預設選項。

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

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

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

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

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

  • 對不具 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 Postgre 資料庫叢集中幾個預先定義角色的其中一個。 SQL

注意

在 PostgreSQL 13 和更早版本中,預先定義的角色稱為預設角色。

在下列清單中,您可以找到自動為新的 Aurora PostgreSQL 資料庫叢集建立的一些其他預先定義角色。 預先定義的角色及其權限無法進行變更。您無法為這些預先定義角色停止、重新命名或修改權限。嘗試這麼做會造成錯誤。

  • rds_password – 可變更密碼並為資料庫使用者設定密碼約束的角色。根據預設,此rds_superuser角色會獲授予,並且可以將角色授予資料庫使用者。如需詳細資訊,請參閱控制使用者對 Postgre SQL 資料庫的存取

    • RDS 對於 14 之前的 PostgreSQL 版本,rds_password角色可以變更密碼,並為資料庫使用者和具有rds_superuser角色的使用者設定密碼限制。從 RDS for PostgreSQL 第 14 版及更新版本,rds_password角色只能變更密碼,並設定資料庫使用者的密碼限制。只有具有 rds_superuser 角色的使用者才能對具有 rds_superuser角色的其他使用者執行這些動作。

  • rdsadmin – 為處理具有superuser權限的管理員將在獨立 PostgreSQL 資料庫上執行的許多管理任務而建立的角色。此角色由 內部用於許多管理任務 PostgreSQL

若要查看所有預先定義的角色,您可以連線至適用於 PostgreSQL 資料庫執行個體的 Aurora Postgre 資料庫叢集的主要執行個體,並使用psql \du中繼命令。 輸出看似如下:

List of roles Role name | Attributes | Member of --------------+-----------------------------------+------------------------------------ postgres | Create role, Create DB +| {rds_superuser} | Password valid until infinity | rds_superuser | Cannot login | {pg_monitor,pg_signal_backend, | +| rds_replication,rds_password} ...

於輸出中,您可看到 rds_superuser 並非資料庫使用者角色 (無法登入),但其具有許多其他角色的權限。您還可以看到資料庫使用者 postgresrds_superuser 角色的成員。如前所述, postgres是 Amazon RDS主控台建立資料庫頁面中的預設值。若選擇其他名稱,則該名稱將顯示於角色清單中。

注意

Aurora PostgreSQL 15.2 版和 14.7 版引入rds_superuser了角色的限制行為。即使使用者獲授予 rds_superuser角色,Aurora PostgreSQL 使用者仍需要獲得對應資料庫的連線CONNECT許可。在 Aurora PostgreSQL 版本 14.7 和 15.2 之前,如果授予使用者rds_superuser角色,使用者便能夠連線到任何資料庫和系統資料表。這種限制行為符合 AWS 和 Amazon Aurora 對持續改善安全性的承諾。

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