使用員工身分聯盟的最佳做法

員工身分聯盟會將 Google Cloud 機構 Google Cloud 與外部識別資訊提供者 (IdP) 聯盟,以啟用單一登入 (SSO)。

您可以套用這些最佳做法,有效使用員工身分聯盟,並將安全風險降到最低。

選擇合適的架構

以下各節說明選擇符合需求的聯盟架構時,應考量的主要因素。

選擇聯盟架構模式

以下四種模式說明將機構與外部 IdP 連結的常見方式: Google Cloud

進行同盟作業前,請先考量每種模式的優點和限制,然後選擇符合您需求的模式。詳情請參閱「身分聯盟的架構模式」。

依服務劃分聯盟用量

一般來說,我們建議您依服務 (而非使用者) 劃分同盟使用量。整體而言,按服務劃分用量較少缺點。

為降低複雜度,建議使用 Cloud Identity 或員工身分聯盟。不過,視需求而定,您可能需要並行使用這兩者,如混合模式所述。

如果您同時使用 Cloud Identity 聯盟和 Workforce Identity Federation,可以透過下列方式劃分使用情況:

  • 依使用者劃分:將使用者劃分為兩組,一組使用員工身分聯盟,另一組使用 Cloud Identity 聯盟。

    • 優點:每位使用者在 Google 服務中都只有一個身分,且登入方式相同。
    • 缺點:依使用者劃分區隔有幾個缺點,包括:

      • 管理存取群組可能很複雜,因為 IAM 允許政策必須包含主體類型組合,而且您無法對 Cloud Identity 和員工身分聯盟使用者使用相同群組。

      • 不同群組的使用者無法共用連結,因為 Google Cloud 控制台、Gemini Enterprise 和其他工具會根據使用者的登入方式,使用不同的網址。

      • 不同同類群組的使用者可能可以存取不同的功能組合。

  • 依服務劃分:設定各項服務 (例如Google Cloud 或 Gemini Enterprise),只允許員工身分聯盟使用者或 Cloud Identity 使用者存取,但絕不允許兩者同時存取。

    • 優點:簡化管理作業,確保不同使用者都能獲得一致的功能組合。
    • 缺點:部分員工可能需要指派兩個身分,一個使用 Workforce Identity Federation,另一個使用 Cloud Identity。

建議依服務進行分割,特別是將 Gemini Enterprise 和 NotebookLM Enterprise 與其他服務分開。Gemini Enterprise 和 Google Cloud 控制台是不同的工具,適用於不同的工作。登入程序如有任何差異,對整體使用者體驗的影響應微乎其微。

如要強制執行這項分割作業,請使用組織政策限制

加強群組管理

您應使用群組管理存取權,並建立明確的群組管理程序,以便有效使用員工身分聯盟。

驗證期間不會決定使用者存取資源的權限。而是根據附加至該特定資源的政策,在使用者嘗試存取資源時評估存取權。這些政策包括:

政策會定義個別主體或主體集的存取權:

  • 主體:透過主體 ID 識別的已驗證使用者。 員工主體 ID 類似於以下內容: principal://iam.googleapis.com/locations/global/workforcePools/ POOL_ID/subject/SUBJECT

    主體 ID 包含下列項目:

    • POOL_ID:員工身分集區的專屬 ID。
    • SUBJECT:可專屬識別特定使用者。 值和格式取決於 IdP 和屬性對應。
  • 主要集合:符合特定條件的使用者。員工身分聯盟支援三種主體集:以群組為準 (群組成員)、以屬性為準,以及萬用字元 (所有使用者)。

在特定情況下,授予個別主體存取權可能很有用,但由於下列問題,這種做法往往難以擴大規模:

  • 逐一新增主體會導致允許政策不斷增加,管理難度也隨之提高。
  • 個別存取權管理需要經常變更允許政策。
  • 政策可能會隨著時間越來越不一致。

如要有效管理存取權並進行擴充,使用以群組為基礎的主體集有以下優點:

  • 您可以透過現有的身分識別工具和程序,在群組中新增或移除成員,藉此管理存取權。
  • 縮減允許政策的大小和複雜度。
  • 確保具有相同角色的使用者擁有相同的資源存取權。

如要使用群組管理存取權,您必須以特定方式設定外部 IdP,並留意 IdP 對群組施加的任何限制。

以下各節將說明有效使用群組的最佳做法,以及如何避免 IdP 限制。

區分不同類型的群組

