本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
了解 rds_superuser 角色
在 Postgre 中SQL,角色可以針對資料庫中的各種物件,定義授與群組或使用者的使用者、群組或一組特定權限。Postgre SQL 命令CREATE GROUP
已被更一般的替換,CREATE ROLE
具有用於區分數據庫用戶的特定屬性。CREATE USER
資料庫使用者可視為具有LOGIN權限的角色。
注意
CREATE USER
和 CREATE GROUP
命令仍可使用。如需詳細資訊,請參閱 Postgre SQL 文件中的資料庫角色
使用者。其具有下列 CREATE ROLE
陳述式所定義的特性。
CREATE ROLE postgres WITH LOGIN NOSUPERUSER INHERIT CREATEDB CREATEROLE NOREPLICATION VALID UNTIL 'infinity'
除非另VALID UNTIL 'infinity'
有指定 NOSUPERUSER
NOREPLICATION
INHERIT
,否則屬性CREATEROLE、、和是的預設選項。
根據預設,postgres
具有授與 rds_superuser
角色的權限,以及建立角色和資料庫的許可。rds_superuser
角色可讓 postgres
使用者執行下列動作:
新增可與 Aurora 波斯特。SQL如需詳細資訊,請參閱使用擴充功能和外部資料包裝函式。
-
建立使用者的角色,並授予使用者權限。如需詳細資訊,請參閱 Postgre SQL 文件GRANT
中的CREATEROLE 和中的。 -
建立資料庫。如需詳細資訊,請參閱 Postgre SQL 文件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
戶角色具體不允許 Post SQL superuser
gre 權限。Postgre SQL RDS 的 Aurora 是一項託管服務,因此您無法訪問主機操作系統,也無法使用 Post SQL superuser
gre 帳戶進行連接。許多需要在獨立 Postgre 上superuser
存取的任務SQL都是由 Aurora 自動管理。
有關授予權限的更多信息,請參閱 Postgre SQL 文檔GRANT
此rds_superuser
角色是 Aurora Postgre SQL 資料庫叢集中數個預先定義的角色之一。
注意
在後 SQL 13 版和更早版本中,預先定義的角色稱為預設角色。
在下列清單中,您會找到為新的 Aurora Postgre SQL 資料庫叢集自動建立的其他一些預先定義角色。預先定義的角色及其權限無法進行變更。您無法為這些預先定義角色停止、重新命名或修改權限。嘗試這麼做會造成錯誤。
rds_password – 可變更密碼並為資料庫使用者設定密碼約束的角色。依預設,此
rds_superuser
角色會授與此角色,而且可以將角色授與資料庫使用者。如需詳細資訊,請參閱控制使用者對 Postgre SQL 資料庫的存取。對RDS於 14 以前的 Postgre SQL 版本,
rds_password
角色可以為資料庫使用者和具有rds_superuser
角色的使用者變更密碼並設定密碼限制。從 RDS Postgre SQL 版本 14 及更新版本開始,rds_password
角色只能針對資料庫使用者變更密碼並設定密碼限制。只有具有rds_superuser
角色的使用者可對具有角色的其他使用者執行這些動rds_superuser
作。
rdsadmin — 為處理許多具有
superuser
權限的管理員會在獨立 Post SQL gre 資料庫上執行的管理工作而建立的角色。
若要查看所有預先定義的角色,您可以連接至 Postgre 資料庫執行個體的 Aurora Postgre SQL 資料庫叢集的RDS主要。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 波斯特SQL版本 15.2 和 14.7 引入了限制性的作用行rds_superuser
為。即使將rds_superuser
角色授與SQL使用者,Aurora Postgre 使用者也需要獲得對應資料庫的CONNECT
權限才能進行連線。在 Aurora Postgre SQL 版本 14.7 和 15.2 之前,如果使用者被授與rds_superuser
角色,則使用者可以連線至任何資料庫和系統表格。這種限制性行為與 AWS 和 Amazon Aurora 承諾持續改善安全性。
如果您的應用程式受到上述增強功能的影響,請更新應用程式中的個別邏輯。