了解 rds_superuser 角色 - Amazon Aurora

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

了解 rds_superuser 角色

在 Postgre 中SQL,角色可以針對資料庫中的各種物件,定義授與群組或使用者的使用者、群組或一組特定權限。Postgre SQL 命令CREATE GROUP已被更一般的替換,CREATE ROLE具有用於區分數據庫用戶的特定屬性。CREATE USER資料庫使用者可視為具有LOGIN權限的角色。

注意

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

使用者。其具有下列 CREATE ROLE 陳述式所定義的特性。

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

除非另VALID UNTIL 'infinity'有指定 NOSUPERUSER NOREPLICATIONINHERIT,否則屬性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_backendpg_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 並非資料庫使用者角色 (無法登入),但其具有許多其他角色的權限。您還可以看到資料庫使用者 postgresrds_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 承諾持續改善安全性。

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