本頁說明如何準備 AlloyDB for PostgreSQL 執行個體,以便透過 Identity and Access Management (IAM) 進行資料庫驗證。
IAM 驗證功能可透過標準 PostgreSQL 使用者輔助資料庫驗證,每個 AlloyDB 叢集都支援這項功能。如果您在叢集上啟用 IAM 驗證,則可以使用 IAM 或 PostgreSQL 使用者角色向該叢集進行驗證。
根據預設,AlloyDB 執行個體不會啟用 IAM 驗證。如要啟用 IAM 驗證,請完成下列步驟:
手動啟用 IAM 驗證,讓 IAM 使用者或服務帳戶連線至每個執行個體。
如要讓每個 IAM 使用者或服務帳戶以資料庫使用者的身分登入,請完成下列步驟:
使用 IAM 管理員工具,將
alloydb.databaseUser
和serviceusage.serviceUsageConsumer
角色授予該使用者或服務帳戶。使用 Google Cloud CLI,在 AlloyDB 叢集上建立對應的使用者或服務帳戶的資料庫使用者。
使用資料庫管理員帳戶 (例如
postgres
),授予新的資料庫使用者適當的資料庫表存取權。
如要將其他 IAM 使用者新增至 AlloyDB 叢集,請重複這些步驟。
啟用或停用 IAM 驗證
如要在執行個體上啟用 IAM 驗證,請將該執行個體上的alloydb.iam_authentication
旗標設為 on
。
如要在執行個體上停用 IAM 驗證,請將 alloydb.iam_authentication
設回預設值 off
。
如要進一步瞭解如何設定 AlloyDB 執行個體的標記,請參閱「設定執行個體的資料庫旗標」。
將執行個體的存取權授予 IAM 使用者或服務帳戶
如要為新資料庫使用者啟用 IAM 存取權,請按照下列兩步驟操作:
更新專案的 IAM 設定,授予適當的 IAM 使用者或服務帳戶 AlloyDB 資料庫存取權。
在叢集上建立新的資料庫使用者,並將使用者名稱設為 IAM 使用者或服務帳戶的電子郵件地址。
您可以重複執行步驟 2,將 IAM 帳戶存取權授予專案中的其他叢集。
更新 IAM 帳戶,使其具備適當角色
您可以授予下列 IAM 角色,讓 IAM 使用者或服務帳戶能夠向 AlloyDB 執行個體進行驗證:
alloydb.databaseUser
:讓使用者連線至 AlloyDB 執行個體。serviceusage.serviceUsageConsumer
:提供使用者存取 API 的權限,以檢查權限。
如要這麼做,請按照「授予其他使用者存取權」一文中的操作說明進行。在選取要授予 IAM 主體的角色時,請選擇 alloydb.databaseUser
。
在叢集中新增 IAM 使用者或服務帳戶
控制台
前往「Clusters」(叢集) 頁面。
按一下要新增使用者的叢集名稱。
按一下「Users」(使用者)。
按一下「Add user account」(新增使用者帳戶)。
選取「Cloud IAM」。
在「Principal」(主體) 欄位中,輸入 IAM 主體。
如果是 IAM 使用者帳戶,請提供使用者帳戶的完整電子郵件地址。例如
kai@altostrat.com
。如果是 IAM 服務帳戶,請提供服務帳戶的地址,不要加上
.gserviceaccount.com
後置字元。舉例來說,如要指定服務帳戶my-service@my-project.iam.gserviceaccount.com
,請在此使用my-service@my-project.iam
值。按一下「新增」。
gcloud
如要根據 IAM 使用者或服務帳戶建立 PostgreSQL 資料庫使用者,請使用 gcloud alloydb users create
指令。
gcloud alloydb users create USERNAME \
--cluster=CLUSTER \
--region=REGION \
--type=IAM_BASED
請替換下列變數:
USERNAME
:您要新增為資料庫使用者的 IAM 使用者 ID。如果是 IAM 使用者帳戶,請提供使用者帳戶的完整電子郵件地址。例如
kai@altostrat.com
。如果是 IAM 服務帳戶,請提供服務帳戶的地址,不要加上
.gserviceaccount.com
後置字元。舉例來說,如要指定服務帳戶my-service@my-project.iam.gserviceaccount.com
,請在此使用my-service@my-project.iam
值。CLUSTER
:要在哪個叢集內建立這個資料庫使用者帳戶的 ID。REGION
:叢集所在的區域 ID。 例如:us-central1
。
授予 IAM 使用者適當的資料庫權限
將 IAM 使用者新增至資料庫執行個體時,系統預設不會授予新使用者任何資料庫的權限。
使用者或服務帳戶連線至資料庫時,可以對已授予 PUBLIC 存取權的任何資料庫物件執行查詢。
如需其他存取權,可以使用 GRANT
PostgreSQL 陳述式授予更多權限。
GRANT SELECT ON TABLE_NAME TO "USERNAME";
請替換下列變數:
USERNAME
:使用者的電子郵件地址。地址前後須加上雙引號。TABLE_NAME
:您要授予使用者存取權的資料表名稱。
從叢集中移除 IAM 使用者或服務帳戶
控制台
前往「Clusters」(叢集) 頁面。
按一下要移除使用者的叢集名稱。
按一下「Users」(使用者)。
在要移除的使用者所在資料列,按一下「開啟這個使用者的動作」
。選取「移除」。
在「要移除使用者帳戶嗎?」對話方塊中,按一下「移除」。
gcloud
使用gcloud alloydb users delete
指令。
gcloud alloydb users delete USERNAME \
--cluster=CLUSTER \
--region=REGION
更改下列內容:
USERNAME
:要從叢集移除的 IAM 使用者 ID。如果是 IAM 使用者帳戶,請提供使用者帳戶的完整電子郵件地址。例如
kai@altostrat.com
。如果是 IAM 服務帳戶,請提供服務帳戶的地址,不要加上
.gserviceaccount.com
後置字元。舉例來說,如要指定服務帳戶my-service@my-project.iam.gserviceaccount.com
,請在此使用my-service@my-project.iam
值。CLUSTER
:要從中移除使用者的叢集 ID。REGION
:叢集所在的區域 ID。 例如:us-central1
。