使用 IAM 帳戶連線

如要使用 Identity and Access Management (IAM) 憑證 (而非內建資料庫密碼) 驗證 AlloyDB for PostgreSQL 執行個體,您可以使用 OAuth 2.0 存取權杖登入,或設定自動 IAM 驗證。您也可以使用 psql 指令列用戶端,執行以 IAM 為基礎的登入作業。

如要瞭解如何連線至 AlloyDB 執行個體,請參閱「連線總覽」。

事前準備

您必須先準備好專案、叢集、執行個體和 IAM 使用者帳戶,才能使用 IAM 憑證登入 AlloyDB 執行個體。

詳情請參閱「管理 IAM 驗證」。

使用 OAuth 2.0 權杖進行驗證

使用者或應用程式可以按照下列步驟,向 AlloyDB 資料庫進行驗證:

  1. 如果尚未驗證 Google Cloud CLI,請使用要登入 AlloyDB 執行個體的使用者或服務帳戶進行驗證。

  2. 使用 gcloud auth print-access-token 指令,向 Google Cloud 要求 OAuth 2.0 權杖:

    gcloud auth print-access-token

    Google Cloud 會輸出 OAuth 2.0 權杖,做為這個指令的輸出內容。

    如要進一步確保安全,您可以按照下列替代步驟,限制權杖只能用於 AlloyDB 驗證:

    1. 如果您尚未這麼做,請使用 gcloud auth application-default login 指令,將 alloydb.login 範圍新增至目前環境的存取憑證:

      gcloud auth application-default login --scopes=https://www.googleapis.com/auth/alloydb.login,https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/userinfo.email,openid
    2. 使用 gcloud auth application-default print-access-token 指令列印受限制的 OAuth 2.0 權杖,並將權杖範圍限定為 AlloyDB 驗證:

      gcloud auth application-default print-access-token --scopes=https://www.googleapis.com/auth/alloydb.login

    OAuth 2.0 權杖可讓您或任何人代表您向 Google Cloud 提出已驗證的要求。請將權杖視為密碼,妥善保管。請安全地儲存權杖,或完全避免儲存。本頁稍後提供的 psql 使用範例,示範了如何在單一動作中要求、使用及捨棄 OAuth 2.0 權杖。

  3. 使用標準 PostgreSQL 技術和下列憑證,登入 AlloyDB 執行個體:

    • 提供您在上一個步驟中取得的存取權杖做為密碼。

    • 如果是 IAM 使用者帳戶,資料庫使用者名稱是帳戶的完整電子郵件地址。

    • 如果是 IAM 服務帳戶,資料庫使用者名稱就是帳戶的電子郵件地址,但不含 .gserviceaccount.com 尾碼。

下列 psql 指令示範如何在指令列登入 IAM 使用者。它會將 gcloud auth print-access-token 的輸出內容指派給 PGPASSWORD 環境變數,psql 隨後會將該變數用作資料庫登入密碼。

PGPASSWORD=$(gcloud auth print-access-token) psql \
  -h INSTANCE_ADDRESS \
  -U USERNAME \
  -d DATABASE

更改下列內容:

  • INSTANCE_ADDRESS:要連線的 AlloyDB 執行個體 IP 位址。

  • USERNAME:IAM 使用者的 ID,用於向執行個體驗證。

    如果是 IAM 使用者帳戶,請提供使用者帳戶的完整電子郵件地址。例如 kai@example.com。

    如果是 IAM 服務帳戶,請提供服務帳戶的地址,但「不含」.gserviceaccount.com 後置字串。舉例來說,如要指定服務帳戶 my-service@my-project.iam.gserviceaccount.com,請在這裡使用 my-service@my-project.iam 值。

  • DATABASE:要連線的資料庫名稱。

請注意,psql 會截斷在指令列輸入的密碼,長度超過 100 個字元。如要搭配使用 psql 和 OAuth 2.0 權杖做為登入密碼,您必須按照這個範例所示設定 PGPASSWORD 環境變數,而不是在系統提示時手動貼上。

自動驗證

如要自動驗證以 IAM 為基礎的 AlloyDB 使用者,而不使用 OAuth 2.0 權杖,可以選擇 AlloyDB Auth Proxy 或 AlloyDB 語言連接器。

您用來執行 Proxy 用戶端或語言連接器的 IAM 帳戶,必須與您新增為資料庫使用者的帳戶相同。舉例來說,如果您使用 IAM 使用者帳戶 kai@example.com 執行工作負載,則可使用 Proxy 用戶端或語言連接器,自動驗證 kai@example.com 資料庫使用者,而不必指定 OAuth 2.0 權杖。在這個範例中,自動驗證功能不適用於 kai@example.com 以外的任何其他資料庫使用者。

Auth Proxy

如要使用 Auth Proxy,必須在執行 Auth Proxy 用戶端時啟用 --auto-iam-authn 旗標。

如要進一步瞭解如何執行 Auth Proxy,請參閱「使用 AlloyDB Auth Proxy 連線」。

語言連接器

如要使用語言連接器,必須透過程式輔助方式啟用 IAM 驗證。AlloyDB Python 連接器支援自動 IAM 驗證 (enable_iam_auth=True),並搭配 pg8000 和 asyncpg 驅動程式。設定 AlloyDB 語言連接器時,每種語言都有對應的選項。

後續步驟