连接到身份提供方

本页介绍了如何将 Google Distributed Cloud (GDC) 气隙网络连接到组织的现有身份提供方 (IdP)。IdP 是一种可集中管理和保护用户身份并提供身份验证服务的系统。连接到现有 IdP 后,用户可以使用其组织凭据访问 GDC,而无需在 GDC 中创建或管理单独的账号。此流程可确保顺畅安全的登录体验。由于 IdP 是全球性资源,因此无论用户在哪个地区工作,都可以通过同一 IdP 访问 GDC。

本页面适用于平台管理员群组中的受众群体,例如想要连接到 IdP 的 IT 管理员或安全工程师。如需了解详情,请参阅 GDC 气隙环境文档的受众群体

您可以使用以下方法之一连接到现有身份提供商:

准备工作

在连接到现有身份提供方之前,请确保初始设置已完成,并且您拥有必要的权限。

初始身份提供方连接设置

贵组织的基础设施运维人员群组的成员必须先配置初始 IdP 连接,然后用户才能访问 GDC 集群或信息中心。

他们可以在 ServiceNow工单系统中提交工单,并提供以下有关身份提供方的信息:

  • 服务器的数量及其类型。
  • 块存储量(以 TB 为单位)。
  • 对象存储量(以 TB 为单位)。
  • OIDC 的必需参数:
    • clientID:向 OpenID 提供方发出身份验证请求的客户端应用的 ID。
    • clientSecret:只有应用和 OpenID 提供方知道的密钥。
    • issuerURL:用于向 OpenID 提供方发送授权请求的网址。
    • scopes:要发送到 OpenID 提供方的其他范围。
    • userclaim:用作用户名的 JSON Web 令牌 (JWT) 声明。
    • certificateAuthorityData:OIDC 提供方的 PEM 编码证书的 base64 编码字符串。
  • SAML 提供方的必需参数:
    • idpCertificateDataList:用于验证 SAML 响应的 IdP 证书。这些证书必须采用标准的 base64 编码和 PEM 格式。最多支持两个证书,以便于 IdP 证书轮替。
    • idpEntityID:SAML 提供方的 SAML 实体 ID,以 URI 格式指定。示例:https://www.idp.com/saml
    • idpSingleSignOnURI:SAML 提供方的 SSO 端点的 URI。示例:https://www.idp.com/saml/sso
  • 初始管理员的用户名或一组用户名。

所需权限

如需获得连接现有身份提供商所需的权限,请执行以下操作:

  • 请让您的组织 IAM 管理员向您授予 IdP Federation Admin (idp-federation-admin) 角色。
  • 确保您在连接身份提供方时指定的初始管理员具有组织 IAM 管理员 (organization-iam-admin) 角色。

连接到现有身份提供方

如需关联身份提供方,您必须拥有来自身份提供方的单一客户端 ID 和密钥。您可以连接到现有的 OIDCSAML 提供方。

连接到现有 OIDC 提供方

如需连接到现有 OIDC 提供方,请完成以下步骤:

控制台

  1. 登录 GDC 控制台。以下示例展示了登录名为 org-1 的组织后的控制台: 控制台欢迎页面,其中包含指向常见任务的快速访问链接
  2. 在导航菜单中,依次点击身份和访问权限 > 身份
  3. 点击 Add Identity Provider
  4. 配置身份提供方部分,完成以下步骤:

    1. 身份提供方下拉菜单中,选择 Open ID Connect (OIDC)
    2. 输入身份提供商名称
    3. 颁发者 URI 字段中,输入用于向您的身份提供方发送授权请求的网址。Kubernetes API 服务器使用此网址来发现用于验证令牌的公钥。该网址必须使用 HTTPS。
    4. 客户端 ID 字段中,输入向身份提供方发出身份验证请求的客户端应用的 ID。
    5. 客户端密钥字段中,输入客户端密钥,这是身份提供商与 Distributed Cloud 之间的共享密钥。
    6. 可选:在身份提供方前缀字段中,输入一个前缀。 前缀会添加到用户声明和群组声明的开头。 前缀用于区分不同的身份提供商配置。例如,如果您设置的前缀为 myidp,则用户声明可能是 myid-pusername@example.com,群组声明可能是 myid-pgroup@example.com。将基于角色的访问权限控制 (RBAC) 权限分配给群组时,还必须包含前缀。

    7. 可选:在加密部分中,选择启用加密令牌

      如需启用加密令牌,请让组织 IAM 管理员为您授予 IdP Federation Admin (idp-federation-admin) 角色。

      1. 密钥 ID 字段中,输入您的密钥 ID。密钥 ID 用于标识 JSON Web 加密 (JWE) 令牌的公钥。您的 OIDC 提供商设置并预配密钥 ID。
      2. 解密密钥字段中,输入 PEM 格式的解密密钥。解密密钥是一种用于解密令牌的非对称密钥。您的 OIDC 提供商设置并预配解密密钥。
    8. 点击下一步

  5. 配置属性部分,完成以下步骤:

    1. OIDC 提供方的证书授权机构字段中,输入身份提供方的 base64 编码的 PEM 编码证书。如需了解详情,请参阅维基百科上的隐私增强型邮件
      1. 如需创建字符串,请将证书(包括标头)进行 base64 编码。
      2. 将生成的字符串添加为单独的一行。 示例:LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tC...k1JSUN2RENDQWFT==
    2. 群组声明字段中,输入身份提供方令牌中包含用户群组信息的声明的名称。
    3. 用户声明字段中,输入用于标识每个用户的声明。许多提供商的默认声明是 sub。您可以选择其他声明,例如 emailname,具体取决于身份提供方。email 以外的声明会以颁发者网址作为前缀,以防止命名冲突。
    4. 可选:在自定义属性部分,点击添加键值对,然后输入有关用户的其他声明的键值对,例如用户的部门或个人资料照片网址。
    5. 如果您的身份提供方需要其他范围,请在范围字段中输入以英文逗号分隔的范围,以便发送给身份提供方。
    6. 额外参数部分中,输入身份提供商所需的任何其他键值对(以英文逗号分隔)。如果您要向群组授权,请传入 resource=token-groups-claim
    7. 点击下一步
  6. 指定初始管理员部分,完成以下步骤:

    1. 选择是将单个用户还是群组添加为初始管理员。
    2. 用户名或群组别名字段中,输入用户或群组的电子邮件地址,以便访问组织。如果您是管理员,请输入您的电子邮件地址,例如 kiran@example.com。前缀会添加到用户名之前,例如 myidp-kiran@example.com
    3. 点击下一步
  7. 检查您的选择,然后点击设置