以下列出機構中常見的四種群組:

  • 存取權群組:僅用於授予 Google 服務或資源的存取權。Google Cloud 這些群組代表工作職能,可簡化指派執行這些工作職能所需角色的程序。
  • 機構群組:這類群組代表機構結構的子集,通常來自人力資源資料。這些群組可能以部門、匯報結構、地理位置或其他機構分組為依據。
  • 協作群組:這類群組代表工作群組、專案成員,或想要協作專案或討論特定主題的使用者,可能用於電子郵件發布。協作群組通常是根據臨時需求,以自助式方式建立。
  • 強制執行群組:強制執行群組也稱為政策群組,與用於授予存取權的存取權群組不同,強制執行群組用於限制存取權。例如主體存取邊界、拒絕政策或強制執行多重驗證。 存取群組可讓成員自願退出群組。 不過,執法群組成員並非自願加入。

您需要同盟的群組取決於您使用的下列服務:

  • 如要使用 Google Cloud,您只需要存取群組和強制執行群組。
  • 如果是 Gemini Enterprise,則需要存取權群組、強制執行群組,以及 (如果使用以資料擷取為基礎的連接器) 特定機構單位和協作群組。

設定員工身分聯盟時,請排除不相關的群組類型,以免超出 IdP 的權杖限制。這種做法有助於降低超出 IdP 限制的風險,並確保群組的使用方式更加一致。

使用存取權群組授予資源存取權

為有效管理存取權,建議使用對應存取群組的主體集。存取權群組的唯一用途是提供存取權。這些群組代表工作職能,可簡化指派執行這些職能所需角色的程序。

如要設定存取權群組,請按照下列步驟操作:

  1. 在 IdP 中,建立代表職務的存取群組。
  2. 將存取群組對應至主體集,以便在 IAM 中使用。
  3. 建立政策繫結,授予主體集存取各項工作職能所需資源的權限。
  4. 在外部 IdP 中,根據使用者的工作職能新增或移除群組中的使用者。

使用存取群組來制定授予存取權的政策,包括:

  • IAM 允許政策
  • VPC Service Controls 輸入規則

確保存取群組的精細程度足夠。舉例來說,下列群組代表有效的存取權群組:

  • widget-sales-dashboard-readers:授予特定 BigQuery 資料集和相關聯資訊主頁的讀取權。
  • dev-ssh-users:授予開發環境中 Compute Engine VM 的 OS 登入存取權。

    相較之下,下列類型的群組通常不適合做為存取權群組:

    • 廣泛的管理員群組 (例如 cloud-admins) 通常缺乏特定性,無法判斷適用哪些工作負載或環境。

    • 組織群組 (例如 australia-fte) 代表團隊或地點等群組,而非職務。

    • 通訊群組 (例如 security-discuss) 是專為電子郵件名單或協作而設計,不適合做為存取權群組。

    為確保存取群組的精細程度,請為您加入 Google Cloud的每個工作負載或專案建立一組新的存取群組。這樣一來,您就能根據在 Google Cloud上執行的工作負載數量,調整存取群組數量。

使用強制執行群組限制資源存取權

強制執行群組與存取權群組類似,但通常有以下差異:

  • 成員無法自行離開群組。
  • 這類指令不適用於特定工作負載。

針對會減少存取權的政策,請使用強制執行群組,包括:

  • IAM 拒絕政策
  • 主體存取權範圍
  • 組織政策

違規處置群組的範例包括 users-in-restricted-locationsfedramp-lowmfa-users。強制執行群組的數量通常很少,不太可能影響使用者的群組成員總數。

請勿使用機構和協作群組管理存取權

如要有效管理存取權,建議使用存取權群組和強制執行群組,而非機構單位或協作群組。

機構群組代表團隊或機構結構的子集,通常來自人力資源資料。這些群組不適合管理 Google Cloud 資源的存取權,原因如下:

  • 團隊職責和組成可能會隨著時間而改變。舉例來說,某個團隊可能會將工作負載移交給另一個團隊,或是兩個團隊可能會合併。在這些轉換期間,使用機構群組管理存取權可能需要連串的政策變更。
  • 機構群組的成員很少需要相同的資源存取權。授予機構群組存取權時,部分成員通常會獲得超出需求的存取權。

協作群組通常由成員自行管理,成員可經由其他成員核准加入,或無需核准即可加入。您可以使用協作群組授予存取權,但這可能會導致權限過度授予和權限提升。

如要避免機構和協作群組用於存取權管理,請設定 IdP,在用於員工身分聯盟的權杖或聲明中排除這些群組成員。

僅將機構群組和協作群組用於 Gemini Enterprise

