连接到身份提供方

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

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

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

准备工作

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

初始身份提供方连接设置

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

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

  • 服务器的数量及其类型。
  • 块存储量(以 TB 为单位)。
  • 对象存储空间用量(以 TB 为单位)。
  • OIDC 的必需参数:
    • clientID:向 OpenID 提供方发出身份验证请求的客户端应用的 ID。
    • clientSecret:只有应用和 OpenID 提供方知道的密钥。
    • issuerURL:用于向 OpenID 发送授权请求的网址。
    • scopes:要发送到 OpenID 提供方的其他范围。
    • userclaim:用作用户名的 JSON Web 令牌 (JWT) 声明。
    • certificateAuthorityData:OIDC 提供方的 base64 编码的 PEM 编码证书。
  • 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. 点击设置新的身份提供方

  4. 配置身份提供方部分中,完成以下步骤,然后点击下一步

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

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

      如需启用加密令牌,您必须具有 IdP 联合身份验证管理员角色。请让您的组织 IAM 管理员向您授予 IdP Federation Admin (idp-federation-admin) 角色。

      1. 密钥 ID 字段中,输入您的密钥 ID。密钥 ID 是 JSON Web 加密令牌 (JWT) 的公钥。您的 OIDC 提供商会设置并预配密钥 ID。
      2. 解密密钥字段中,输入 PEM 格式的解密密钥。解密密钥是一种非对称密钥,用于解密加密内容。您的 OIDC 提供商会设置并预配解密密钥。
  5. 配置属性部分,完成以下步骤,然后点击下一步

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

    1. 选择是将单个用户还是群组添加为初始管理员。
    2. 用户名或群组别名字段中,输入用户或群组电子邮件地址以访问组织。如果您是管理员,请输入您的电子邮件地址,例如 kiran@example.com。前缀会添加到用户名之前,例如 myidp-kiran@example.com
  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 控制台。
  2. 在导航菜单中,依次点击身份和访问权限 > 身份
  3. 配置身份提供方部分中,完成以下步骤,然后点击下一步

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

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

    7. 可选:在 SAML Assertions(SAML 断言)部分,选择 Enable encrypted SAML assertions(启用加密的 SAML 断言)。

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

      1. 加密证书字段中,输入 PEM 格式的加密证书。生成 SAML 提供商后,您会收到加密证书。
      2. 解密密钥字段中,输入您的解密密钥。生成 SAML 提供商后,您会收到解密密钥。
    8. 可选:在 SAML Signed requests(SAML 签名请求)部分,勾选 Enable signed SAML requests(启用已签名的 SAML 请求)。

      1. 签名证书字段中,以 PEM 文件格式输入您的签名证书。您的 SAML 提供商会设置并为您生成签名证书。
      2. 签名密钥字段中,输入 PEM 文件格式的签名密钥。您的 SAML 提供商会设置并为您生成签名密钥。
  4. 配置属性页面中,完成以下步骤,然后点击下一步

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

    1. 选择是将单个用户还是群组添加为初始管理员。
    2. 用户名字段中,输入用户或群组电子邮件地址以访问组织。如果您是管理员,请输入您的电子邮件地址,例如 kiran@example.com。前缀会添加到用户名前面,例如 myidp-kiran@example.com
  6. 查看页面中,检查每个身份配置的所有值,然后再继续。点击返回返回到之前的页面,并进行必要的更正。根据您的规范配置完所有值后,点击设置

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. 点击删除