在 OIDC 或 SAML IdP 中設定 SCIM

本文說明如何在員工身分集區中設定 SCIM 租戶。如要進一步瞭解 SCIM,請參閱「員工身分聯盟的 SCIM 佈建」。

每個員工身分集區僅支援一個 SCIM 租戶。如要在已設有 SCIM 租戶的集區中設定新的租戶,請先強制刪除現有租戶

SCIM 租戶的 --claim-mapping 標記只能包含特定的一般運算語言 (CEL) 運算式。如要瞭解支援哪些運算式,請參閱「對應權杖和 SCIM 屬性」。

如要設定跨網域身分識別管理系統 (SCIM),請按照下列步驟操作:
  1. 在 Google Cloud中設定 SCIM 租戶和權杖
  2. 在 OIDC 或 SAML IdP 中設定 SCIM
  3. 更新供應商以啟用 SCIM
  4. 驗證 SCIM 同步處理

在 Google Cloud中設定 SCIM 租戶和權杖

如要在 Google Cloud中設定 SCIM 租戶,請按照下列步驟操作:

  1. 建立 SCIM 租戶。

        gcloud iam workforce-pools providers scim-tenants create SCIM_TENANT_ID \
            --workforce-pool="WORKFORCE_POOL_ID" \
            --provider="PROVIDER_ID" \
            --display-name="SCIM_TENANT_DISPLAY_NAME" \
            --description="SCIM_TENANT_DESCRIPTION" \
            --claim-mapping="CLAIM_MAPPING" \
            --location="global"
        

    更改下列內容:

    • SCIM_TENANT_ID:SCIM 租戶的 ID。
    • WORKFORCE_POOL_ID:您在本文件中稍早建立的員工集區 ID。
    • PROVIDER_ID:您在本文件中稍早建立的員工身分集區提供者 ID。
    • SCIM_TENANT_DISPLAY_NAME:SCIM 租戶的顯示名稱。
    • SCIM_TENANT_DESCRIPTION:SCIM 租戶的說明。
    • CLAIM_MAPPING:逗號分隔的屬性對應清單。如需對應屬性的擴充清單,請參閱「對應權杖和 SCIM 屬性」。建議您為 Gemini Enterprise 採用下列對應:
      google.subject=user.emails[0].value.lowerAscii(),google.group=group.externalId

      您在 SCIM 租戶中對應的 google.subject 屬性,必須使用 --attribute-mapping 旗標,在員工身分集區供應商的 google.subject 屬性中,專指相同的對應身分。 建立 SCIM 租戶後,您就無法更新聲明對應。如要更換,可以強制刪除 SCIM 租戶,然後立即建立新的租戶。如要進一步瞭解使用 SCIM 的注意事項,請參閱「SCIM 支援」。

  2. 指令完成後,請執行下列操作:

    1. 在輸出內容的 baseUri 欄位中,儲存格式為 https://iamscim.googleapis.com/v1alpha1/tenants/SCIM_TENANT_UID 的完整 URI。您必須將這個 URI 提供給 IdP。
    2. 此外,請只儲存 URI 中的 SCIM_TENANT_UID。 您需要這個 UID,才能在本文件的後續部分中,對 SCIM 租戶設定 IAM 允許政策。
  3. 建立 SCIM 權杖:

        gcloud iam workforce-pools providers scim-tenants tokens create SCIM_TOKEN_ID \
            --display-name DISPLAY_NAME \
            --scim-tenant SCIM_TENANT_ID \
            --workforce-pool WORKFORCE_POOL_ID \
            --provider PROVIDER_ID \
            --location global
        

    更改下列內容:

    • SCIM_TOKEN_ID:SCIM 權杖的 ID
    • DISPLAY_NAME:SCIM 權杖的顯示名稱
    • WORKFORCE_POOL_ID:工作團隊集區的 ID
    • SCIM_TENANT_ID:SCIM 租戶的 ID
    • PROVIDER_ID:工作團隊身分集區提供者的 ID
  4. gcloud iam workforce-pools providers scim-tenants tokens create 指令完成後,請執行下列操作:

    1. 在輸出中,將 SCIM_TOKEN 的值儲存在 securityToken 欄位中。您必須將這個安全權杖提供給 IdP。安全權杖只會顯示在這個輸出內容中, 如果遺失,您必須建立新的 SCIM 權杖。

    2. 如要檢查 SCIM_TOKEN 是否遭貴機構政策拒絕,請執行下列指令:

      curl -v -H "Authorization: Bearer SCIM_TOKEN"  https://iamscim.googleapis.com/v1alpha1/tenants/SCIM_TENANT_UID/Users

      如果指令失敗並顯示權限相關錯誤,請執行 gcloud organizations add-iam-policy-binding (稍後步驟會說明)。如果指令成功,可以略過該步驟。

  5. 在 SCIM 租戶和權杖上設定 IAM 允許政策。如果上一個步驟中的 curl 指令因權限相關錯誤而失敗,請執行下列指令:

        gcloud organizations add-iam-policy-binding ORGANIZATION_ID \
            --member=serviceAccount:SERVICE_AGENT_EMAIL \
            --role roles/iam.scimSyncer
        

    請替換下列項目:

    • ORGANIZATION_ID:組織 ID。
    • SERVICE_AGENT_EMAIL:服務專員的電子郵件地址。電子郵件地址的格式如下:o-ORGANIZATION_ID-SCIM_TENANT_UID@gcp-sa-iamscim.iam.gserviceaccount.com。建立 SCIM 租戶時,系統會傳回 SCIM_TENANT_UID