雖然機構和協作群組不適合用來管理 Google Cloud 資源的存取權,但您可能需要這些群組來使用 Gemini Enterprise:

  • ACL 評估:使用以資料擷取為基礎的連結器將 Gemini Enterprise 與 Microsoft 365 整合時,系統可能會遇到存取控制清單 (ACL) 參照機構和協作群組的文件。如果 Gemini Enterprise 無法存取使用者在這些群組中的成員資格,可能無法正確評估使用者是否有權存取這些文件。
  • 共用筆記本:使用者可以透過 NotebookLM 共用筆記本。允許使用者與協作群組共用筆記本,通常比限制只能與個別使用者共用更方便。

如要確保機構和協作群組僅供 Gemini Enterprise 使用,請按照下列方式設定 IdP:

  • 使用 SCIM 佈建機構和協作群組,以及這些群組的成員。
  • 在用於員工身分聯盟的權杖或聲明中,排除機構和協作群組成員。

管理員工身分集區

員工身分集區會定義主體 ID 的命名空間,並做為聯盟設定的容器。與使用者目錄不同,集區不會儲存使用者或群組的相關資訊。

每個 IdP 使用單一集區

工作團隊身分集區是機構層級的資源,而非專案層級的資源。這項設計反映出員工身分集區管理整個 Google Cloud 機構的驗證,而非個別專案或工作負載。

對大多數機構而言,員工身分集區的數量應與 IdP 數量相符:

  • 如果貴機構使用單一 IdP 管理驗證,請使用單一員工身分集區。
  • 如果貴機構使用多個 IdP (例如因收購而使用),請為每個 IdP 使用一個員工身分集區。

限制工作團隊身分集區數量有助於確保下列事項:

  • 將新工作負載加入 Google Cloud時,您不必建立或修改工作團隊身分集區。
  • 您可以使用 IAM 控制個別使用者可存取哪些專案和資源。 Google Cloud

選擇不重複且有意義的集區名稱

為確保主體 ID 在全域中不重複,工作團隊身分會將工作團隊身分集區名稱編碼至主體 ID。為工作團隊身分集區選擇名稱時,請注意下列限制:

  • 獨特性:選擇在 Google Cloud 和 其他機構之間不重複,且未遭其他機構聲明的名稱。
  • 不可變更性:您無法變更工作團隊身分集區名稱。請選擇長期有意義的名稱,避免使用臨時的計畫名稱。
  • 使用者體驗:視登入設定而定,使用者可能需要在登入時輸入集區名稱。選擇簡短好記的名稱。

將集區視為高權限資源

員工身分集區和提供者會決定使用者登入方式,並控管如何從外部 IdP 衍生身分和群組成員資格。由於這些元件會控管驗證邏輯,因此對貴機構的 Google Cloud 安全性至關重要。如果這些元件遭到入侵,不肖人士可能會發動詐騙攻擊。

為發動網路釣魚攻擊,惡意行為人可能會嘗試下列動作:

  • 修改屬性對應:變更屬性對應可能會讓惡意行為人以他人身分驗證,並取得未經授權的特殊權限存取權。
  • 新增惡意提供者:新增提供者後,惡意行為人就能略過貴機構的 IdP,並使用他們控制的其他 IdP 進行驗證。

工作團隊身分集區和提供者是安全關鍵資源,因此需要下列保護措施:

  • 限制非聯盟使用者的存取權:將管理存取權授予少數 Cloud Identity 或 Google Workspace 使用者,包括至少一位緊急存取使用者。
  • 保護管理員使用者:要求所有管理員和緊急存取權使用者啟用兩步驟驗證。
  • 即時存取權:使用 Privileged Access Manager (PAM) 即時授予管理員存取權,而非永久存取權。

將聯盟擴展至合作夥伴時,請考量風險

使用員工身分聯盟與外部 IdP 建立聯盟 Google Cloud ,即可建立信任關係。使用同盟時,您會依賴外部 IdP 執行下列動作:

  • 執行符合安全規定的多重驗證 (MFA)。
  • 準確聲明使用者身分和群組成員資格。
  • 遵循身分控管程序,確保使用者能及時離職,且群組成員資格能準確反映目前角色。

員工身分聯盟提供的機制有限,只能驗證外部 IdP 的聲明。具體來說,員工身分聯盟不支援「與 Cloud Identity 相同方式」的 SSO 後 MFA。

使用員工身分聯盟允許外部合作夥伴或承包商存取 Google Cloud 資源前,請先判斷這個信任等級是否合適。除非您信任合作夥伴及其 IdP 能持續符合您的安全標準,否則請勿使用員工身分聯盟授予合作夥伴存取權。

管理員工身分集區提供者

