本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
控制使用者對 Postgre SQL 資料庫的存取
Postgre SQL 中的新資料庫一律以資料庫public
結構描述中的一組預設權限建立,允許所有資料庫使用者和角色建立物件。例如,這些權限可讓資料庫使用者連接至資料庫,並在連線時建立暫存資料表。
RDS為了更好地控制使用者對於 Postgre 資料庫執行個體上建立之資料SQL庫執行個體的存取權,建議您撤銷這些預設public
權限。完成此作業後,您可更精細地為資料庫使用者授予特定權限,如下列程序所示。
如要設定新資料庫執行個體的角色和權限
假設您在新建立的 執行個體設定資料SQL庫,以供多位研究人員使用,所有研究人員都需要資料庫的讀寫存取權。
使用
psql
(或pgAdmin) 連線至 適用RDS於 Postgre 資SQL料庫執行個體:psql --host=
your-db-instance.666666666666
.aws-region
.rds.amazonaws.com --port=5432 --username=postgres --password出現提示時,輸入您的密碼。
psql
用戶端連接並顯示預設管理連接資料庫postgres=>
作為提示。如要防止資料庫使用者在
public
結構描述中建立物件,請執行下列動作:postgres=>
REVOKE CREATE ON SCHEMA public FROM PUBLIC;
REVOKE
接下來,您會建立新的資料庫執行個體:
postgres=>
CREATE DATABASE
lab_db
;CREATE DATABASE
從此新資料庫上
PUBLIC
結構描述撤消所有權限。postgres=>
REVOKE ALL ON DATABASE
lab_db
FROM public;REVOKE
建立一個資料庫使用者的角色。
postgres=>
CREATE ROLE
lab_tech
;CREATE ROLE
使具有此角色的資料庫使用者可連接至資料庫。
postgres=>
GRANT CONNECT ON DATABASE
lab_db
TOlab_tech
;GRANT
授予具
lab_tech
角色的所有使用者此資料庫的所有權限。postgres=>
GRANT ALL PRIVILEGES ON DATABASE
lab_db
TOlab_tech
;GRANT
建立資料庫使用者,如下所示:
postgres=>
CREATE ROLE lab_user1 LOGIN PASSWORD 'change_me';
CREATE ROLE
postgres=>
CREATE ROLE lab_user2 LOGIN PASSWORD 'change_me';
CREATE ROLE
-
授予這兩個使用者與 lab_tech 角色關聯的權限:
postgres=>
GRANT lab_tech TO lab_user1;
GRANT ROLE
postgres=>
GRANT lab_tech TO lab_user2;
GRANT ROLE
至此,lab_user1
和 lab_user2
便可連接 lab_db
資料庫。此範例並未遵循企業使用的最佳實務,其中可能包括建立多個資料庫執行個體、不同的結構描述,及授予有限的權限。如需詳細資訊和其他案例,請參閱管理 Postgre SQL 使用者與角色
如需 Postgre 資SQL料庫中權限的詳細資訊,請參閱 Postgre 文SQL件中的GRANT