×

工作负载身份联合概述

工作负载身份联合 (WIF) 是 Google Cloud Platform (GCP) 身份和访问管理 (IAM) 功能,它为第三方提供了一种安全的方法来访问客户云帐户上的资源。WIF 消除了对服务帐户密钥的需求,是 Google Cloud 首选的凭据身份验证方法。

虽然服务帐户密钥可以提供对 Google Cloud 资源的强大访问权限,但它们必须由最终用户维护,如果管理不当,则可能构成安全风险。WIF 不使用服务密钥作为访问 Google Cloud 资源的方法。相反,WIF 通过使用来自外部身份提供商的凭据来生成短期凭据来授予访问权限。然后,工作负载可以使用这些凭据临时模拟服务帐户并访问 Google Cloud 资源。这消除了必须正确维护服务帐户密钥的负担,并消除了未经授权的用户访问服务帐户密钥的风险。

以下项目提供了工作负载身份联合流程的基本概述

  • Google Cloud Platform (GCP) 项目的所有者使用身份提供程序配置工作负载身份池,允许 OpenShift Dedicated 使用短期凭据访问项目关联的服务帐户。

  • 此工作负载身份池配置为使用用户定义的身份提供程序 (IP) 来验证请求。

  • 为了让应用程序访问云资源,它们首先将凭据传递给 Google 的安全令牌服务 (STS)。STS 使用指定的身份提供商来验证凭据。

  • 凭据验证后,STS 会向调用方返回一个临时访问令牌,使应用程序能够模拟绑定到该身份的服务帐户。

运营商也需要访问云资源。通过使用 WIF 而不是服务帐户密钥来授予此访问权限,可以进一步增强集群安全性,因为服务帐户密钥不再存储在集群中。相反,运营商会获得模拟服务帐户的临时访问令牌。这些令牌是短暂的,并且会定期轮换。

有关工作负载身份联合 (Workload Identity Federation) 的更多信息,请参阅Google Cloud Platform 文档

工作负载身份联合 (WIF) 仅在 OpenShift Dedicated 4.17 及更高版本上受支持。

先决条件

WIF 支持在 Google Cloud Platform (GCP) 上使用私有服务连接 (PSC) 部署私有 OpenShift Dedicated 集群。Red Hat 建议在部署私有集群时使用 PSC。有关 PSC 先决条件的更多信息,请参阅私有服务连接的先决条件

使用 OpenShift 集群管理器创建工作负载身份联合集群

