IAM 資料庫驗證總覽

本頁說明如何使用個人和群組身分與存取權管理 (IAM) 資料庫驗證,管理 AlloyDB for PostgreSQL 資料庫的存取權。

IAM 資料庫驗證提供下列選項:

  • 個別 IAM 驗證:將特定使用者或服務帳戶新增至叢集。
  • 群組 IAM 驗證:將 IAM 群組新增至叢集。該群組的所有成員都會繼承驗證權限,方便管理多位使用者。

如果您需要直接授予特定帳戶存取權,個別驗證就非常實用。如要透過修改群組成員資格來管理存取權,請使用群組驗證,這樣就不必在叢集層級新增或移除使用者。

IAM 驗證概念

使用 IAM 驗證時,您無法將 AlloyDB 執行個體的存取權直接授予使用者,而是將不同權限的角色授予主體。詳情請參閱 IAM 總覽

如果管理員要求使用者透過 IAM 資料庫驗證登入,即可使用 IAM 政策集中管理執行個體的存取權控管。

IAM 政策涉及下列實體:

  • 校長。在 AlloyDB 中,您可以為應用程式使用使用者帳戶或服務帳戶。詳情請參閱「主體」。

  • 角色:如要使用 IAM 資料庫驗證,主體必須具備 alloydb.instances.login 權限。這項權限包含在 AlloyDB 用戶端角色 (roles/alloydb.client) 中。如要取得這項權限,請將使用者、服務帳戶或群組繫結至預先定義的角色,或包含這項權限的自訂角色。詳情請參閱「權限和角色」。

  • 資源。主體存取的資源是 AlloyDB 叢集。IAM 政策繫結是在專案層級套用,因此主體會獲得專案中所有 AlloyDB 執行個體的角色權限。詳情請參閱「資源」。

比較資料庫驗證選項

請參閱下表,根據您的用途選擇最合適的驗證方法。

功能 內建資料庫驗證 IAM 資料庫驗證
驗證方式 密碼 臨時驗證權杖
網路流量加密 不需要 SSL 必須符合 SSL 規定
使用者管理 手動 透過 IAM 集中管理

自動與手動 IAM 資料庫驗證

AlloyDB 提供兩種 IAM 資料庫驗證方法:自動和手動。

自動 IAM 資料庫驗證

啟用自動 IAM 資料庫驗證後,您就能將要求及管理存取權權杖的工作,交給中介 AlloyDB 連接器,例如 Auth Proxy 或其中一個語言連接器

使用自動 IAM 資料庫驗證時,應用程式只需要在用戶端的連線要求中傳遞 IAM 資料庫使用者名稱。連接器會代表用戶端提交密碼屬性的存取權杖資訊。

手動 IAM 資料庫驗證

手動 IAM 資料庫驗證需要 IAM 主體在用戶端連線要求中,明確傳遞密碼屬性的存取權杖。主體必須先登入 Google Cloud ,然後向 IAM 明確要求存取權杖。

如要保留資料存取記錄 (包括登入),可以使用 Cloud 稽核記錄。Cloud 稽核記錄預設為關閉。開啟資料存取稽核記錄,追蹤登入活動。

IAM 群組驗證

透過 IAM 群組驗證,您可以在群組層級管理 AlloyDB 使用者。群組範例包括 Cloud Identity 群組。這項功能可簡化資料庫使用者管理作業。您可以同時管理多位 IAM 使用者的 PostgreSQL 角色或權限,不必逐一更新使用者或服務帳戶。您也可以授予及撤銷 Cloud Identity 群組的資料庫角色。您新增至 Cloud Identity 群組的任何帳戶,都會沿用該群組的權限和角色。

使用 IAM 群組驗證功能,您可以執行下列操作:

  • 將使用者新增至群組,讓使用者自動繼承 IAM 角色和資料庫權限。
  • 從群組中移除使用者,即可從 AlloyDB 叢集移除他們的登入存取權和資料庫權限。
  • 一次將登入或資料庫權限授予群組,不必多次將相同權限授予不同使用者。
  • 一次移除群組的登入權限或資料庫物件存取權。