員工身分集區提供者會定義與外部 IdP 的聯盟關係,並包含下列設定:

  • 用於單一登入的 IdP。
  • 用於從 IdP 提供的權杖或聲明衍生主體 ID 的屬性對應。
  • 選用:用於查詢群組成員資訊的 SCIM 租戶。

選擇有意義的供應商名稱

建立工作團隊身分集區提供者時,您必須為其命名。 與工作團隊身分集區名稱不同,這個名稱不必是全域不重複,也不會編碼為主體 ID。不過,視登入設定而定,使用者可能需要在登入時輸入提供者名稱。為提升使用者體驗,請選擇有意義且容易記住的名稱,例如 entrastaff

請避免使用 oidcsaml 等名稱,因為使用者可能不熟悉這些縮寫字。

在 IdP 應用程式入口網站中顯示個別服務

Microsoft Entra ID 和 Okta 等身分識別提供者會提供應用程式入口網站,讓使用者探索及存取已指派的應用程式。使用入口網站執行下列操作,提升使用者體驗:

  • 設定入口網站,個別顯示相關的 Google 服務,而不是顯示單一 Google Cloud 連結。
  • 設定連結,讓使用者自動登入。

下表列出支援 Workforce Identity Federation 的常見 Google 服務,以及自動登入的網址:

應用程式 網址
Google Cloud 員工身分聯盟控制台,又稱控制台 (聯盟) https://auth.cloud.google/signin/locations/global/workforcePools/POOL/providers/PROVIDER?continueUrl=https%3A%2F%2Fconsole.cloud.google
Gemini Enterprise https://auth.cloud.google/signin/locations/global/workforcePools/POOL/providers/PROVIDER?continueUrl=https%3A%2F%2Fvertexaisearch.cloud.google%2Fhome%2Fcid%2FWEBAPP_ID
NotebookLM Enterprise https://auth.cloud.google/signin/locations/global/workforcePools/POOL/providers/PROVIDER?continueUrl=https%3A%2F%2Fnotebooklm.cloud.google%2Fglobal%2F%3Fproject%3DPROJECT_NUMBER
受 IAP 保護的網頁應用程式 應用程式網址,例如 https://iap.example.com/

更改下列內容:

  • POOL:員工身分集區名稱。
  • PROVIDER:集區供應商名稱。
  • WEBAPP_ID:Gemini Enterprise 網頁應用程式 ID。
  • PROJECT_NUMBER:NotebookLM Enterprise 專案編號。

每個集區使用單一供應商,避免主體衝突

您可以使用員工身分聯盟,在員工集區中新增多個提供者。在遷移期間,您可暫時允許使用者透過不同的 IdP 進行驗證,因此新增第二個供應商很有用。除了暫時情況外,請避免使用多個供應商,原因如下:

  • 主體衝突:使用多個供應商會導致主體衝突的風險。發生這類衝突時,其中一個供應商的 google.subject 屬性對應會傳回與另一個供應商相同的值。這項衝突會將多個外部身分對應至相同 IAM 主體,導致這些身分在 Cloud 稽核記錄中無法區分。
  • IAP 相容性:IAP 要求工作負載身分集區只能有一個提供者,才能自動將未通過驗證的使用者重新導向至 IdP。如果您新增其他供應商,IAP 就無法驗證使用者。

如要與多個供應商同盟,請建立多個員工集區,並為每個集區設定一個供應商。

為 Google Cloud 控制台和 Gemini Enterprise 使用相同的集區和供應商

如果您同時使用員工身分聯盟來存取 Gemini Enterprise 和 Google Cloud,請使用單一供應商,確保使用者能同時存取這兩項服務,不必再次登入。如果您使用不同的屬性對應,使用者可能會遇到以下情況:根據登入時使用的提供者,他們對資源的存取權會有所不同。

使用租戶專屬的核發者 URI

