借助员工身份联合,您可以使用 PingFederate 作为身份提供方 (IdP) 对员工进行身份验证,以便访问 Cloud de Confiance by S3NS。配置安全断言标记语言 (SAML) 2.0 集成后,联合用户可以登录支持员工身份联合的 Cloud de Confiance 服务。
准备工作
- 确保您已设置 Cloud de Confiance 组织。
-
将环境变量
GOOGLE_CLOUD_UNIVERSE_DOMAIN设置为s3nsapis.fr。 -
安装 Google Cloud CLI,然后使用联合身份登录 gcloud CLI。 登录后,运行以下命令来初始化 Google Cloud CLI:
gcloud init - 如需登录,您的 IdP 必须提供已签名的身份验证信息:SAML IdP 响应必须经过签名。
- 如需接收有关贵组织或Cloud de Confiance 产品的变更的重要信息,您必须提供必要的联系人。如需了解详情,请参阅员工身份联合概览。
费用
员工身份联合是一项免费功能。不过,员工身份联合的详细审核日志记录使用 Cloud Logging。如需了解 Logging 价格,请参阅 Google Cloud Observability 价格。
所需的角色
如需获得配置员工身份联合所需的权限,请让您的管理员为您授予组织的 IAM Workforce Pool Admin (roles/iam.workforcePoolAdmin) IAM 角色。
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
如果您是在开发或测试环境(而非生产环境)中配置权限,则可以授予 IAM Owner (roles/owner) 基本角色。此角色还包含员工身份联合所需的权限。
创建员工身份池
gcloud
如需创建员工身份池,请运行以下命令:
gcloud iam workforce-pools create WORKFORCE_POOL_ID \
--organization=ORGANIZATION_ID \
--display-name="DISPLAY_NAME" \
--description="DESCRIPTION" \
--session-duration=SESSION_DURATION \
--location=global
替换以下内容:
WORKFORCE_POOL_ID:您选择用于表示您的 Cloud de Confiance 员工群组的 ID。池 ID 在 Cloud de Confiance中的所有员工身份池中必须具有全局唯一性。如需了解如何设置 ID 的格式,请参阅 API 文档中的查询参数部分。ORGANIZATION_ID:员工身份池所属 Cloud de Confiance 组织的数字形式组织 ID。员工身份池可在组织中的所有项目和文件夹中使用。DISPLAY_NAME:可选。您的员工身份池的显示名称。DESCRIPTION:可选。员工身份池说明。SESSION_DURATION:可选。会话时长,以在后面附加s的数字表示,例如3600s。会话时长,用于确定来自此员工池的 Cloud de Confiance 访问令牌、控制台(联合)登录会话和 gcloud CLI 登录会话的有效时长。会话时长默认为 1 小时(3600 秒)。会话时长值必须介于 15 分钟(900 秒)到 12 小时(43200 秒)之间。
控制台
如需创建员工身份池,请执行以下操作:
在 Cloud de Confiance 控制台中,前往员工身份池页面:
为员工身份池选择组织。员工身份池可在组织中的所有项目和文件夹中使用。
点击创建池,然后执行以下操作:
在名称字段中,输入池的显示名称。池 ID 是根据您输入的名称自动派生的,并显示在名称字段下方。您可以点击池 ID 旁边的修改来更新池 ID。
可选:在说明中,输入池的说明。
如需创建员工身份池,请点击下一步。
员工身份池的会话时长默认为 1 小时(3600 秒)。会话时长用于确定来自此员工池的 Cloud de Confiance 访问令牌以及控制台(联合)和 gcloud CLI 登录会话的有效时长。创建池后,您可以更新池以设置自定义会话时长。会话时长必须介于 15 分钟(900 秒)到 12 小时(43200 秒)之间。
创建 PingFederate 应用
本部分介绍如何创建 PingFederate Application Integration。
如需设置使用 SAML 2.0 协议的 PingFederate 应用,请在 PingFederate 中执行以下操作:
- 设置 PingFederate IdP 的 SAML 2.0 实体 ID。如需了解详情,请参阅指定联合信息。
创建 SAML 2.0 SP 连接,请参阅选择 SP 连接类型,然后执行以下操作:
- 在连接类型中,选择浏览器单点登录配置文件和 SAML 2.0 协议。
- 在导入元数据中,选择无。
在常规信息中,将合作伙伴的实体 ID(连接 ID)设置为:
https://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID在 SAML 配置文件中,启用由服务提供商发起的单点登录。如果您还计划使用 IdP 发起的单点登录 (SSO),也可以启用该功能。
在属性协定中,定义要在断言中传递的自定义属性(例如电子邮件和群组)。这些属性稍后可在 Cloud de Confiance 中用于创建访问管理政策。
在属性协定履行中,确保
SAML_SUBJECT映射到对每个用户都具有唯一值的字段。例如,邮箱通常对每个用户都是唯一的,不会更改,并且经常用于在 Cloud de Confiance 访问管理政策中指代特定用户。如需设置控制台(联合)登录,请在断言消费者服务网址中添加以下端点网址:
https://auth.cloud.s3nscloud.fr/signin-callback/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID替换以下内容:
WORKFORCE_POOL_ID:您之前创建的员工池的 ID。WORKFORCE_PROVIDER_ID:您稍后创建的员工提供方的 ID。
将此端点的绑定设置为 POST。
如需启用控制台(联合)登录,请在允许的 SAML 绑定中选择重定向。
在 Signature Policy(签名政策)部分,选择 Sign Response As Required(根据需要签署响应)。
保存并启用连接。
使用属性
本部分介绍了如何使用 SAML 断言中的属性。
使用属性协定在生成的 SAML 断言中指定自定义属性。配置属性后,您可以在 Cloud de Confiance by S3NS 中使用这些属性来创建访问管理政策。如需详细了解属性协定,请参阅 PingFederate 服务器文档中的属性协定。
例如,在本指南中,我们将 PingOne 用作 PingFederate 的数据存储区,并使用 PingOne 数据存储区中的用户属性映射 email、firstName 和 groups 属性协定,如下所示:
| 属性合同 | 值 |
|---|---|
email |
email |
firstName |
name.given |
groups |
memberOfGroupIDs |
创建 PingFederate 员工身份池提供方
本部分介绍如何创建员工身份池提供方,以便您的 IdP 用户能够访问 Cloud de Confiance。您可以将提供方配置为使用 SAML 协议。
创建 SAML 2.0 员工身份池提供方
如需配置 SAML 应用,请执行以下操作:
gcloud
如需创建 SAML 员工身份池提供方,请运行以下命令:
gcloud iam workforce-pools providers create-saml WORKFORCE_PROVIDER_ID \ --workforce-pool="WORKFORCE_POOL_ID" \ --display-name="DISPLAY_NAME" \ --description="DESCRIPTION" \ --idp-metadata-path="XML_METADATA_PATH" \ --attribute-mapping="ATTRIBUTE_MAPPING" \ --attribute-condition="ATTRIBUTE_CONDITION" \ --location=global替换以下内容:
WORKFORCE_PROVIDER_ID:提供方 ID。WORKFORCE_POOL_ID:员工身份池 ID。DISPLAY_NAME:显示名称。DESCRIPTION:说明。XML_METADATA_PATH:PingFederate 中 XML 格式的元数据文件的路径。ATTRIBUTE_MAPPING:属性映射;例如google.subject=assertion.subject,google.groups=assertion.attributes.groups,attribute.department=assertion.attributes.department[0]。ATTRIBUTE_CONDITION:可选属性条件;例如,如需将ipaddr属性限制为特定 IP 范围,请将条件设置为assertion.ipaddr.startsWith('98.11.12.')。
此命令会将 SAML 断言中的
subject、groups和department分别分配给google.subject、google.groups和attribute.department属性。该属性条件还可确保只有特定 IP 范围内的用户才能使用此员工提供方登录。控制台
如需使用 Cloud de Confiance 控制台配置 SAML 提供方,请执行以下操作:
- 在 Cloud de Confiance 控制台中,前往员工身份池页面: 前往员工身份池
- 在员工身份池表中,选择要为其创建提供方的池。
- 在提供方部分中,点击 添加提供方。
- 在选择提供商供应商列表中,选择通用身份提供方。
- 在选择身份验证协议中,选择 SAML。
- 在创建提供方部分中,执行以下操作:
- 在名称中,输入提供方的名称。
- 可选:在说明中,输入提供方的说明。
- 在 IDP 元数据文件 (XML) 中,选择 PingFederate 中的元数据 XML 文件。
- 如需创建状态为已启用的提供方,请确保启用提供方处于开启状态。
- 点击继续。
- 在分享您的提供方信息部分中,点击继续。
- 可选:如需启用详细审核日志记录,请在配置提供方部分的详细日志记录中,点击启用属性值审核日志记录切换开关。
员工身份联合详细审核日志记录会将从 IdP 接收的信息记录到 Logging。详细的审核日志记录有助于排查员工身份池提供方配置的问题。如需了解如何通过详细审核日志记录来排查属性映射错误,请参阅一般属性映射错误。如需了解 Logging 价格,请参阅 Google Cloud Observability 价格。
如需为员工身份池提供方停用详细审计日志记录,请在创建提供方时将启用属性值审计日志记录切换开关保持关闭状态。如需停用详细审计日志记录,您还可以更新提供方。
- 如需创建提供方,请点击提交。
创建提供方后,系统会将您重定向到提供方属性页面。
如需配置属性映射和条件,请执行以下操作:
- 出现提示时,登录您的外部 IdP 以验证默认属性映射。
在提供方属性页面上,查看和修改属性映射和条件:
如需添加或修改属性映射,请执行以下操作:
- 点击添加映射以添加新映射,或修改现有映射。
- 在 Google n 字段中(其中 n 为数字),选择 Cloud de Confiance支持的密钥。
在相应的 SAML n 字段中,输入 IdP 属性名称或 CEL 表达式,例如:
google.subject=assertion.subject, google.groups=assertion.attributes['https://example.com/aliases'], attribute.costcenter=assertion.attributes.costcenter[0]
如需添加属性条件,请执行以下操作:
- 点击添加条件。
- 在属性条件字段中,以 CEL 格式输入条件,例如
assertion.ipaddr.startsWith('98.11.12.')。
如需验证映射,请点击保存并重新提取令牌。
如需完成设置,请点击保存并退出。
管理对 Cloud de Confiance 资源的访问权限。
本部分介绍了如何管理 PingFederate 用户对 Cloud de Confiance 资源的访问权限。
本指南中使用的示例项目可能与您设置员工身份联合的项目不同。
您可以管理单个身份、一组身份或整个池的角色。如需了解详情,请参阅允许政策的员工主账号标识符。
使用映射的部门属性
如需向 TEST_PROJECT_ID 项目的特定部门中的所有身份授予 Storage Admin 角色 (roles/storage.admin),请运行以下命令:
gcloud projects add-iam-policy-binding TEST_PROJECT_ID \
--role="roles/storage.admin" \
--member="principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/attribute.department/DEPARTMENT_VALUE"
替换以下内容:
TEST_PROJECT_ID:项目 ID。WORKFORCE_POOL_ID:员工身份池 ID。DEPARTMENT_VALUE:映射的attribute.department值。
使用映射群组
如需向 TEST_PROJECT_ID 项目的 GROUP_ID 群组中的所有身份授予 Storage Admin 角色 (roles/storage.admin),请运行以下命令:
gcloud projects add-iam-policy-binding TEST_PROJECT_ID \
--role="roles/storage.admin" \
--member="principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/group/GROUP_ID"
替换以下内容:
TEST_PROJECT_ID:项目 ID。WORKFORCE_POOL_ID:员工身份池 ID。GROUP_ID:映射的google.groups声明中的群组。
登录并测试访问权限
在本部分中,您将以员工身份池用户的身份登录,并测试您的访问权限。
登录
控制台(联合)登录
如需登录 Cloud de Confiance by S3NS 员工身份联合控制台(也称为控制台 [联合]),请执行以下操作:
-
前往控制台(联合)登录页面。
-
输入提供方名称,格式如下:
locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID
在系统提示时输入您的 PingFederate 凭据。
基于浏览器的 gcloud CLI 登录
如需使用基于浏览器的登录流程登录 gcloud CLI,请执行以下操作:
运行以下命令以创建登录配置文件:
Linux 和 macOS
gcloud iam workforce-pools create-login-config \ locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID \ --output-file=LOGIN_CONFIG_PATH
Windows (PowerShell)
gcloud iam workforce-pools create-login-config ` locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID ` --output-file=LOGIN_CONFIG_PATH
替换以下内容:
WORKFORCE_POOL_ID:员工身份联合池 ID。WORKFORCE_PROVIDER_ID:员工身份联合提供方 ID。-
LOGIN_CONFIG_PATH:登录配置文件的写入路径。例如login-config.json。
登录配置文件包含 gcloud CLI 用于启用基于浏览器的身份验证流程的端点,并将受众群体设置为在员工身份池提供方中配置的 IdP。该文件不含机密信息。
登录配置文件内容如下所示:
{ "universe_domain": "s3nsapis.fr", "universe_cloud_web_domain": "cloud.s3nscloud.fr", "type": "external_account_authorized_user_login_config", "audience": "//iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID", "auth_url": "https://auth.cloud.s3nscloud.fr/authorize", "token_url": "https://sts.s3nsapis.fr/v1/oauthtoken", "token_info_url": "https://sts.s3nsapis.fr/v1/introspect" }
使用环境变量、活跃 gcloud CLI 配置中的属性指向登录配置文件,或直接将其与 gcloud auth login 命令搭配使用:
环境变量
如需将登录配置文件与环境变量搭配使用,请完成以下说明:
-
将
CLOUDSDK_AUTH_LOGIN_CONFIG_FILE环境变量设置为登录配置文件的路径。 -
运行以下命令:
gcloud auth login
- gcloud CLI 会引用环境变量来查找登录配置文件,然后启动身份验证流程。按照基于浏览器的流程进行身份验证,并授权 gcloud CLI 代表您访问资源,以便将来执行命令。
如需停止将登录配置文件用于 gcloud auth login 命令,请清除 CLOUDSDK_AUTH_LOGIN_CONFIG_FILE 环境变量。
gcloud CLI 配置
如需将登录配置文件与 gcloud CLI 配置属性搭配使用,请完成以下说明:
-
使用以下命令将活跃 gcloud CLI 配置的
auth/login_config_file属性设置为登录配置文件的路径:gcloud config set auth/login_config_file LOGIN_CONFIG_PATH
-
运行以下命令:
gcloud auth login
- gcloud CLI 会引用配置属性来查找登录配置文件,然后启动身份验证流程。按照基于浏览器的流程进行身份验证,并授权 gcloud CLI 代表您访问资源,以便将来执行命令。
如需停止将登录配置文件用于 gcloud auth login 命令,请使用以下命令取消设置该属性:
gcloud config unset auth/login_config_file
gcloud auth login
如需直接将登录配置文件与 gcloud auth login 命令搭配使用,请完成以下说明:
-
如果您在创建登录配置文件时使用了
--activate标志,请运行以下命令:gcloud auth login
-
如果您在创建登录配置文件时未使用
--activate标志,请运行以下命令:Linux 和 macOS
gcloud auth login \ --login-config=LOGIN_CONFIG_PATH
Windows (PowerShell)
gcloud auth login ` --login-config=LOGIN_CONFIG_PATH
将 LOGIN_CONFIG_PATH 替换为登录配置文件的路径。
gcloud auth login 命令会将访问凭据存储在您的主目录中。经过身份验证的主账号会成为活跃 gcloud CLI 配置中的活跃主账号。除非被覆盖,否则 gcloud CLI 会使用这些存储的凭据访问 Cloud de Confiance by S3NS。
gcloud CLI 无头登录
如需使用 SAML 协议通过 gcloud CLI 登录 PingFederate,请执行以下操作:
- 让用户登录您的 PingFederate 应用并获取 SAML 响应。
- 将 PingFederate 返回的 SAML 响应保存到本地机器上的安全位置。将该路径存储在环境变量中,例如:
SAML_ASSERTION_PATH=/path/to/assertion.xml。 生成配置文件:
gcloud iam workforce-pools create-cred-config \ locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID \ --subject-token-type=urn:ietf:params:oauth:token-type:saml2 \ --credential-source-file=SAML_ASSERTION_PATH \ --workforce-pool-user-project=PROJECT_ID \ --output-file=config.json替换以下内容:
SAML_ASSERTION_PATH:SAML 断言文件的路径。PROJECT_ID:项目 ID。
生成的配置文件类似于以下内容:
{ "type": "external_account", "audience": "//iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID", "subject_token_type": "urn:ietf:params:oauth:token-type:saml2", "token_url": "https://sts.googleapis.com/v1/token", "credential_source": { "file": "SAML_ASSERTION_PATH" }, "workforce_pool_user_project": "PROJECT_ID" }如需使用令牌交换登录 gcloud CLI,请运行以下命令:
gcloud auth login --cred-file=config.json然后,
gcloud会以透明方式将您的 PingFederate 凭据交换为临时的 Cloud de Confiance 访问令牌,以便您对 Cloud de Confiance进行其他gcloud调用。输出类似于以下内容:Authenticated with external account user credentials for: [principal://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/subject/USER_ID].如需列出凭据账号和活跃账号,请运行以下命令:
gcloud auth list
测试访问权限
您现在可以访问支持员工身份联合并且您有权访问的 Cloud de Confiance 服务。在本指南的前面部分中,您向特定部门或群组中的所有身份授予了项目 TEST_PROJECT_ID 的 Storage Admin 角色。您可以通过列出 Cloud Storage 存储桶来测试您是否具有访问权限。
控制台(联合)登录
如需在控制台(联合)中验证您的访问权限,请执行以下操作:
- 转到 Cloud Storage 页面。
- 验证您是否可以看到项目
TEST_PROJECT_ID的现有存储桶列表。
gcloud CLI
如需列出您有权访问的项目的 Cloud Storage 存储桶和对象,请运行以下命令:
gcloud alpha storage ls --project="TEST_PROJECT_ID"
主账号必须具有 gcloud CLI 会话中设置的项目的 serviceusage.services.use 权限:PROJECT_ID。
后续步骤
- 删除员工身份联合用户及其数据。
- 了解哪些 Cloud de Confiance 产品支持员工身份联合。
- 设置用户对控制台(联合)的访问权限。