IAM 資料庫驗證總覽

如要使用 Google Cloud 憑證集中管理資料庫存取權,您可以為 AlloyDB for PostgreSQL 資料庫設定個別和群組 Identity and Access Management (IAM) 資料庫驗證。

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

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

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

IAM 驗證概念

使用 IAM 驗證時,您無法將 AlloyDB 執行個體的存取權直接授予使用者,而是將不同權限的角色授予主體。如要進一步瞭解 IAM,請參閱「IAM 總覽」。

如果管理員的使用者透過 IAM 資料庫驗證機制登入,則可使用 IAM 允許政策,透過 IAM 集中管理執行個體的存取控管。

IAM 允許政策涉及下列實體:

  • 主體。在 AlloyDB 中,您可以使用使用者帳戶或應用程式的服務帳戶。如要進一步瞭解主體,請參閱「主體」。

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

  • 資源。主體存取的資源是 AlloyDB 叢集。角色繫結會在專案層級套用,因此主體會取得專案中所有 AlloyDB 執行個體的角色權限。如要進一步瞭解 IAM 資源,請參閱「資源」。

比較資料庫驗證選項

請參考下表,決定最適合您用途的驗證方式。

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

自動與手動 IAM 資料庫驗證

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

自動 IAM 資料庫驗證

自動 IAM 資料庫驗證功能可讓您將要求和管理存取權杖的工作,交給中介 AlloyDB 連接器,例如 AlloyDB Auth Proxy 或 AlloyDB 語言連接器。

使用自動 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 資料庫使用者角色 (roles/alloydb.databaseUser) 時,請從 AlloyDB 叢集刪除該群組。

  • 從 Cloud Identity 刪除群組時,請一併從 AlloyDB 叢集刪除該群組。

  • 使用群組,在資料庫中設定角色式存取控管。為群組提供最低必要權限。

限制

  • 新的 AlloyDB 叢集可使用 IAM 群組驗證功能 (預先發布版)。如要在現有叢集啟用這項功能,請與 Google Cloud 帳戶團隊聯絡。

  • IAM 群組驗證功能僅適用於資料庫版本 POSTGRES_15 和預先發布版。

  • 為確保安全性,使用 IAM 資料庫驗證登入時,只能透過 SSL 連線。系統會拒絕未加密的連線。

  • 每個執行個體每分鐘都有登入配額,包括成功和失敗的登入。超過配額時,系統會暫時停用登入功能。避免頻繁登入,並使用授權網路限制登入。

  • 服務帳戶的縮短主體 (不含 .gserviceaccount.com 尾碼的電子郵件地址) 不得超過 63 個字元。PostgreSQL 會截斷資料庫目錄中超過 63 個字元的角色名稱,導致 IAM 驗證失敗。如果無法縮短服務帳戶名稱,請參閱服務帳戶模擬權限替代方案。

  • 使用 IAM 群組驗證時,如果 AlloyDB 叢集有唯讀副本,請先登入主要執行個體,再登入唯讀副本執行個體。首次登入主要執行個體後,群組使用者資訊會複製到唯讀副本。後續登入時,您可以直接登入唯讀副本。

  • 一個執行個體最多可新增 200 個 IAM 群組。

  • 您無法在同一個執行個體上,新增屬於某個群組的個別 IAM 使用者或服務帳戶。換句話說,如果已有類型為 ALLOYDB_IAM_GROUP_USER 或 ALLOYDB_IAM_GROUP_SERVICE_ACCOUNT 的相同帳戶,就無法新增類型為 ALLOYDB_IAM_USER 的帳戶。

  • 如果執行個體上已有類型為 ALLOYDB_IAM_USER 的個別帳戶,則無法使用該帳戶進行 IAM 群組驗證。這類使用者不會從群組繼承 IAM 角色和資料庫權限。如要修正這個問題,並透過 IAM 群組驗證使用帳戶,請移除個別 IAM 使用者或服務帳戶。詳情請參閱「現有 IAM 使用者或服務帳戶未繼承授予其群組的資料庫權限」。

  • Cloud Identity 群組成員資格的變更 (例如新增帳戶) 約需 15 分鐘才會生效。這不包含 IAM 變更所需的時間。

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

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

後續步驟