控制使用者對 Postgre SQL 資料庫的存取 - Amazon Relational Database Service

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

控制使用者對 Postgre SQL 資料庫的存取

Postgre SQL 中的新資料庫一律以資料庫public結構描述中的一組預設權限建立,允許所有資料庫使用者和角色建立物件。例如,這些權限可讓資料庫使用者連接至資料庫,並在連線時建立暫存資料表。

RDS為了更好地控制使用者對於 Postgre 資料庫執行個體上建立之資料SQL庫執行個體的存取權,建議您撤銷這些預設public權限。完成此作業後,您可更精細地為資料庫使用者授予特定權限,如下列程序所示。

如要設定新資料庫執行個體的角色和權限

假設您在新建立的 執行個體設定資料SQL庫,以供多位研究人員使用,所有研究人員都需要資料庫的讀寫存取權。

  1. 使用 psql (或pgAdmin) 連線至 適用RDS於 Postgre 資SQL料庫執行個體:

    psql --host=your-db-instance.666666666666.aws-region.rds.amazonaws.com --port=5432 --username=postgres --password

    出現提示時,輸入您的密碼。psql 用戶端連接並顯示預設管理連接資料庫 postgres=> 作為提示。

  2. 如要防止資料庫使用者在 public 結構描述中建立物件,請執行下列動作:

    postgres=> REVOKE CREATE ON SCHEMA public FROM PUBLIC; REVOKE
  3. 接下來,您會建立新的資料庫執行個體:

    postgres=> CREATE DATABASE lab_db; CREATE DATABASE
  4. 從此新資料庫上 PUBLIC 結構描述撤消所有權限。

    postgres=> REVOKE ALL ON DATABASE lab_db FROM public; REVOKE
  5. 建立一個資料庫使用者的角色。

    postgres=> CREATE ROLE lab_tech; CREATE ROLE
  6. 使具有此角色的資料庫使用者可連接至資料庫。

    postgres=> GRANT CONNECT ON DATABASE lab_db TO lab_tech; GRANT
  7. 授予具 lab_tech 角色的所有使用者此資料庫的所有權限。

    postgres=> GRANT ALL PRIVILEGES ON DATABASE lab_db TO lab_tech; GRANT
  8. 建立資料庫使用者,如下所示:

    postgres=> CREATE ROLE lab_user1 LOGIN PASSWORD 'change_me'; CREATE ROLE postgres=> CREATE ROLE lab_user2 LOGIN PASSWORD 'change_me'; CREATE ROLE
  9. 授予這兩個使用者與 lab_tech 角色關聯的權限:

    postgres=> GRANT lab_tech TO lab_user1; GRANT ROLE postgres=> GRANT lab_tech TO lab_user2; GRANT ROLE

至此,lab_user1lab_user2 便可連接 lab_db 資料庫。此範例並未遵循企業使用的最佳實務,其中可能包括建立多個資料庫執行個體、不同的結構描述,及授予有限的權限。如需詳細資訊和其他案例,請參閱管理 Postgre SQL 使用者與角色

如需 Postgre 資SQL料庫中權限的詳細資訊,請參閱 Postgre 文SQL件中的GRANT命令。