設定供應商時,請指定核發者 URI,以專屬方式識別您的 IdP。不過,視 IdP 設定而定,發行者 URI 可能不是貴機構租戶專屬。舉例來說,如果您使用一般或共用的核發者 URI (例如 Microsoft Entra ID 通用端點 https://login.microsoftonline.com/common/v2.0),可能會在無意間允許其他機構的使用者向貴機構驗證身分。 Google Cloud

為防範非預期的跨租戶存取活動,請使用租戶專屬的核發者 URI。如果 IdP 未提供租戶專屬的簽發者 URI,請設定屬性條件,限制特定租戶的存取權。

避免使用 OpenID Connect (OIDC) 隱含流程

設定 OIDC 供應商時,請優先使用授權碼流程,而非隱含流程。OAuth 規格 2.1 版已淘汰隱含流程,因為這類流程容易發生權杖外洩和注入問題。使用授權碼流程有助於降低權杖遭攔截的風險。

管理使用者

您可以使用員工身分聯盟管理使用者。員工身分聯盟會執行下列步驟,從使用者的權杖或聲明衍生出主體 ID:

  1. 套用 google.subject 的屬性對應,判斷主體 ID。主體 ID 必須在員工身分集區中明確識別使用者,但不需要在 Google Cloud中保持不重複。
  2. 將主體 ID 附加至可識別工作團隊身分集區的前置字串,即可衍生主體 ID。產生的主體 ID 在 Google Cloud 中是唯一的,格式如下:

    principal://iam.googleapis.com/locations/global/workforcePools/POOL_ID/\
    subject/SUBJECT
    

當透過員工身分聯盟驗證的使用者存取資源時,IAM 會使用主體 ID 評估允許政策中的角色繫結,並記錄在 Cloud 稽核記錄中。

使用不可變更的主體 ID

當使用者的主體 ID 變更時,主體識別碼也會變更。 因此, Google Cloud 不再將他們視為同一位使用者:

  • 使用者無法存取先前獲准存取的資源,因為新的主體 ID 不再符合允許政策中列出的主體 ID。
  • Cloud 稽核記錄項目只會包含新的主體 ID,無法再與使用舊主體 ID 的記錄建立關聯。

如要確保使用者主體 ID 穩定,請使用屬性對應,為 google.subject 產生穩定值。

許多 IdP 會為使用者自動產生專屬的數字或 UUID 格式 ID。這些 ID 專屬且穩定,因此很適合做為 google.subject。不過,使用這些 ID 做為 google.subject 可能會導致主體 ID 過長且難以解讀,不便於使用。

為協助您選擇 google.subject 的 ID,請依優先順序考量下列需求:

  1. 專屬性:這個值可專屬識別 IdP 中的使用者。
  2. 可用性:值有意義,或至少可在 IdP 的使用者目錄中輕鬆搜尋。
  3. 不可變動性:值不可變動,或至少只能由管理員變更。

請勿重複使用主體 ID

許多 IdP 會對特定使用者 ID 實施唯一性限制,但允許重複使用 ID。舉例來說,身分識別提供者可能不允許您建立兩個具有相同使用者名稱 bob 的使用者。不過,一旦刪除使用者帳戶bob,IdP 可能會允許您建立新的使用者帳戶,並再次指派該使用者名稱 bob

如果供應商的 google.subject 屬性對應是指可重複使用的使用者 ID,您可能會遇到主體衝突:如果舊使用者和新使用者的 google.subject 相同,Workforce Identity Federation 就無法區分兩者。因此,新使用者可能會存取僅供舊使用者使用的資源。

為避免主體碰撞,請採取下列任一做法:

Microsoft Entra ID:使用 UPN 做為主體識別碼

只有在使用 Microsoft Entra ID 做為 IdP 時,才適用這項最佳做法。

如果您使用 Microsoft Entra ID,可做為主體 ID 的 ID 包括:

  • 使用者主體名稱 (upn)
  • 物件 ID (oid)
  • 電子郵件地址 (proxyAddresses 中的主要地址)

在這些選項中,我們建議使用使用者主體名稱做為主體 ID,原因如下:

  • 所有使用者都有使用者主體名稱。
  • 使用者主體名稱可做為使用者的專屬 ID。
  • 使用者主體名稱通常有意義且容易使用。
  • 使用者主體名稱會嵌入網域名稱,用於明確識別使用者所屬的 Microsoft Entra ID 租戶。
  • 貴機構可能已制定政策,禁止或控管使用者主體 ID 的重複使用行為。

相較之下,使用者物件 ID 和電子郵件地址較不適合,原因如下:

  • 物件 ID (oid) 格式為 GUID,且無法變更。這種格式難以處理,對人類來說也沒有意義。
  • 電子郵件地址並非必要屬性,且可能不會為所有使用者填入。

無論選擇哪種 ID,建議您避免套用轉換,例如強制將 ID 轉換為小寫。

管理群組

員工身分聯盟可根據下列來源判斷使用者的群組成員資格:

  • IdP 提供的 SAML 聲明或 ID 權杖。
  • 如果您使用 Microsoft Entra ID 做為 IdP,則為 Microsoft Graph API。
  • 與工作團隊身分集區提供者相關聯的 SCIM 租戶。

根據預設,員工身分聯盟只會使用 SAML 宣告或 ID 權杖:

來源 Google Cloud Gemini Enterprise
SAML 或 ID 權杖
Microsoft Graph API - -
SCIM 租戶 - -

如果您使用 Microsoft Entra ID 做為 IdP,可以啟用「額外屬性」功能。接著,員工身分聯盟只會使用 Microsoft Graph API 做為群組成員資格的來源:

來源 Google Cloud Gemini Enterprise
SAML 或 ID 權杖 - -
Microsoft Graph API
SCIM 租戶 - -

如果您使用 Gemini Enterprise,可以設定員工身分聯盟來使用 SCIM 租戶,這會改變下列行為:

  • Gemini Enterprise 會使用 SCIM 租戶的群組成員資格,並忽略 SAML 聲明或 ID 權杖中的群組成員資格資訊。
  • Google Cloud 使用 SAML 聲明或 ID 權杖中的群組成員資訊,並忽略 SCIM 租戶中的群組成員資訊。
來源 Google Cloud Gemini Enterprise
SAML 或 ID 權杖 -
Microsoft Graph API - -
SCIM 租戶 -

針對每個群組成員資格,員工身分聯盟會執行下列步驟,衍生主體 ID:

  1. 透過下列任一方式判斷群組 ID:
    • SAML 判斷或 ID 權杖:套用屬性對應,適用於 google.groups
    • SCIM 租戶:為 google.group 套用宣告對應。
    • Microsoft Graph API:按照供應商設定中的 extra-attributes-type 操作。
  2. 將群組 ID 附加至可識別工作團隊身分集區的前置字串,即可衍生主體 ID。產生的主體 ID 在 Google Cloud 中是唯一的,格式如下:

    principalSet://iam.googleapis.com/locations/global/workforcePools/\
    POOL_ID/group/GROUP_ID
    

當透過員工身分聯盟驗證的使用者存取資源時,IAM 會使用這些主體 ID 評估允許政策中的角色繫結。

使用不可變更的群組 ID

所有 IAM 政策都會依據主體 ID 參照群組。在 IdP 中重新命名群組,導致群組 ID 變更後,Google Cloud 就不會再將其視為同一個群組:

  • 現有 IAM 角色繫結會繼續參照舊主體 ID,並失效。
  • 由於群組的新主體 ID 不再與任何 IAM 角色繫結相符,因此重新命名的群組成員會失去存取權。

為避免這類中斷,請設定屬性和聲明對應,使用穩定且不可變更的值,例如 IdP 產生的專屬 ID。請避免使用顯示名稱或電子郵件地址做為群組 ID,因為這些名稱可能會在機構變更時一併變更。

減少斷言或權杖中的群組成員資格

根據預設,您的 IdP 可能會在 SAML 判斷或 ID 權杖中加入更多群組成員,但您不需要這些成員來管理 Gemini Enterprise 和 Google Cloud 資源的存取權。包含不必要的群組成員會造成多項風險:

  • 部分存取權遺失:許多 IdP 會限制可在權杖或聲明中加入的群組成員資格數量。如果使用者超過這個上限 (群組超額),IdP 可能會捨棄部分群組成員資格,導致使用者無法存取特定資源。
  • 登入失敗:員工身分聯盟會限制 google.groups 屬性對應可產生的群組成員資格大小和數量。如果使用者超過其中一項限制,就無法登入。
  • 群組使用方式不一致:如果您將群組公開給 Google Cloud,專案擁有者可能會決定使用這些群組管理資源存取權,即使您從未打算在Google Cloud中使用特定群組。

您可以採取下列方法來降低這些風險,並減少斷言或權杖中的群組成員資格數量:

  • 依群組類型篩選:部分 IdP (包括 Microsoft Entra ID) 可讓您設定篩選器,決定要在判斷或權杖中納入哪些群組。您可以設定篩選器,根據設定和您打算使用的服務,排除不相關的群組類型。

    下表說明您可能需要在斷言或權杖中加入哪些類型的群組,具體取決於您打算使用的服務:

    群組類型 Google Cloud Gemini (無須同步) Gemini (SCIM)
    存取權群組 -
    違規處置群組 -
    組織群組 不需要 * -
    協作群組 不需要 * -

    * 只有在使用以資料擷取為基礎的連接器時才須提供。

    • 如要管理 Google Cloud的存取權,您必須加入存取群組和強制執行群組。
    • 管理 Gemini Enterprise 存取權所需的篩選器,取決於您是否使用 SCIM。如果您使用 SCIM,Gemini Enterprise 會忽略斷言或權杖中包含的群組成員資格,因此您不需要納入任何 Gemini Enterprise 專屬群組。如果您未使用 SCIM,則必須納入 Gemini Enterprise 必要的存取群組和強制執行群組。視您是否打算使用以資料擷取為基礎的連結器而定,您可能也需要納入特定機構和協作群組。
  • 指派:部分 IdP (包括 Microsoft Entra ID) 可讓您將權杖和聲明中的群組成員資格限制為已指派的群組,也就是您明確指派給信賴方設定的群組。

  • 額外屬性篩選器:如果您使用 Microsoft Entra ID 並已啟用額外屬性功能,則可以使用 --extra-attributes-filter 旗標指定篩選器。員工身分聯盟會在要求群組成員時,將這個篩選條件傳遞至 Microsoft Graph API。

如要測試或排解篩選器問題,請使用 Google Cloud 控制台中的「Debug IdP token」(偵錯 IdP 權杖) 工具,或啟用詳細稽核記錄

Microsoft Entra ID:使用物件 ID 做為群組 ID

只有在使用 Microsoft Entra ID 做為 IdP 時,才適用這項最佳做法。

如果您使用 Microsoft Entra ID,可做為群組 ID 的 ID 包括:

  • 物件 ID (oid)
  • 電子郵件地址
  • 顯示名稱

在這些選項中,我們建議使用物件 ID (oid) 做為群組 ID,原因如下:

  • 所有群組都有物件 ID。相較之下,電子郵件地址是選填欄位,可能只會為 Microsoft 365 群組填入。
  • 物件 ID 不得重複,且無法變更。相較之下,群組的顯示名稱可以變更,且可能不是專屬名稱。

無論選擇哪個 ID,建議您避免套用轉換,例如強制將 ID 設為小寫。

管理存取權

存取限制和即時 (JIT) 管理的最佳做法。

使用 Cloud Identity 使用者進行緊急存取

為確保您能持續存取 Google Cloud 環境,請為每個環境建立緊急存取使用者。

當服務設定錯誤、遭入侵或無法正常運作時,緊急存取權使用者可提供 Google Cloud 環境的存取權。緊急存取使用者具有極高的權限,如果依賴員工身分聯盟驗證緊急存取使用者,可能會產生下列風險:

  • 工作團隊身分集區提供者設定有誤,可能會導致您無法登入。
  • 如果外部 IdP 發生服務中斷問題,您可能無法在最需要的時候使用緊急存取使用者。
  • 如果外部 IdP 遭到入侵,惡意行為者就能以緊急存取使用者身分通過驗證,並取得資源的廣泛存取權。 Google Cloud

為降低這些風險,請為緊急存取使用者採用 Cloud Identity 或 Google Workspace,即使您為其他使用者採用員工身分聯盟也一樣:

  • 在 Cloud Identity 中建立緊急存取使用者。
  • 將這些使用者排除在單一登入之外,讓他們使用使用者名稱和密碼進行驗證。
  • 為這些使用者註冊兩步驟驗證,並使用安全金鑰,確保帳戶安全。

如要進一步瞭解緊急存取權使用者,請參閱「持續存取 Google Cloud的最佳做法」。

使用 Cloud Identity 取得高權限存取權

高權限使用者可廣泛存取您的 Google Cloud 環境。這類使用者包括:

  • 具備組織管理員角色 (roles/resourcemanager.organizationAdmin) 的使用者
  • 具備「安全管理員」角色 (roles/iam.securityAdmin) 或類似角色,可修改資源階層重要部分的允許政策 Google Cloud

如果您為高權限使用者啟用員工身分聯盟,外部 IdP 的任何設定錯誤或遭入侵情形,都可能影響 Google Cloud 資源的安全。具體來說,如果外部 IdP 遭到入侵,惡意行為者就能以高權限使用者身分通過驗證,並取得 Google Cloud 資源的廣泛存取權。

為降低這些風險,請為高權限使用者採用 Cloud Identity:

  • 在 Cloud Identity 中建立高權限使用者。
  • 為這些使用者註冊兩步驟驗證,並使用安全金鑰,確保帳戶安全。
  • 如果已將 Cloud Identity 與外部 IdP 聯合,請為這些使用者啟用額外的單一登入驗證和兩步驟驗證

如果 IdP 已強制執行多重驗證,額外的單一登入驗證可能顯得多餘,但如果 IdP 遭到入侵,這項設定有助於保護使用者。Cloud Identity 支援額外的 SSO 驗證,但員工身分聯盟不支援。

使用機構政策限制控管聯盟

如果您使用 Cloud Identity 的目的不是緊急或高權限存取,請依服務劃分 Cloud Identity 聯盟和 Workforce Identity Federation 的使用情況。如要強制執行這項做法,請使用自訂機構政策限制,限制特定專案中允許的主體類型。

舉例來說,您可以執行下列操作,將員工身分聯盟限制為僅限 Gemini Enterprise:

  • 對使用 MemberTypeMatches 函式的 Gemini Enterprise 專案套用自訂組織政策限制,將允許的主體類型限制為 iam.googleapis.com/WorkforcePoolPrincipaliam.googleapis.com/WorkforcePoolPrincipalSet。這些是員工身分聯盟使用的主要類型。
  • 如果是其他專案,請套用限制,允許 iam.googleapis.com/WorkforcePoolPrincipaliam.googleapis.com/WorkforcePoolPrincipalSet 以外的所有主體類型。

使用自訂機構政策限制,有助於確保一致性,並避免意外使用錯誤的主體類型。

請勿授予集區中所有成員存取權

員工身分聯盟支援使用下列格式的萬用字元主體 ID:

principalSet://iam.googleapis.com/locations/global/workforcePools/
POOL_ID/*

這個 ID 會比對 IdP 允許向Google Cloud驗證身分的每位使用者。

請勿使用這個萬用字元 ID 授予權限。隨著 IdP 的使用者群組擴大,使用萬用字元主體 ID 授予存取權會導致權限過度。

請改為在 IdP 中建立存取權群組,並使用這些群組管理資源存取權。這種做法可確保存取權是由有意的群組成員資格控管,而非成功驗證,進而降低過度授權的風險。

限制工作階段長度

使用者登入時,員工身分聯盟會啟動工作階段。工作階段允許使用者執行下列操作:

  • 使用並在控制台 (聯合)、Gemini Enterprise 或其他支援員工身分聯盟的入口網站之間切換。
  • 使用受 IAP 保護的網頁應用程式。
  • 取得聯盟更新權杖聯盟存取權杖,例如執行 gcloud auth login

在發生下列任一情況前,工作階段都會維持有效:

  • 工作階段長度達到工作團隊身分集區定義的上限。
  • 工作階段長度達到使用者 SAML 判斷提示中 SessionNotOnOrAfter 屬性定義的上限 (如有)。
  • 使用者登出。

如果允許工作階段在較長的時間內保持有效,權杖遭竊的風險就會增加,且群組成員資訊可能會過時:

  • 如果從 IdP 撤銷權限,使用者可能會在一段時間後才失去存取權。
  • 使用者可能需要重新驗證並建立新的工作階段,才能行使新授予的存取權。

為降低這些風險,請限制工作階段長度,讓使用者每天至少要重新登入一次。

配合 JIT 存取權需求調整工作階段長度

如要管理具備特殊權限的存取權,您的 IdP 可能支援即時 (JIT) 群組,成員可以暫時啟用這類群組。使用即時群組管理 Google Cloud 或 Gemini Enterprise 的特殊存取權,可能會導致下列風險:

  • 延遲啟用:如果使用者在啟用即時群組成員資格時,有有效的工作階段,則必須登出並重新登入,成員資格變更才會生效。或者,如果員工身分集區供應商使用 SCIM,則必須先佈建群組成員資格變更,變更才會生效。
  • 延遲撤銷:如果群組成員資格到期,使用者必須登出並重新登入,或使用 SCIM 佈建群組成員資格變更,才會失去具備權限的存取權。視工作階段長度而定,這項延遲可能會破壞會員資格到期的目的。

為降低這些風險,請將工作團隊集區工作階段長度設定為足夠短。

監控活動

每當您發現Google Cloud中的資源有可疑活動時,Cloud 稽核記錄會提供重要資訊,協助您判斷活動發生時間和涉及的使用者。

啟用資料存取記錄

員工身分聯盟可產生記錄,方便您追蹤登入和權杖交換活動。Security Token Service API 會寫入這些記錄,包括下列方法

  • google.identity.sts.SecurityTokenService.WebSignIn
  • google.identity.sts.SecurityTokenService.WebSignOut
  • google.identity.sts.v1.SecurityTokenService.ExchangeToken
  • google.identity.sts.v1beta.SecurityTokenService.ExchangeToken

所有與登入和權杖交換活動相關的記錄,都會歸類為資料存取記錄,且預設為停用。如要擷取這些記錄,請在Google Cloud 貴機構中啟用 Security Token Service API 的資料存取記錄。如要進一步提高登入記錄的詳細程度,請啟用詳細稽核記錄

如要追蹤其他驗證相關活動,建議您啟用並使用下列記錄:

後續步驟