如果您的身份提供方 (IdP) 支持跨网域身份管理系统 (SCIM),您可以将 IdP 配置为在 Google Cloud中预配和管理群组。
功能
员工身份联合 SCIM 支持提供以下功能:
身份同步:从您的 IdP 同步用户数据的只读副本,以便在 Google Cloud中全面了解用户属性和会员资格。
群组扁平化:SCIM 会处理来自 IdP 的群组,以便将用户的所有直接和间接(嵌套)成员资格扁平化并同步到Google Cloud 群组成员资格服务 (GMS)。然后,IAM 会使用这些扁平化群组进行政策检查,从而克服 IdP 令牌中经常出现的规模限制。
Gemini Enterprise 集成:SCIM 租户支持在 Gemini Enterprise 中共享内容。用户可以使用群组的名称(而不是其对象 ID [UUID])与群组共享 NotebookLM 笔记本。如需了解详情,请参阅与群组共享笔记本。
注意事项
使用员工身份联合 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 配置,您不应在创建员工身份池提供方时使用
--extended-attributes标志。
将 OIDC 和 SAML 提供方映射到 SCIM 配置
员工身份池提供方配置 (--attribute-mapping) 中的属性映射与 SCIM 租户 (--claim-mapping) 中的声明映射必须保持一致。用于填充 google.subject(针对用户)的基础 IdP 属性必须相同,无论它是从令牌声明还是 SCIM 属性中读取的。
如果这些映射不一致,用户可能可以登录,但不会被识别为通过 SCIM 预配的群组的成员。例如,如果提供方使用 assertion.email 表示 google.subject,则 SCIM 租户也必须使用等效的 SCIM 属性(例如 user.emails[0].value)表示 google.subject。
下表提供了将常见 IdP 令牌声明映射到 SCIM 属性的参考示例:
| Google 属性 | 员工身份池提供方映射(令牌) | SCIM 租户映射 (SCIM) |
|---|---|---|
google.subject |
assertion.oid |
user.externalId |
google.subject |
assertion.email |
user.emails[0].value |
google.subject |
assertion.email.lowerAscii() |
user.emails[0].value.lowerAscii() |
google.subject |
assertion.preferred_username |
user.userName |
google.subject |
assertion.sub |
不兼容 |
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。
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 |