步骤
  1. 登录OpenShift 集群管理器,然后点击 OpenShift Dedicated 卡片上的创建集群

  2. 计费模式下,配置订阅类型和基础设施类型。

    工作负载身份联合仅受客户云订阅 (CCS) 基础设施类型支持。

    1. 选择订阅类型。有关 OpenShift Dedicated 订阅选项的信息,请参阅 OpenShift 集群管理器文档中的集群订阅和注册

    2. 选择客户云订阅基础设施类型。

    3. 点击下一步

  3. 选择在 Google Cloud Platform 上运行

  4. 选择工作负载身份联合作为身份验证类型。

    1. 阅读并完成所有必需的先决条件。

    2. 选中复选框,表示您已阅读并完成所有必需的先决条件。

  5. 要创建新的 WIF 配置,请打开终端窗口并运行以下 OCM CLI 命令。

    $ ocm gcp create wif-config --name <wif_name> \ (1)
      --project <gcp_project_id> \ (2)
    1 <wif_name>替换为您的 WIF 配置的名称。
    2 <gcp_project_id>替换为将实施 WIF 配置的 Google Cloud Platform (GCP) 项目的 ID。
  6. WIF 配置下拉列表中选择已配置的 WIF 配置。如果您想选择上一步中创建的 WIF 配置,请先点击刷新

  7. 点击下一步

  8. 详细信息页面上,为您的集群提供名称并指定集群详细信息。

    1. 集群名称字段中,输入集群的名称。

    2. 可选:集群创建会生成一个域名前缀,作为您在openshiftapps.com上配置的集群的子域。如果集群名称小于或等于 15 个字符,则该名称将用作域名前缀。如果集群名称超过 15 个字符,则域名前缀将随机生成一个 15 个字符的字符串。

      要自定义子域前缀,请选择创建自定义域名前缀复选框,并在域名前缀字段中输入您的域名前缀名称。域名前缀不能超过 15 个字符,必须在您的组织内唯一,并且在集群创建后无法更改。

    3. 版本下拉菜单中选择集群版本。

      工作负载身份联合 (WIF) 仅在 OpenShift Dedicated 4.17 及更高版本上受支持。

    4. 区域下拉菜单中选择云提供商区域。

    5. 选择单区域多区域配置。

    6. 可选:选择为 Shielded VM 启用安全启动以在安装集群时使用 Shielded VM。有关更多信息,请参阅Shielded VM

      要成功创建集群,如果您的组织启用了策略约束constraints/compute.requireShieldedVm,则必须选择为 Shielded VM 启用安全启动支持。有关 GCP 组织策略约束的更多信息,请参阅组织策略约束

    7. 保留选中启用用户工作负载监控,以便与 Red Hat 站点可靠性工程师 (SRE) 平台指标隔离地监控您自己的项目。此选项默认启用。

  9. 可选:展开高级加密以更改加密设置。

    1. 选择使用自定义 KMS 密钥以使用自定义 KMS 密钥。如果您不想使用自定义 KMS 密钥,请保留默认设置使用默认 KMS 密钥

    2. 选中使用自定义 KMS 密钥

      1. 密钥环位置下拉菜单中选择密钥环位置。

      2. 密钥环下拉菜单中选择密钥环。

      3. 密钥名称下拉菜单中选择密钥名称。

      4. 提供KMS 服务帐户

    3. 可选:如果您需要您的集群经过 FIPS 验证,请选择启用 FIPS 加密

      如果选中启用 FIPS 加密,则启用附加 etcd 加密默认启用且无法禁用。您可以选择启用附加 etcd 加密而不选择启用 FIPS 加密

    4. 可选:如果您需要 etcd 密钥值加密,请选择启用附加 etcd 加密。使用此选项,etcd 密钥值将被加密,但密钥不会被加密。此选项是对默认控制平面存储加密的补充,默认控制平面存储加密默认情况下会加密 OpenShift Dedicated 集群中的 etcd 卷。

      通过为 etcd 中的密钥值启用 etcd 加密,您将产生大约 20% 的性能开销。开销是由于除了默认的控制平面存储加密(加密 etcd 卷)之外,还引入了这一第二层加密。仅当您特别需要它用于您的用例时,才考虑启用 etcd 加密。

  10. 点击下一步

  11. 机器池页面上,选择计算节点实例类型计算节点数。可用节点的数量和类型取决于您的 OpenShift Dedicated 订阅。如果您使用多个可用区域,则计算节点数为每个区域。

  12. 可选:展开添加节点标签以向您的节点添加标签。点击添加附加标签以添加更多节点标签。

    此步骤指的是 Kubernetes 中的标签,而不是 Google Cloud。有关 Kubernetes 标签的更多信息,请参阅标签和选择器

  13. 点击下一步

  14. 在**集群隐私**对话框中,选择**公共**或**私有**以使用您的集群的公共或私有 API 端点和应用程序路由。如果您选择**私有**,则默认情况下会选择**使用私有服务连接**,并且无法禁用。私有服务连接 (PSC) 是 Google Cloud 的安全增强型网络功能。

  15. 可选:在现有 GCP 虚拟私有云 (VPC) 中安装集群

    1. 选择**安装到现有 VPC**。

      私有服务连接仅支持**安装到现有 VPC**。

    2. 如果您要安装到现有 VPC 并想要为您的集群启用 HTTP 或 HTTPS 代理,请选择**配置集群范围的代理**。

      为了为您的集群配置集群范围的代理,您必须首先创建云网络地址转换 (NAT) 和云路由器。有关更多信息,请参阅“其他资源”部分。

  16. 接受默认的应用程序入口设置,或者要创建您自己的自定义设置,请选择**自定义设置**。

    1. 可选:提供路由选择器。

    2. 可选:提供排除的命名空间。

    3. 选择命名空间所有权策略。

    4. 选择通配符策略。

      有关自定义应用程序入口设置的更多信息,请点击每个设置提供的帮助信息图标。

  17. 点击下一步

  18. 可选:要在 GCP 共享 VPC 中安装集群,请按照以下步骤操作。

    主机项目的 VPC 所有者必须在其 Google Cloud 控制台中启用项目作为主机项目,并在集群安装之前向以下服务帐户添加**计算机网络管理员**、**计算安全管理员**和**DNS 管理员**角色

    • osd-deployer

    • osd-control-plane

    • openshift-machine-api-gcp

    否则将导致集群进入“安装等待”状态。如果发生这种情况,您必须联系主机项目的 VPC 所有者,将角色分配给上述服务帐户。主机项目的 VPC 所有者有 30 天的时间授予列出的权限,否则集群创建将失败。有关更多信息,请参阅启用主机项目配置共享 VPC

    1. 选择**安装到 GCP 共享 VPC**。

    2. 指定**主机项目 ID**。如果指定的主机项目 ID 不正确,则集群创建将失败。

    3. 如果您选择在现有 GCP VPC 中安装集群,请提供您的**虚拟私有云 (VPC) 子网设置**并选择**下一步**。您必须已创建云网络地址转换 (NAT) 和云路由器。有关云 NAT 和 Google VPC 的信息,请参阅“其他资源”。

      如果您正在将集群安装到共享 VPC,则 VPC 名称和子网将从主机项目共享。

  19. 点击下一步

  20. 如果您选择配置集群范围的代理,请在**集群范围的代理**页面上提供您的代理配置详细信息

    1. 至少在一个字段中输入值

      • 指定有效的**HTTP 代理 URL**。

      • 指定有效的**HTTPS 代理 URL**。

      • 在**附加信任捆绑包**字段中,提供 PEM 编码的 X.509 证书捆绑包。该捆绑包将添加到集群节点的受信任证书存储区。如果您使用 TLS 检查代理,除非代理的标识证书由 Red Hat Enterprise Linux CoreOS (RHCOS) 信任捆绑包中的机构签名,否则需要附加信任捆绑包文件。无论代理是透明的还是需要使用http-proxyhttps-proxy参数进行显式配置,此要求都适用。

    2. 点击下一步

      有关使用 OpenShift Dedicated 配置代理的更多信息,请参阅“配置集群范围的代理”。

  21. 在**CIDR 范围**对话框中,配置自定义无类别域间路由 (CIDR) 范围或使用提供的默认值。

    CIDR 配置以后无法更改。在继续操作之前,请与您的网络管理员确认您的选择。

    如果集群隐私设置为**私有**,则在您配置云提供商中的私有连接之前,您无法访问您的集群。

  22. 在**集群更新策略**页面上,配置您的更新首选项

    1. 选择集群更新方法

      • 如果您想单独安排每个更新,请选择**单个更新**。这是默认选项。

      • 选择**定期更新**以在更新可用时,在您首选的日期和开始时间更新您的集群。

        您可以查看 OpenShift Dedicated 更新生命周期文档中的生命周期结束日期。有关更多信息,请参阅OpenShift Dedicated 更新生命周期

    2. 根据您的集群更新方法提供管理员批准

      • 单个更新:如果您选择需要批准的更新版本,请提供管理员的确认并点击**批准并继续**。

      • 定期更新:如果您为集群选择了定期更新,请提供管理员的确认并点击**批准并继续**。OpenShift 集群管理器不会在未收到管理员确认的情况下启动计划的 y 流次要版本的更新。

    3. 如果您选择了定期更新,请从下拉菜单中选择首选的星期几和 UTC 中的升级开始时间。

    4. 可选:您可以在集群升级期间为**节点清空**设置宽限期。默认情况下设置**1 小时**的宽限期。

    5. 点击下一步

      如果出现严重影响集群安全或稳定性的严重安全问题,Red Hat 站点可靠性工程 (SRE) 可能会安排自动更新到不受影响的最新 z 流版本。在提供客户通知后 48 小时内应用更新。有关严重影响安全评级的说明,请参阅了解 Red Hat 安全评级

  23. 查看您选择的摘要,然后点击**创建集群**以开始集群安装。安装大约需要 30-40 分钟才能完成。

  24. 可选:在**概述**选项卡上,您可以通过选择**启用**(位于**删除保护:已禁用**正下方) 来启用删除保护功能。这将防止您的集群被删除。要禁用删除保护,请选择**禁用**。默认情况下,集群在创建时删除保护功能处于禁用状态。

    验证
    • 您可以在集群的**概述**页面中监控安装进度。您可以在同一页面上查看安装日志。当页面的**详细信息**部分中的**状态**列为**就绪**时,您的集群已准备就绪。

