员工身份联合的 SCIM 配置

如果您的身份提供方 (IdP) 支持 跨网域身份管理系统 (SCIM), 您可以将 IdP 配置为在 Google Cloud中预配和管理群组。

功能

员工身份联合 SCIM 支持提供以下功能:

  • 身份同步: 将用户数据的只读副本从 IdP 同步到 ,以便全面了解用户属性和成员资格 Google Cloud。

  • 群组扁平化: SCIM 会处理 IdP 中的群组,以便将用户的所有直接和间接(嵌套)群组成员资格展平并同步到Google Cloud 群组成员资格服务 (GMS)。然后,IAM 会使用这些扁平化的群组进行政策检查,从而克服 IdP 令牌中常见的规模限制。

  • Gemini Enterprise 集成: SCIM 租户支持在 Gemini Enterprise 中共享内容。SCIM 租户支持与在 NotebookLM Enterprise 中共享笔记本相关的两项功能:

    • 自动补全电子邮件地址和群组

    • 使用群组的名称而非对象 ID (UUID)

    如需了解详情,请参阅与 群组共享笔记本。

注意事项

使用员工身份联合 SCIM 支持时,请注意以下事项:

  • 您必须先设置员工身份池和提供方,然后才能配置 SCIM 租户。
  • 每个员工身份池仅支持一个 SCIM 租户。如需在同一员工身份池中配置新的 SCIM 租户,您必须先删除现有租户。删除 SCIM 租户时,您有两种选择:
    • 软删除(默认): 删除 SCIM 租户会启动 30 天的软删除期。在此期间,租户处于隐藏状态且无法使用,并且您无法在同一员工身份池中创建新的 SCIM 租户。
    • 硬删除: 如需永久且立即删除 SCIM 租户,请将 --hard-delete 标志与删除命令结合使用。此操作不可逆,可让您在删除完成后立即在同一员工身份池中创建新的 SCIM 租户。或者,您可以创建新的员工身份池和新的 SCIM 租户,或使用之前未配置 SCIM 租户的员工身份池。
  • 使用 SCIM 时,您需要在员工身份池提供方和 SCIM 租户中映射属性。“google.subject”属性必须唯一 引用相同的身份。您可以使用 --attribute-mapping 标志在 员工身份池提供方中指定 google.subject,并使用 --claim-mapping 标志在 SCIM 租户中指定 google.subject。映射非唯一 身份值可能会导致 Google Cloud 将不同的 IdP 身份 视为同一身份。因此,授予一个用户或群组身份的访问权限可以扩展到其他身份,但撤消一个身份的访问权限可能不会撤消所有身份的访问权限。
  • 如需使用 SCIM 映射群组,请设置 --scim-usage=enabled-for-groups。使用 SCIM 映射群组时,系统会忽略员工身份池提供方中定义的任何群组映射。引用 SCIM 管理的群组时, 映射的属性为 google.group,而不是 google.groupsgoogle.groups 仅指令牌映射的群组。
  • 使用 SCIM 时,通过 --attribute-mapping映射的基于令牌的属性仍可用于身份验证和主账号 标识符。
  • 对于 Microsoft Entra ID 配置,如需在 Gemini Enterprise 中启用人类可读的群组名称,请使用 SCIM。

将 OIDC 和 SAML 提供方映射到 SCIM 配置

员工身份池提供方配置中的属性映射 (--attribute-mapping) 与 SCIM 租户中的声明映射 (--claim-mapping) 之间必须保持一致。用于填充 google.subject(针对用户)的基础 IdP 属性必须相同,无论它是从令牌声明还是 SCIM 属性读取的。

如果这些映射不一致,用户可能能够登录,但不会被识别为 SCIM 预配的群组的成员。例如,如果提供方对 google.subject 使用 assertion.email,则 SCIM 租户也必须对 google.subject 使用等效的 SCIM 属性(例如 user.emails[0].value)。

下表显示了令牌声明属性和 SCIM 属性之间的映射:

Google 属性 员工身份池提供方映射 SCIM 租户映射 (SCIM)
google.subject assertion.oid (EntraId) user.externalId
google.subject assertion.sub (Okta) user.externalId
google.subject assertion.preferred_username user.userName
google.subject assertion.preferred_username.lowerAscii() user.userName.lowerAscii()
google.subject assertion.email user.emails[0].value
google.subject assertion.email.lowerAscii() user.emails[0].value.lowerAscii()
google.group 不适用(使用 SCIM 映射) group.externalId

