如果您的身份提供方 (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.groups。google.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:管理用户资源。支持的操作:Create、Get、Update、Delete、Patch和Put。/Groups:管理群组资源。支持的操作:Create、Get、Update、Delete和Patch。群组不支持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。
获取群组和列出群组(不带过滤条件):
GetGroup和ListGroupsAPI 会返回一个空成员列表。如需检索特定群组的成员,请使用带有成员过滤条件的ListGroupsAPI。包含无效令牌的不合规 JSON 响应: 包含无效 API 令牌的 API 会导致返回
401 HTTP error从 Google Cloud。响应不是规范要求的 JSON 结构。
SCIM 行为限制
不可变标识符: 映射到
google.subject或google.group的 SCIM 属性的值在 中被视为不可变标识符 Google Cloud。如果您需要更改这些值,必须从 IdP 中永久删除用户或群组,然后使用新值重新创建。单个电子邮件要求: 为了成功进行 SCIM 同步,每个用户都必须拥有一个
work类型的电子邮件地址。如果您的 IdP 发送多封电子邮件,或者提供的单封电子邮件未键入为work,则预配或更新将失败。不区分大小写的转换: SCIM 声明映射支持有限的通用表达式语言 (CEL) 转换。 对于
user.userName和user.emails[0].value,仅支持.lowerAscii()进行不区分大小写的比较。
属性限制
以下部分介绍了对用户、群组和企业用户架构扩展的属性支持。
用户属性
下表详细介绍了对用户属性的支持:
| 属性 | 子属性 | 支持 | 限制 |
|---|---|---|---|
userName |
不适用 | 是 | 不适用 |
name |
formatted、familyName、givenName、middleName、honorificPrefix、honorificSuffix |
是 | 不适用 |
displayName |
不适用 | 是 | 不适用 |
nickName |
不适用 | 是 | 不适用 |
profileUrl |
不适用 | 是 | 不适用 |
title |
不适用 | 是 | 不适用 |
userType |
不适用 | 是 | 不适用 |
preferredLanguage |
不适用 | 是 | 不适用 |
locale |
不适用 | 是 | 不适用 |
timezone |
不适用 | 是 | 不适用 |
active |
不适用 | 是 | 不适用 |
password |
不适用 | 否 | 不适用 |
emails |
display、type、value、primary |
是 | 仅支持 work 电子邮件类型。 |
phoneNumbers |
display、type、value、primary |
是 | 不适用 |
ims |
display、type、value |
是 | 不适用 |
photos |
display、type、value |
是 | 不适用 |
addresses |
formatted、streetAddress、locality、region、postalCode、country |
是 | 不适用 |
groups |
不适用 | 否 | 不适用 |
entitlements |
display、type、value |
是 | 不适用 |
roles |
type、value |
是 | 不支持 display。 |
x509Certificates |
type、value |
是 | 不支持 display。 |
群组属性
下表详细介绍了对群组属性的支持:
| 属性 | 支持的子属性 |
|---|---|
displayName |
不适用 |
externalId |
不适用 |
members |
value、type、$ref、display |
企业用户架构扩展属性
下表详细介绍了对企业用户架构扩展的支持:
| 属性 | 支持的子属性 |
|---|---|
employeeNumber |
不适用 |
costCenter |
不适用 |
organization |
不适用 |
division |
不适用 |
department |
不适用 |
manager |
value、$ref、displayName |