使用 OCM CLI 创建工作负载身份联合集群

您可以使用 OpenShift 集群管理器 CLI (ocm) 在交互式或非交互式模式下创建具有工作负载身份联合 (WIF) 的 Google Cloud Platform (GCP) 上的 OpenShift Dedicated 集群。

要创建启用 WIF 的集群,OpenShift 集群管理器 CLI (ocm) 必须为 1.0.2 或更高版本。

在创建集群之前,您必须首先创建一个 WIF 配置。

不支持将现有非 WIF 集群迁移到 WIF 配置。此功能只能在新集群创建期间启用。

创建 WIF 配置

步骤

您可以使用auto模式或manual模式创建 WIF 配置。

auto 模式允许您自动创建 OpenShift Dedicated 组件以及其他 IAM 资源的服务帐户。

或者,您可以使用manual 模式。在manual 模式下,您将在script.sh文件中获得用于手动创建 OpenShift Dedicated 组件以及其他 IAM 资源的服务帐户的命令。

  • 根据您的模式偏好,运行以下命令之一来创建 WIF 配置

    • 通过运行以下命令在自动模式下创建 WIF 配置

      $ ocm gcp create wif-config --name <wif_name> \ (1)
        --project <gcp_project_id> \ (2)
      1 <wif_name>替换为您的 WIF 配置的名称。
      2 <gcp_project_id>替换为将实施 WIF 配置的 Google Cloud Platform (GCP) 项目的 ID。
      示例输出
      2024/09/26 13:05:41 Creating workload identity configuration...
      2024/09/26 13:05:47 Workload identity pool created with name 2e1kcps6jtgla8818vqs8tbjjls4oeub
      2024/09/26 13:05:47 workload identity provider created with name oidc
      2024/09/26 13:05:48 IAM service account osd-worker-oeub created
      2024/09/26 13:05:49 IAM service account osd-control-plane-oeub created
      2024/09/26 13:05:49 IAM service account openshift-gcp-ccm-oeub created
      2024/09/26 13:05:50 IAM service account openshift-gcp-pd-csi-driv-oeub created
      2024/09/26 13:05:50 IAM service account openshift-image-registry-oeub created
      2024/09/26 13:05:51 IAM service account openshift-machine-api-gcp-oeub created
      2024/09/26 13:05:51 IAM service account osd-deployer-oeub created
      2024/09/26 13:05:52 IAM service account cloud-credential-operator-oeub created
      2024/09/26 13:05:52 IAM service account openshift-cloud-network-c-oeub created
      2024/09/26 13:05:53 IAM service account openshift-ingress-gcp-oeub created
      2024/09/26 13:05:55 Role "osd_deployer_v4.17" updated
    • 通过运行以下命令在手动模式下创建 WIF 配置

      $ ocm gcp create wif-config --name <wif_name> \ (1)
        --project <gcp_project_id> \ (2)
        --mode=manual
      1 <wif_name>替换为您的 WIF 配置的名称。
      2 <gcp_project_id>替换为将实施 WIF 配置的 Google Cloud Platform (GCP) 项目的 ID。

      配置 WIF 后,将创建以下服务帐户、角色和组。

      表 1. WIF 配置服务帐户、组和角色
      服务帐户/组 GCP 预定义角色和 Red Hat 自定义角色

      osd-deployer

      osd_deployer_v4.17

      osd-control-plane

      • compute.instanceAdmin

      • compute.networkAdmin

      • compute.securityAdmin

      • compute.storageAdmin

      osd-worker

      • compute.storageAdmin

      • compute.viewer

      cloud-credential-operator-gcp-ro-creds

      cloud_credential_operator_gcp_ro_creds_v4.17

      openshift-cloud-network-config-controller-gcp

      openshift_cloud_network_config_controller_gcp_v4.17

      openshift-gcp-ccm

      openshift_gcp_ccm_v4.17

      openshift-gcp-pd-csi-driver-operator

      • compute.storageAdmin

      • iam.serviceAccountUser

      • resourcemanager.tagUser

      • openshift_gcp_pd_csi_driver_operator_v4.17

      openshift-image-registry-gcp

      openshift_image_registry_gcs_v4.17

      openshift-ingress-gcp

      openshift_ingress_gcp_v4.17

      openshift-machine-api-gcp

      openshift_machine_api_gcp_v4.17

      通过 SRE 组访问:sd-sre-platform-gcp-access

      sre_managed_support