新的身份提供方配置文件会显示在“身份配置文件”列表中。

API

如需将身份提供方与组织相关联,请创建全局 IdentityProviderConfig 自定义资源。

  1. 创建 IdentityProviderConfig 自定义资源 YAML 文件,例如 pa-idp-oidc.yaml

    apiVersion: iam.global.gdc.goog/v1
    kind: IdentityProviderConfig
    metadata:
      name: pa-idp-oidc
      namespace: platform
    spec:
      oidc:
        certificateAuthorityData: "IDP_BASE64_ENCODED_CERTIFICATE"
        clientID: IDP_CLIENT_ID
        clientSecret: IDP_CLIENT_SECRET
        groupPrefix: IDP_GROUP_PREFIX
        groupsClaim: IDP_GROUP_CLAIM
        issuerURI: IDP_ISSUER_URI
        scopes: openid email profile
        userClaim: IDP_USER_CLAIM
        userPrefix: IDP_USER_PREFIX
    

    执行以下变量替换操作:

    • IDP_BASE64_ENCODED_CERTIFICATE:IdP 的 base64 编码证书。
    • IDP_CLIENT_ID:IdP 的客户端 ID。
    • IDP_CLIENT_SECRET:IdP 的客户端密钥。
    • IDP_GROUP_PREFIX:IdP 中群组的前缀。
    • IDP_GROUP_CLAIM:IdP 令牌中包含群组信息的声明的名称。
    • IDP_ISSUER_URI:IdP 的颁发者 URI。
    • IDP_USER_CLAIM:IdP 令牌中用户的声明名称。
    • IDP_USER_PREFIX:用户 IdP 的前缀。
  2. IdentityProviderConfig 自定义资源应用到全局 API 服务器:

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG apply -f pa-idp-oidc.yaml
    

    GLOBAL_API_SERVER_KUBECONFIG 变量替换为全局 API 服务器的 kubeconfig 文件的路径。

连接到现有 SAML 提供商

如需连接到现有 SAML 提供方,请完成以下步骤:

