配置第三方身份提供方
您可以使用 Cloud Identity、Google Workspace 或第三方身份提供方(例如 Okta 或 Azure AD)来管理用户、群组和身份验证。
本页介绍了如何通过配置员工身份联合来使用第三方身份提供方。如需了解如何使用 Cloud Identity 或 Google Workspace,请参阅配置 Google Cloud 身份提供程序。
借助 Google 的员工身份联合,您可以授予本地或多云工作负载对 Google Cloud资源的访问权限,而无需使用服务账号密钥。您可以将员工身份联合与任何支持 OpenID Connect (OIDC) 或 SAML 2.0 的 IdP(如 Microsoft Entra ID、Active Directory Federation Services [AD FS]、Okta 等)搭配使用。
Google 安全运营团队要求您使用 Google 的员工身份联合作为 SSO 代理,以实现以下目标:
- 有 FedRAMP High(或更高级别)合规性要求的客户。
- 客户访问 Google Security Operations 中由 Google Cloud启用的任何企业级控件,包括使用 Identity and Access Management (IAM) 的基于角色的访问权限控制 (RBAC) 数据和功能。
- 使用自助式凭据管理功能以编程方式访问 Chronicle API 的客户。
Google 安全运营团队支持为用户提供服务提供商发起的 SAML 单点登录 (SP 发起)。借助此功能,用户可以直接前往 Google 安全运营中心。Google 安全运营团队通过 Google Cloud Identity and Access Management (IAM)员工身份联合向第三方身份提供方 (IdP) 发出请求。
IdP 对用户身份进行身份验证后,系统会将用户返回到 Google 安全运营团队,并附上身份验证断言。 Google Cloud workforce identity federation 在身份验证流程中充当中介。
Google 安全运营、IAM 员工身份联合和 IdP 之间的通信
概括来讲,通信如下所示:
- 用户前往 Google Security Operations。
- Google Security Operations 会在 Google Cloud 员工身份池中查找 IdP 信息。
- 系统会向 IdP 发送请求。
- SAML 断言会发送到 Google Cloud 员工身份池。
- 如果身份验证成功,Google 安全运营团队只会收到您在员工身份池中配置员工提供程序时定义的 SAML 属性。
Google Security Operations 管理员在其身份提供程序中创建群组,配置 SAML 应用以在断言中传递群组成员资格信息,然后将用户和群组与 Google Security Operations IAM 中的预定义角色或他们创建的自定义角色相关联。
不支持 IdP 发起的登录(从 IdP 信息中心发起登录)。 如果贵组织需要此功能,请与您的 Google Security Operations 代表联系,申请使用此功能。
本文档简要介绍了使用 Google Cloud 员工身份联合通过第三方身份提供方 (IdP) 设置身份验证的步骤。执行本文档中的步骤后,您将能够使用第三方 IdP 访问 Google 安全运营中心,并使用员工身份联合功能通过 SAML SSO 管理对 Google 安全运营中心的访问权限。
准备工作
- 确保您熟悉 Cloud Shell、
gcloud
命令和 Google Cloud 控制台。 - 执行为 Google Security Operations 配置 Google Cloud 项目中的步骤,设置要绑定到 Google Security Operations 的项目。
- 熟悉 Google Cloud 员工身份联合。
- 确保您有权执行本文档中的步骤。如需了解新手入门流程的每个阶段所需的权限,请参阅所需角色。
以下步骤介绍了如何使用 gcloud
命令执行配置。如果某个步骤可以在 Google Cloud 控制台中执行,系统会提供指向相关 IAM 文档的链接。
规划实施
以下部分介绍了您在执行本文档中步骤之前必须做出的决策和定义的信息。
定义员工身份池和员工提供方
在此过程中,您将配置 Google Cloud 员工身份联合作为身份验证流程中的中介。为此,您需要创建以下 Google Cloud 资源:
员工身份池、员工身份提供方和 Google Security Operations 实例(由单个客户子网域标识)之间的关系如下所示:
- 员工身份池是在组织级定义的。
- 每个 Google 安全运营实例都配置了员工身份池并与其相关联。
- 一个员工身份池可以有多个员工提供方。
- 每个员工身份池提供方都会将第三方 IdP 与员工身份池集成。
- 您使用这些步骤创建的员工身份池必须专用于 Google SecOps。虽然您可以出于其他用途管理多个员工身份池,但为 Google SecOps 创建的员工身份池无法共享。
- 我们建议您在包含与 Google SecOps 绑定的项目的组织中创建员工身份池。 Google Cloud
预定义员工身份池和员工提供方相关信息有助于节省时间。您在配置 IdP SAML 应用和员工身份联合时需要使用这些信息。
为以下标识符选择值:
- 员工池 ID (
WORKFORCE_POOL_ID
):选择一个值,指明员工身份池的范围或用途。该值必须满足以下要求:- 必须是全局唯一的。
- 只能使用小写字符 [a-z]、数字 [0-9] 和短划线 [-]。
- 必须以小写字符 [a-z] 开头。
- 必须以小写字符 [a-z] 或数字 [0-9] 结尾。
- 长度在 4 到 61 个字符之间。
- 员工池显示名称 (
WORKFORCE_POOL_DISPLAY_NAME
):为员工身份池定义一个易于用户理解的名称。 - 员工群组说明 (
WORKFORCE_POOL_DESCRIPTION
):定义员工身份池的详细说明。 - 员工队伍提供方 ID (
WORKFORCE_PROVIDER_ID
):选择一个值来指明其代表的 IdP。该值必须满足以下要求:- 只能使用小写字符 [a-z]、数字 [0-9] 和短划线 [-]。
- 长度在 4 到 32 个字符之间。
- 员工队伍提供方显示名称 (
WORKFORCE_PROVIDER_DISPLAY_NAME
):为员工队伍提供方指定一个易于理解的名称。其长度必须少于 32 个字符。 - 员工提供方说明 (
WORKFORCE_PROVIDER_DESCRIPTION
):定义员工提供方的详细说明。
在 IdP 中定义用户属性和群组
在 IdP 中创建 SAML 应用之前,请确定需要哪些用户属性和群组才能在 Google 安全运营中配置对功能的访问权限。如需了解详情,请参阅使用 IAM 配置功能访问权限控制和 IAM 中的 Google 安全运营权限。
您需要在此流程的以下阶段提供这些信息:
配置 SAML 应用时,您需要创建规划期间定义的群组。您可以配置 IdP SAML 应用,以便在断言中传递群组成员资格。
创建员工身份提供方时,您需要将断言属性和组映射到 Google Cloud 属性。此信息会作为用户身份的一部分在断言声明中发送。
在 Google Security Operations 中设置基于角色的访问控制时,您可以使用用户属性和群组信息来配置对 Google Security Operations 功能的访问权限。
Google 安全运营中心提供了多个预定义角色,每个角色都允许访问特定功能。您可以将 IdP SAML 应用中定义的群组映射到这些预定义角色。
请务必为负责配置哪些用户和群组可以访问 SOAR 相关功能的管理员创建 IdP 群组。在初始配置过程中,您需要提供此群组名称,以便该群组中的用户能够设置对 SOAR 相关功能的访问控制。
配置 IdP
本部分仅介绍 IdP SAML 应用中与 Google Cloud 员工身份联合和 Google 安全运营集成所需的具体配置。
在您的 IdP 中创建一个新的 SAML 应用。
使用以下断言消费者服务 (ACS) 网址配置应用,该网址也称为单点登录网址,具体取决于服务提供商。
https://auth.backstory.chronicle.security/signin-callback/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID
替换以下内容:
WORKFORCE_POOL_ID
:您为员工身份池定义的标识符。WORKFORCE_PROVIDER_ID
:您为员工队伍提供方定义的标识符。如需了解这些值的说明,请参阅规划实现。
使用以下实体 ID(也称为 SP 实体 ID)配置应用。
https://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID
替换以下内容:
WORKFORCE_POOL_ID
:您为员工身份池定义的标识符。WORKFORCE_PROVIDER_ID
:您为员工队伍提供方定义的标识符。
在 IdP 中配置名称标识符,以确保 SAML 响应中返回
NameID
字段。您可以将此值设置为符合贵组织政策的值,例如电子邮件地址或用户名。如需了解如何配置此值,请参阅您的 IdP 文档。如需详细了解此要求,请参阅排查员工身份联合问题。
(可选)在 SAML 应用中创建群组属性。您在规划 IdP 实现时定义了这些值。
下载应用元数据 XML 文件。在下一部分中,您将使用 Cloud Shell 将此文件从本地系统上传到您的 Google Cloud 主目录。
配置员工身份联合
本部分仅介绍使用您在上一部分中创建的 IdP SAML 应用配置员工身份联合所需的具体步骤。如需详细了解如何管理员工身份池,请参阅管理员工身份池提供方
以对已与 Google 安全运营团队关联的项目拥有所需权限的用户身份打开 Google Cloud 控制台。您之前识别或创建了此用户。请参阅准备工作部分。
启动 Cloud Shell 会话。
设置 Google Cloud 为使用 gcloud CLI 执行的操作结算费用并扣减配额的项目。以以下
gcloud
命令为例:gcloud config set billing/quota_project PROJECT_ID
将
PROJECT_ID
替换为您在为 Google Security Operations 配置项目 Google Cloud 中创建的与 Google Security Operations 相关联的项目的项目 ID。如需了解用于标识项目的字段,请参阅创建和管理项目。如需了解配额,请参阅以下文档:
如果您遇到错误,请参阅配额错误
创建和配置员工身份池
您可以配置员工身份池,以便与外部身份提供方 (IdP) 或 Google Workspace 或 Cloud Identity 集成。
创建员工身份池。
为第三方 IdP 创建员工身份池:
以以下
gcloud
命令为例:gcloud iam workforce-pools create WORKFORCE_POOL_ID\ --location="global" \ --organization="ORGANIZATION_ID" \ --description="WORKFORCE_POOL_DESCRIPTION" \ --display-name="WORKFORCE_POOL_DISPLAY_NAME"
替换以下内容:
WORKFORCE_POOL_ID
:您为员工身份池定义的标识符。ORGANIZATION_ID
:组织的数字 ID。WORKFORCE_POOL_DESCRIPTION
:指定员工身份池的说明。WORKFORCE_POOL_DISPLAY_NAME
:为员工身份池指定一个用户友好的名称。
如需使用 Google Cloud 控制台执行此配置,请参阅创建池。
如果您想使用 Google Workspace 或 Cloud Identity 登录 Google SecOps,请将标志
--allowed-services domain=backstory.chronicle.security
和--disable-programmatic-signin
添加到该命令:gcloud iam workforce-pools create WORKFORCE_POOL_ID\ --location="global" \ --organization="ORGANIZATION_ID" \ --description="WORKFORCE_POOL_DESCRIPTION" \ --display-name="WORKFORCE_POOL_DISPLAY_NAME" \ --allowed-services domain=backstory.chronicle.security \ --disable-programmatic-signin
此命令会创建一个无法用于登录Google Cloud的员工队伍池,但您必须使用这些标志来解决这些场景。
如果命令行提示您启用 Chronicle API,请输入
Yes
。
创建员工身份提供方
依次点击 >,将 SAML 应用元数据文件上传到您的 Cloud Shell 主目录。文件只能上传到主目录。如需了解在 Cloud Shell 和本地工作站之间传输文件的更多选项,请参阅在 Cloud Shell 中上传和下载文件和文件夹。
更多记下您在 Cloud Shell 中上传 SAML 应用元数据 XML 文件的目录路径。下一步中您需要用到该路径。
创建员工身份池提供方,并指定 IdP 详细信息。
以以下
gcloud
命令为例:gcloud iam workforce-pools providers create-saml WORKFORCE_PROVIDER_ID \ --workforce-pool="WORKFORCE_POOL_ID" \ --location="global" \ --display-name="WORKFORCE_PROVIDER_DISPLAY_NAME" \ --description="WORKFORCE_PROVIDER_DESCRIPTION" \ --idp-metadata-path=PATH_TO_METADATA_XML \ --attribute-mapping="ATTRIBUTE_MAPPINGS"
如需详细了解这些值,请参阅规划实现。
替换以下内容:
WORKFORCE_PROVIDER_ID
:您为员工提供方 ID 定义的值。WORKFORCE_POOL_ID
:您为员工身份池 ID 定义的值。WORKFORCE_PROVIDER_DISPLAY_NAME
:员工提供方的易记名称。其长度必须少于 32 个字符。WORKFORCE_PROVIDER_DESCRIPTION
:员工提供方的说明。PATH_TO_METADATA_XML
:您使用 Cloud Shell 上传的应用元数据 XML 文件的 Cloud Shell 目录位置,例如:/path/to/sso_metadata.xml
。ATTRIBUTE_MAPPINGS
:定义了如何将断言属性映射到 Google Cloud 属性。通用表达式语言用于解读这些映射。例如:google.subject=assertion.subject,google.display_name=assertion.attributes.name[0],google.groups=assertion.attributes.groups
上例映射了以下属性:
assertion.subject
转换为google.subject
。这是最低要求。- 将
assertion.attributes.name[0]
映射到google.display_name
。 assertion.attributes.groups
添加到google.groups
属性。
如果您要为 Google Security Operations(包括 Google Security Operations SIEM 和 Google SecOps SOAR)执行此配置,则还必须映射 Google SecOps SOAR 所需的以下属性:
attribute.first_name
attribute.last_name
attribute.user_email
google.groups
详细了解如何为 Google SecOps SOAR 预配和映射用户。
默认情况下,Google 安全运营会从以下不区分大小写的断言属性名称中读取组信息:
_assertion.attributes.groups_
、_assertion.attributes.idpGroup_
和_assertion.attributes.memberOf_
。在配置 SAML 应用以在断言中传递群组成员资格信息时,请将群组属性名称设置为
_group_
、_idpGroup_
或_memberOf_
。在示例命令中,您可以将
assertion.attributes.groups
替换为assertion.attributes.idpGroup
或assertion.attributes.memberOf
,这代表您在 IdP SAML 应用中配置的群组属性的名称,该属性在断言中包含群组成员资格信息。以下示例将多个组映射到
google.groups
属性:google.groups="(has(assertion.attributes.idpGroup) ? assertion.attributes.idpGroup : []) + (has(assertion.attributes.groups) ? assertion.attributes.groups : []) + (has(assertion.attributes.memberof) ? assertion.attributes.memberof : [])"
以下示例将包含特殊字符的组
http://schemas.xmlsoap.org/ws/2005/05/identity/claims/group
映射到google.groups
:google.groups="assertion.attributes['http://schemas.xmlsoap.org/ws/2005/05/identity/claims/group']"
如需详细了解如何映射属性,请参阅属性映射。
如需使用 Google Cloud 控制台执行此配置,请参阅创建 SAML 提供方。
授予角色以启用 Google Security Operations 登录
以下步骤介绍了如何使用 IAM 授予特定角色,以便用户可以登录 Google 安全运营中心。使用您之前创建的与 Google Security Operations 相关联的项目进行配置。 Google Cloud
本示例使用 gcloud
命令。如需使用 Google Cloud 控制台,请参阅授予单个角色。
向应有权访问 Google Security Operations 应用的用户或群组授予 Chronicle API Viewer (
roles/chronicle.viewer
) 角色。以下示例向使用您之前创建的员工身份池和员工提供方管理的身份授予了 Chronicle API Viewer 角色。
gcloud projects add-iam-policy-binding PROJECT_ID \ --role roles/chronicle.viewer \ --member "principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/*"
替换以下内容:
PROJECT_ID
:填写您在为 Google Security Operations 配置项目 Google Cloud 中配置的与 Google Security Operations 相关联的项目的项目 ID。如需了解用于标识项目的字段,请参阅创建和管理项目。WORKFORCE_POOL_ID
:您为员工身份池 ID 定义的值。
如需向特定群组授予 Chronicle API Viewer 角色,请运行以下命令:
gcloud projects add-iam-policy-binding PROJECT_ID \ --role roles/chronicle.viewer \ --member "principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/group/GROUP_ID"
替换
GROUP_ID
:映射的google.groups
声明中的群组。配置其他 IAM 政策,以满足贵组织的要求。
必需:如需完成身份验证并允许用户访问 Google SecOps 平台,您需要从 Google SecOps 的 SOAR 端配置用户访问权限。如需了解详情,请参阅在 Google SecOps 平台中映射用户。
验证或配置 Google Security Operations 功能访问权限控制
如果您配置了员工身份联合,并将属性或群组映射到 google.groups
属性,系统会将此信息传递给 Google Security Operations,以便您为 Google Security Operations 功能配置基于角色的访问权限控制 (RBAC)。
如果 Google Security Operations 实例已有 RBAC 配置,请验证原始配置是否按预期运行。
如果您之前未配置访问权限控制,请参阅使用 IAM 配置功能访问权限控制,了解如何控制对功能的访问权限。
修改员工身份联合配置
如果您需要更新员工身份池或员工提供方,请参阅管理员工身份池提供方,了解如何更新配置。
创建 SAML 员工身份池提供方中的密钥管理部分介绍了如何更新 IdP 签名密钥,然后使用最新的应用元数据 XML 文件更新员工身份提供方配置。
以下是用于更新工作力提供程序配置的 gcloud
命令示例:
gcloud iam workforce-pools providers update-saml WORKFORCE_PROVIDER_ID \
--workforce-pool=WORKFORCE_POOL_ID \
--location="global" \
--display-name="WORKFORCE_PROVIDER_DISPLAY_NAME" \
--description="WORKFORCE_PROVIDER_DESCRIPTION" \
--idp-metadata-path=PATH_TO_METADATA_XML \
--attribute-mapping="ATTRIBUTE_MAPPINGS"
替换以下内容:
WORKFORCE_PROVIDER_ID
:您为员工提供方 ID 定义的值。WORKFORCE_POOL_ID
:您为员工身份池 ID 定义的值。WORKFORCE_PROVIDER_DISPLAY_NAME
:员工提供方的易记名称。该值必须少于 32 个字符。WORKFORCE_PROVIDER_DESCRIPTION
:员工提供方的说明。PATH_TO_METADATA_XML
:更新后的应用元数据 XML 文件的位置,例如:/path/to/sso_metadata_updated.xml
。ATTRIBUTE_MAPPINGS
:映射到的断言属性到 Google Cloud 属性。例如:google.subject=assertion.subject,google.display_name=assertion.attributes.name[0],google.groups=assertion.attributes.memberOf
为确保 Google SecOps RBAC 继续按预期运行,还应将 google.groups
属性映射到用于在 Google SecOps 中定义角色的所有群组。
排查配置问题
如果您在此过程中遇到错误,请参阅排查员工身份联合问题以解决常见问题。以下部分介绍了执行本文档中步骤时遇到的常见问题。
如果您仍然遇到问题,请与您的 Google SecOps 代表联系,并提供 Chrome 网络日志文件。
创建员工身份池提供方时出现 command not found
错误
在创建员工身份池提供方并指定 IdP 详细信息时,您收到以下错误:
Error: bash: --attribute-mapping=google.subject=assertion.subject,
google.display_name=assertion.attributes.name[0],
google.groups=assertion.attributes.groups: command not found
检查 PATH_TO_METADATA_XML
是否是您将 SAML 应用元数据 XML 文件上传到 Cloud Shell 主目录的位置。
The caller does not have permission
个错误
运行 gcloud projects add-iam-policy-binding
命令向用户或群组授予角色时,您收到以下错误:
ERROR: (gcloud.organizations.add-iam-policy-binding) User [ ] does not have
permission to access organizations instance [538073083963:getIamPolicy]
(or it may not exist): The caller does not have permission
检查您是否拥有所需的权限。如需了解详情,请参阅必需的角色。
后续步骤
完成本文档中的步骤后,请执行以下操作:
如果您尚未设置审核日志记录,请继续启用 Google Security Operations 审核日志记录。
如果您要为 Google Security Operations 进行配置,请按照在 Google Security Operations 中预配、身份验证和映射用户中的说明执行其他步骤。
如需配置对功能的访问权限,请按照使用 IAM 配置功能访问权限控制和 IAM 中的 Google 安全运营权限中的其他步骤操作
需要更多帮助?向社区成员和 Google SecOps 专业人士寻求解答。