在 IdP 中佈建群組時,請確保每個群組的顯示名稱 (在 displayName 欄位中提供) 在 SCIM 租戶中是唯一的。如要進一步瞭解 Microsoft Entra ID 中的群組和 SCIM,請參閱「群組」。

在 OIDC 或 SAML IdP 中設定 SCIM

在 IdP 中,按照 IdP 說明文件設定 SCIM。使用上一步取得的 SCIM 網址和 SCIM 權杖。

更新供應商以啟用 SCIM

如要為供應商啟用 SCIM,請按照下列步驟操作:

OIDC

      gcloud iam workforce-pools providers update-oidc PROVIDER_ID \
          --workforce-pool=WORKFORCE_POOL_ID \
          --location=LOCATION \
          --scim-usage=enabled-for-groups
    

請替換下列項目:

  • PROVIDER_ID:工作團隊身分集區提供者的 ID
  • WORKFORCE_POOL_ID:工作團隊集區的 ID
  • LOCATION:工作團隊集區的位置

SAML

      gcloud iam workforce-pools providers update-saml PROVIDER_ID \
          --workforce-pool=WORKFORCE_POOL_ID \
          --location=LOCATION \
          --scim-usage=enabled-for-groups
    

請替換下列項目:

  • PROVIDER_ID:工作團隊身分集區提供者的 ID
  • WORKFORCE_POOL_ID:工作團隊集區的 ID
  • LOCATION:工作團隊集區的位置

如要驗證 SCIM 同步處理,請參閱「驗證 SCIM 同步處理」。

對應權杖和 SCIM 屬性

您必須在工作團隊身分集區提供者和為提供者設定的 SCIM 租戶中,一致地對應屬性。工作團隊身分集區提供者使用 --attribute-mapping 旗標,SCIM 租戶則使用 --claim-mapping 旗標。無論是在權杖或 SCIM 對應中定義,對應至使用者 google.subject 的 IdP 屬性都必須專指同一身分。如要進一步瞭解使用 SCIM 時如何對應屬性,請參閱「 SCIM 支援」一節。下表說明如何對應權杖聲明中的屬性和 SCIM 屬性:

