本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
了解 rds_superuser 角色
在 Postgre 中SQL,角色可以定義使用者、群組或一組特定許可,授予群組或使用者資料庫中各種物件。將 命令發佈SQL至 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'
除非另有指定ROLE,否則屬性 NOSUPERUSER
、INHERIT
、 NOREPLICATION
和 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_backend
或pg_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
並非資料庫使用者角色 (無法登入),但其具有許多其他角色的權限。您還可以看到資料庫使用者 postgres
是 rds_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 對持續改善安全性的承諾。
如果您的應用程式受到上述增強功能的影響,請更新應用程式中的個別邏輯。