即使 IAM 角色和權限是在群組層級指派,使用者和服務帳戶登入時仍會使用各自的 IAM 帳戶和憑證,而非共用的群組帳戶。AlloyDB 會在主體的首次登入期間,為該主體在叢集上建立資料庫帳戶。

每位使用者或服務帳戶的個別登入和資料庫活動會顯示在稽核記錄中。為了稽核,您可以查看資料庫中執行各項動作的帳戶。

如要進一步瞭解如何使用 Cloud Identity 群組,請參閱「Cloud Identity 總覽」。

將使用者或服務帳戶新增至群組時,AlloyDB 會發生下列變化:

  • 如果您已將 IAM 登入權限授予群組,使用者或服務帳戶就會取得登入 AlloyDB 叢集的權限,因為使用者或服務帳戶屬於該群組。
  • 使用者會自動繼承授予群組的任何資料庫權限或角色。

從群組移除使用者或服務帳戶後,AlloyDB 會發生下列變更:

  • 使用者會失去先前因身為群組成員而繼承的任何資料庫權限。
  • 如果使用者透過其他群組成員資格取得 AlloyDB 叢集的 IAM 登入權限,可能仍可建立新工作階段。不過,使用者登入後,將無法取得先前群組的資料庫權限。

最佳做法

  • 在 Cloud Identity 中撤銷 IAM 群組的登入權限 (alloydb.databaseUser) 時,請從 AlloyDB 叢集刪除該群組。
  • 從 Cloud Identity 刪除群組時,請從 AlloyDB 叢集刪除該群組。
  • 您可以使用群組,在資料庫中設定角色型存取權控管。為群組提供最低必要權限。

限制

  • 新 AlloyDB 叢集的 預先發布版提供 IAM 群組驗證功能。如要在現有叢集上啟用這項功能,請與 Google Cloud 帳戶團隊聯絡。
  • IAM 群組驗證功能僅適用於預先發布版本中 POSTGRES_15 以上的資料庫版本。
  • 為確保安全性,使用 IAM 資料庫驗證登入時,只能透過 SSL 連線。系統會拒絕未加密的連線。
  • 每個執行個體都有每分鐘登入配額,包括成功和失敗的登入嘗試。超過配額後,暫時無法登入。建議您避免頻繁登入,並使用授權網路限制登入。
  • 使用 IAM 群組驗證時,如果 AlloyDB 叢集有唯讀副本,請先登入主要執行個體,再登入唯讀副本執行個體。首次登入主要執行個體後,系統會將群組使用者資訊複製到讀取副本。之後登入時,可以直接登入讀取副本。
  • 一個執行個體最多可新增 200 個 IAM 群組。
  • 您無法在同一個執行個體上,新增屬於群組的個別 IAM 使用者或服務帳戶。換句話說,如果已有類型為 ALLOYDB_IAM_GROUP_USERALLOYDB_IAM_GROUP_SERVICE_ACCOUNT 的相同帳戶,您就無法新增類型為 ALLOYDB_IAM_USER 的帳戶。
  • 如果執行個體上已有類型為 ALLOYDB_IAM_USER 的個人帳戶,您就無法使用該帳戶進行 IAM 群組驗證。這類使用者不會從群組繼承 IAM 角色和資料庫權限。如要修正這個問題,並使用帳戶進行 IAM 群組驗證,請移除個別 IAM 使用者或服務帳戶。詳情請參閱現有 IAM 使用者或服務帳戶未沿用授予其群組的資料庫權限

  • 變更 Cloud Identity 群組成員 (例如新增帳戶) 後,大約需要 15 分鐘才會全面套用。除了IAM 變更所需的時間外,還需要額外時間。

  • 代管連線集區不支援 IAM 群組驗證。

  • 聯合身分不支援 IAM 群組驗證。

後續步驟