控制台

  1. 登录 GDC 控制台。以下示例展示了登录名为 org-1 的组织后的控制台: 控制台欢迎页面,其中包含指向常见任务的快速访问链接
  2. 在导航菜单中,依次点击身份和访问权限 > 身份
  3. 点击 Add Identity Provider
  4. 配置身份提供方部分,完成以下步骤:

    1. 身份提供方下拉菜单中,选择安全断言标记语言 (SAML)
    2. 输入身份提供商名称
    3. 身份 ID 字段中,输入向身份提供方发出身份验证请求的客户端应用的 ID。
    4. SSO URI 字段中,输入提供方的单点登录端点的网址。例如:https://www.idp.com/saml/sso
    5. 身份提供方前缀字段中,输入一个前缀。前缀会添加到用户和群组声明的开头。前缀用于区分不同的身份提供商配置。例如:如果您设置的前缀为 myidp,则用户声明可能会显示为 myidp-username@example.com,而群组声明可能会显示为 myidp-group@example.com。为群组分配 RBAC 权限时,还必须包含前缀。

    6. 为增强安全性,请将您的 SAML 提供方配置为发出有效期为 5 到 10 分钟的断言。您可以在 SAML 提供方的设置中配置此设置。

    7. 可选:在 SAML 断言部分,选择启用加密 SAML 断言

      如需启用加密的 SAML 断言,请让您的组织 IAM 管理员向您授予 IdP Federation Admin (idp-federation-admin) 角色。

      1. 加密断言证书字段中,输入 PEM 格式的加密证书。您从 SAML 提供商处获取加密证书。
      2. Encryption assertion key(加密断言密钥)字段中,输入您的私钥。 生成 SAML 提供商后,您会收到解密密钥。
    8. 可选:在 SAML Signed Requests(SAML 签名请求)部分,选择 Enable signed SAML requests(启用已签名的 SAML 请求)。

      1. 签名证书字段中,以 PEM 文件格式输入您的签名证书。您的 SAML 提供商会颁发签名证书。
      2. 签名密钥字段中,输入 PEM 文件格式的签名密钥。您的 SAML 提供商会设置并生成签名密钥。
    9. 点击下一步

  5. 配置属性页面中,完成以下步骤:

    1. IDP certificate(IDP 证书)字段中,输入身份提供方的 base64 编码的 PEM 编码证书。 如需了解详情,请参阅维基百科上的隐私增强型邮件
      1. 如需创建字符串,请将证书(包括标头)进行 base64 编码。
      2. 将生成的字符串作为单独的一行添加到 中。例如:LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tC...k1JSUN2RENDQWFT==
    2. 其他 IDP 证书字段中输入任何其他证书。
    3. 用户属性字段中,输入用于标识每个用户的属性。许多提供商的默认属性为 sub。您可以选择其他属性,例如 emailname,具体取决于身份提供方。email 以外的属性会以颁发者网址作为前缀,以防止命名冲突。
    4. 群组属性字段中,输入身份提供方令牌中包含用户群组信息的属性的名称。
    5. 可选:在属性映射部分,点击添加键值对,然后输入有关用户的其他属性的键值对,例如用户所在的部门或个人资料照片网址。
    6. 点击下一步
  6. 指定初始管理员部分,完成以下步骤:

    1. 选择是将单个用户还是群组添加为初始管理员。
    2. 用户名或群组别名字段中,输入用户或群组的电子邮件地址,以便访问组织。如果您是管理员,请输入您的电子邮件地址,例如 kiran@example.com。前缀会添加到用户名之前,例如 myidp-kiran@example.com
    3. 点击下一步
  7. 检查页面中,检查每个身份配置的所有值,然后再继续。

    点击返回可返回到之前的页面,并进行必要的更正。

  8. 点击 Setup(设置)。

新的身份提供方配置文件会显示在“身份配置文件”列表中。

API

如需将身份提供方与组织相关联,请创建全局 IdentityProviderConfig 自定义资源。

  1. 创建 IdentityProviderConfig 自定义资源 YAML 文件,例如 pa-idp-saml.yaml

    apiVersion: iam.global.gdc.goog/v1
    kind: IdentityProviderConfig
    metadata:
      name: pa-idp-saml
      namespace: platform
    spec:
      saml:
        groupPrefix: IDP_GROUP_PREFIX
        groupsAttribute: IDP_GROUP_ATTRIBUTE
        idpCertificateDataList:
        - "IDP_BASE64_ENCODED_CERTIFICATE"
        idpEntityID: IDP_SAML_ENTITY_ID
        idpSingleSignOnURI: IDP_SAML_SSO_URI
        userAttribute: IDP_USER_ATTRIBUTE
        userPrefix: IDP_USER_PREFIX
    

    执行以下变量替换操作:

    • IDP_GROUP_PREFIX:IdP 中群组的前缀。
    • IDP_GROUP_ATTRIBUTE:IdP 中群组的属性。
    • IDP_BASE64_ENCODED_CERTIFICATE:IdP 的 base64 编码证书。
    • IDP_SAML_ENTITY_ID:用于唯一标识 IdP 的网址或 URI。
    • IDP_SAML_SSO_URI:IdP 的颁发者 URI。
    • IDP_USER_ATTRIBUTE:IdP 用户的属性,例如电子邮件地址。
    • IDP_USER_PREFIX:IdP 令牌中用户的声明名称。
  2. IdentityProviderConfig 自定义资源应用到全局 API 服务器:

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG apply -f pa-idp-saml.yaml
    

    GLOBAL_API_SERVER_KUBECONFIG 变量替换为全局 API 服务器的 kubeconfig 文件的路径。

删除现有身份提供方

使用 GDC 控制台删除现有身份提供商:

  1. 登录 GDC 控制台。
  2. 在项目选择器中,选择要从中删除身份提供方的组织。
  3. 在导航菜单中,依次点击身份和访问权限 > 身份
  4. 勾选一个或多个身份提供方名称旁边的复选框。

    系统随即会显示一条消息,其中包含您选择的身份提供商数量以及一个删除按钮。

  5. 点击删除