Google 屬性 工作團隊身分集區提供者對應 SCIM 租戶對應
google.subject assertion.sub user.externalId
google.group 請務必向供應商提供 --scim-usage=enabled-for-groups N/A group.externalId

驗證 SCIM 同步

設定 SCIM 後,您可以使用 curl 驗證使用者和群組是否正確同步至 Google Cloud。這些指令需要有效的 SCIM 權杖和 SCIM 租戶 ID。

驗證使用者同步程序

如要確認使用者是否已正確同步,請使用下列篩選器搜尋使用者的 userName

curl -H "Authorization: Bearer SCIM_TOKEN" \
  "https://iamscim.googleapis.com/v1alpha1/tenants/SCIM_TENANT_UID/Users?filter=userName%20eq%20%22USER_NAME%22"

回應範例:

{
  "schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
  "totalResults": 1,
  "Resources": [
    {
      "id": "USER_ID",
      "userName": "USER_NAME",
      ...
    }
  ]
}

驗證群組同步

如要確認群組是否已正確同步,請使用下列篩選器搜尋群組的 displayName

curl -H "Authorization: Bearer SCIM_TOKEN" \
  "https://iamscim.googleapis.com/v1alpha1/tenants/SCIM_TENANT_UID/Groups?filter=displayName%20eq%20%22GROUP_NAME%22"

回應範例:

{
  "schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
  "totalResults": 1,
  "Resources": [
    {
      "id": "GROUP_ID",
      "displayName": "GROUP_NAME",
      ...
    }
  ]
}

驗證群組成員資格

如要確認特定使用者是否為群組成員,請使用同時指定群組 ID 和使用者 ID 的篩選器。

curl -H "Authorization: Bearer SCIM_TOKEN" \
  "https://iamscim.googleapis.com/v1alpha1/tenants/SCIM_TENANT_UID/Groups?filter=id%20eq%20%22GROUP_ID%22%20and%20members%20eq%20%22USER_ID%22"

如果使用者是成員,回應範例如下:

{
  "schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
  "totalResults": 1,
  "Resources": [
    {
      "id": "GROUP_ID",
      "displayName": "GROUP_NAME",
      ...
    }
  ]
}

如果使用者不是會員,系統會傳回以下範例回應:

{
  "schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
  "totalResults": 0,
  "Resources": []
}

注意:如要取得 GROUP_IDUSER_ID,請先使用 displayNameuserName 篩選器找出群組和使用者。系統會在回應的 id 欄位中傳回 ID。將 SCIM_TOKENSCIM_TENANT_UIDUSER_NAMEGROUP_NAMEGROUP_IDUSER_ID 替換為實際值。

強制刪除 SCIM 租戶

如要強制刪除 SCIM 租戶,請按照下列步驟操作:

  1. 如果供應商已設定 --scim-usage=enabled-for-groups,請從供應商設定中停用:
              gcloud iam workforce-pools providers update-oidc
              --provider=PROVIDER_ID \
              --workforce-pool=WORKFORCE_POOL_ID \
              --location= global
              --scim-usage=SCIM_USAGE_UNSPECIFIED
            

    請替換下列項目:

    • PROVIDER_ID:工作團隊身分集區提供者的 ID
    • WORKFORCE_POOL_ID:工作團隊集區的 ID

  2. 刪除 SCIM 租戶:
      gcloud iam workforce-pools providers scim-tenants delete SCIM_TENANT_ID \
          --workforce-pool=WORKFORCE_POOL_ID \
          --provider=PROVIDER_ID \
          --hard-delete \
          --location=global
    

    請替換下列項目:

    • SCIM_TENANT_ID:要刪除的 SCIM 租戶 ID
    • WORKFORCE_POOL_ID:工作團隊集區的 ID
    • PROVIDER_ID:工作團隊身分集區提供者的 ID
    如要進一步瞭解 SCIM (包括如何刪除 SCIM 租戶),請參閱「SCIM 支援」。

後續步驟