连接到身份提供方

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

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

您可以使用以下任一方式连接到现有身份提供方:

准备工作

在连接到现有身份提供方之前,您必须确保初始设置已完成,请求必要的权限,并准备好环境。

初始身份提供方连接设置

您组织的 Infrastructure Operator 群组的成员必须先配置初始 IdP 连接,然后用户才能访问 GDC 集群或信息中心。

为此,他们可以在工单系统中提交工单,并提供所需的身份提供方信息。如需了解详情,请参阅将客户身份提供方连接到组织。

申请 IAM 角色

如需创建、读取、更新和删除身份提供方配置,请与您的 IAM 组织管理员联系,请求 IdP Federation Admin (idp-federation-admin) 角色。

确保您在连接身份提供方时指定的初始组织管理员具有 IAM Org Admin (organization-iam-admin) 角色。

准备环境

连接到现有身份提供方

如需连接身份提供方,您必须具有来自身份提供方的单一客户端 ID 和密钥。您可以连接到现有 OIDC 或 SAML 提供方。

连接到现有 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,则用户声明可能是 myidp-username@example.com,群组声明可能是 myidp-group@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。您可以选择其他声明,例如 email 或 name,具体取决于身份提供方。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. 在加密断言密钥字段中,输入您的私钥。 生成 SAML 提供商后,您会收到解密密钥。
    8. 可选:在 SAML 签名请求部分中,选择启用签名的 SAML 请求。

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

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

    1. 在 IDP 证书字段中,输入身份提供方的 base64 编码的 PEM 编码证书。如需了解详情,请参阅维基百科上的隐私增强邮件。
      1. 如需创建字符串,请将证书(包括标头)进行 base64 编码。
      2. 将生成的字符串作为单独的一行添加到 中。例如:LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tC...k1JSUN2RENDQWFT==。
    2. 在其他 IDP 证书字段中输入任何其他证书。
    3. 在用户属性字段中,输入用于标识每个用户的属性。许多提供商的默认属性为 sub。您可以选择其他属性,例如 email 或 name,具体取决于身份提供方。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. 点击删除。