有关 WIF 配置角色及其分配权限的更多详细信息,请参阅 managed-cluster-config

创建 WIF 集群

步骤

您可以使用interactive模式或non-interactive模式创建 WIF 集群。

interactive模式下,集群属性会在集群创建过程中自动显示为提示。您根据提供的字段中的指定要求输入这些提示的值。

non-interactive模式下,您在命令中指定特定参数的值。

  • 根据您的模式偏好,运行以下命令之一来创建具有 WIF 配置的 OpenShift Dedicated (GCP) 集群

    • 通过运行以下命令以交互式模式创建集群

      $ ocm create cluster --interactive (1)
      1 interactive模式允许您在交互式提示符下指定配置选项。
    • 通过运行以下命令以非交互式模式创建集群

      以下示例包含可选和必需参数,可能与您的non-interactive模式命令不同。未标识为可选的参数是必需的。有关这些参数和其他参数的更多详细信息,请在您的终端窗口中运行ocm create cluster --help flag命令。

      $ ocm create cluster <cluster_name> \ (1)
      --provider=gcp \ (2)
      --ccs=true \ (3)
      --wif-config <wif_name> \ (4)
      --region <gcp_region> \ (5)
      --subscription-type=marketplace-gcp \ (6)
      --marketplace-gcp-terms=true \ (7)
      --version <version> \ (8)
      --multi-az=true  \ (9)
      --enable-autoscaling=true \ (10)
      --min-replicas=3 \ (11)
      --max-replicas=6 \ (12)
      --secure-boot-for-shielded-vms=true (13)
      
      1 <cluster_name>替换为您的集群名称。
      2 将值设置为gcp
      3 将值设置为true
      4 <wif_name>替换为您的 WIF 配置的名称。
      5 <gcp_region>替换为将部署新集群的 Google Cloud Platform (GCP) 区域。
      6 可选:集群的订阅计费模式。
      7 可选:如果您为subscription-type参数提供了marketplace-gcp的值,则marketplace-gcp-terms必须等于true
      8 可选:所需的 OpenShift 版本。
      9 可选:部署到多个数据中心。
      10 可选:启用计算节点的自动缩放。
      11 可选:计算节点的最小数量。
      12 可选:计算节点的最大数量。
      13 可选:安全启动启用在 Google Cloud Platform 中使用 Shielded VM。

