IAM 資料庫驗證總覽

您可以透過 Identity and Access Management (IAM) 資料庫驗證機制,使用集中式 IAM 政策控管 AlloyDB for PostgreSQL 資料庫的存取權,不必使用資料庫密碼。

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

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

如需直接授予特定帳戶存取權,個別驗證就相當實用。群組驗證可讓您透過修改群組成員資格來管理資料庫存取權,減少在叢集層級新增或移除個別使用者的需求。

IAM 驗證概念

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

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

IAM 政策涉及下列實體:

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

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

  • 資源:主體存取的資源是 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 群組授予或撤銷資料庫角色時,新增至該群組的任何帳戶都會繼承該群組的權限和角色。

如要在執行個體上啟用 IAM 群組驗證功能,請將 alloydb.iam_authentication 和 alloydb.iam_group_authentication 資料庫旗標設為 on。

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

  • 在新的和現有叢集上啟用群組驗證,無須手動修補叢集。

  • 將使用者新增至群組,讓使用者自動繼承 IAM 角色和資料庫權限。

  • 將使用者從群組中移除,即可撤銷他們在 AlloyDB 叢集的登入權限和資料庫權限。

  • 一次授予或撤銷整個群組的登入權限和資料庫物件存取權,不必逐一更新個別帳戶。

  • 直接在 Google Cloud 控制台、主要執行個體或讀取集區執行個體登入 AlloyDB Studio,包括首次直接登入讀取集區執行個體,不必先連線至主要執行個體。

  • 從 PostgreSQL 適用的 Cloud SQL 備份還原或遷移 AlloyDB 叢集,同時對應及保留個別和 IAM 群組使用者設定。

雖然 IAM 角色和權限是在群組層級指派,但使用者和服務帳戶會使用個別的 IAM 帳戶和憑證 (而非共用群組帳戶),登入主要執行個體、讀取集區執行個體或 AlloyDB Studio。主體首次登入時,AlloyDB 會在叢集上為該主體建立資料庫帳戶。

每個使用者或服務帳戶的個別登入和資料庫活動都會顯示在稽核記錄中,讓您確認資料庫中每項動作是由哪個帳戶執行。

如要進一步瞭解如何使用 Cloud Identity 群組,請參閱「Cloud Identity 總覽」。如要進一步瞭解如何從 PostgreSQL 適用的 Cloud SQL 備份遷移,請參閱「從 PostgreSQL 適用的 Cloud SQL 遷移至 AlloyDB」。

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

  • 如果您已將 IAM 登入權限授予群組,則使用者或服務帳戶會取得 AlloyDB 叢集的登入權限,因為使用者或服務帳戶屬於該群組。

  • 使用者會自動繼承授予群組的任何資料庫權限或角色。

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

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

最佳做法

使用 IAM 群組驗證時,請遵循下列最佳做法:

  • 在 IAM 中撤銷 IAM 群組的 roles/alloydb.databaseUser 角色時,請從 AlloyDB 叢集刪除該群組。

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

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

限制

IAM 群組驗證功能有下列限制:

  • IAM 群組驗證功能僅適用於資料庫版本 POSTGRES_15 以上。

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

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

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

  • 一個叢集最多可新增 200 個 IAM 群組。

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

  • 如果叢集上已有類型為 ALLOYDB_IAM_USER 的個人帳戶,則無法使用該帳戶進行 IAM 群組驗證。這類使用者不會從群組繼承 IAM 角色和資料庫權限。如要解決這個問題,並使用 IAM 群組驗證功能,請移除個別 IAM 使用者或服務帳戶。如要進一步瞭解如何解決這個問題,請參閱「現有帳戶未沿用權限」。

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

  • 如要使用 IAM 群組驗證,必須放寬或停用所有密碼相關資料庫旗標,這些旗標會控管字元、數字字元和長度的下限。

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

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

後續步驟