支持的端点和不支持的端点

支持以下标准 SCIM 协议端点:

  • /Users:管理用户资源。支持的操作:CreateGetUpdateDeletePatchPut

  • /Groups:管理群组资源。支持的操作:CreateGetUpdateDeletePatch。群组不支持 PUT 方法。

  • /Schemas:检索架构信息。

  • /ServiceProviderConfig:检索服务提供商配置。

不支持以下 SCIM 协议端点:

  • /Me

  • /Bulk

  • /Search

  • /ResourceTypes

限制

以下部分介绍了员工身份联合 SCIM 实现与 SCIM 规范(RFC 7643 和 7644)的限制和偏差。

协议功能限制

  • 过滤条件支持: 使用 /Users/Groups 端点列出用户或群组时,过滤条件表达式仅支持 eq(等于)运算符。您可以将多个 eq 过滤条件与 and 结合使用。不支持其他 SCIM 过滤条件运算符,例如 co(包含)或 sw(以开头)。

  • 分页: IAM SCIM API 不支持列出用户或群组的标准分页。

    • startIndex:此参数始终为 1。无论您为 startIndex 提供什么值,API 最多都会返回 100 个结果。

    • itemsPerPage:单个响应中返回的资源数量上限为 100。

    • totalResults:API 不会返回匹配资源的实际总数。响应中的 totalResults 字段始终等于该响应中返回的项数,上限为 100。

  • 获取群组和列出群组(不带过滤条件)GetGroupListGroups API 会返回一个空成员列表。如需检索特定群组的成员,请使用带有成员过滤条件的 ListGroups API。

  • 包含无效令牌的不合规 JSON 响应: 包含无效 API 令牌的 API 会导致返回 401 HTTP error 从 Google Cloud。响应不是规范要求的 JSON 结构。

SCIM 行为限制

  • 不可变标识符: 映射到 google.subjectgoogle.group 的 SCIM 属性的值在 中被视为不可变标识符 Google Cloud。如果您需要更改这些值,必须从 IdP 中永久删除用户或群组,然后使用新值重新创建。

  • 单个电子邮件要求: 为了成功进行 SCIM 同步,每个用户都必须拥有一个 work 类型的电子邮件地址。如果您的 IdP 发送多封电子邮件,或者提供的单封电子邮件未键入为 work,则预配或更新将失败。

  • 不区分大小写的转换: SCIM 声明映射支持有限的通用表达式语言 (CEL) 转换。 对于 user.userNameuser.emails[0].value,仅支持 .lowerAscii() 进行不区分大小写的比较。

属性限制

以下部分介绍了对用户、群组和企业用户架构扩展的属性支持。

用户属性

下表详细介绍了对用户属性的支持:

属性 子属性 支持 限制
userName 不适用 不适用
name formattedfamilyNamegivenNamemiddleNamehonorificPrefixhonorificSuffix 不适用
displayName 不适用 不适用
nickName 不适用 不适用
profileUrl 不适用 不适用
title 不适用 不适用
userType 不适用 不适用
preferredLanguage 不适用 不适用
locale 不适用 不适用
timezone 不适用 不适用
active 不适用 不适用
password 不适用 不适用
emails displaytypevalueprimary 仅支持 work 电子邮件类型。
phoneNumbers displaytypevalueprimary 不适用
ims displaytypevalue 不适用
photos displaytypevalue 不适用
addresses formattedstreetAddresslocalityregionpostalCodecountry 不适用
groups 不适用 不适用
entitlements displaytypevalue 不适用
roles typevalue 不支持 display
x509Certificates typevalue 不支持 display

群组属性

下表详细介绍了对群组属性的支持:

属性 支持的子属性
displayName 不适用
externalId 不适用
members valuetype$refdisplay

企业用户架构扩展属性

下表详细介绍了对企业用户架构扩展的支持:

属性 支持的子属性
employeeNumber 不适用
costCenter 不适用
organization 不适用
division 不适用
department 不适用
manager value$refdisplayName

后续步骤