列出 WIF 集群

要列出所有使用 WIF 身份验证类型部署的 OpenShift Dedicated 集群,请运行以下命令

$ ocm list clusters --parameter search="gcp.authentication.wif_config_id != ''"

要列出所有使用特定 wif-config 部署的 OpenShift Dedicated 集群,请运行以下命令

$ ocm list clusters --parameter search="gcp.authentication.wif_config_id = '<wif_config_id>'" (1)
1 <wif_config_id>替换为 WIF 配置的 ID。

更新 WIF 配置

更新 WIF 配置仅适用于 y 流更新。有关更新过程的概述,包括有关版本语义的详细信息,请参阅 集群管理员的 OpenShift 发布和升级过程终极指南

在将启用 WIF 的 OpenShift Dedicated 集群更新到较新版本之前,您必须也将 wif-config 更新到该版本。如果您在尝试更新集群版本之前没有更新 wif-config 版本,则集群版本更新将失败。

您可以通过运行以下命令将 wif-config 更新到特定的 OpenShift Dedicated 版本

ocm gcp update wif-config --version <version> \ (1)
--name <wif_name> (2)
1 <version>替换为您计划将集群更新到的 OpenShift Dedicated y 流版本。
2 <wif_name>替换为要更新的 WIF 配置的名称。

验证 WIF 配置

您可以通过运行ocm gcp verify wif-config命令来验证与 WIF 配置关联的资源配置是否正确。如果发现配置错误,输出将提供有关配置错误的详细信息,并建议您更新 WIF 配置。

在验证之前,您需要验证要验证的 WIF 配置的名称和 ID。要获取活动 WIF 配置的名称和 ID,请运行以下命令

$ ocm gcp list wif-configs

要确定要验证的 WIF 配置是否配置正确,请运行以下命令

$ ocm gcp verify wif-config <wif_config_name>|<wif_config_id> (1)
1 分别将<wif_config_name><wif_config_id>替换为您的 WIF 配置的名称和 ID。
示例输出
Error: verification failed with error: missing role 'compute.storageAdmin'.
Running 'ocm gcp update wif-config' may fix errors related to cloud resource misconfiguration.
exit status 1.

其他资源