×

在AWS上运行的Red Hat OpenShift服务 (ROSA) 与托管控制平面 (HCP) 使用AWS (Amazon Web Services) 安全令牌服务 (STS) 和AWS身份访问管理 (IAM) 来获取与AWS账户中资源交互所需的凭证。

AWS STS凭证方法

作为带有HCP的ROSA的一部分,必须授予Red Hat在您的AWS账户中管理基础设施资源的必要权限。带有HCP的ROSA授予集群的自动化软件对您AWS账户中资源的有限、短期访问权限。

STS方法使用预定义的角色和策略来向IAM角色授予临时、最小权限的权限。凭据通常在请求后一小时过期。过期后,AWS将不再识别它们,并且不再具有通过使用它们进行的API请求的帐户访问权限。有关更多信息,请参阅AWS文档

必须为每个带有HCP的ROSA集群创建AWS IAM STS角色。ROSA命令行界面 (CLI) (rosa) 管理STS角色,并帮助您将ROSA特定的AWS托管策略附加到每个角色。CLI提供创建角色、附加AWS托管策略以及允许CLI自动创建角色和附加策略的命令和文件。

AWS STS安全性

AWS STS的安全功能包括:

  • 用户提前创建的一组明确且有限的策略。

    • 用户可以查看平台所需的所有请求权限。

  • 服务无法执行这些权限范围之外的任何操作。

  • 无需轮换或撤销凭据。每当服务需要执行操作时,它都会获取在一小时或更短时间内过期的凭据。

  • 凭据过期降低了凭据泄漏和被重复使用的风险。

带有HCP的ROSA使用短期安全凭证向特定且隔离的IAM角色授予集群软件组件最小权限。凭据与对每个组件和集群进行AWS API调用的特定IAM角色相关联。此方法符合云服务资源管理中最小权限和安全实践的原则。

带有HCP的ROSA组件

  • AWS基础设施 - 集群所需的基础设施,包括Amazon EC2实例、Amazon EBS存储和网络组件。请参阅AWS计算类型以查看计算节点支持的实例类型,并参阅预配的AWS基础设施以获取有关云资源配置的更多信息。

  • AWS STS - 一种向用户授予短期动态令牌的方法,以提供用户临时与AWS账户资源交互所需的权限。

  • OpenID Connect (OIDC) - 一种机制,用于集群操作员通过信任策略对AWS进行身份验证,并从AWS IAM STS获取临时凭证以进行所需的API调用。

  • 角色和策略 - 带有HCP的ROSA使用的角色和策略可以分为帐户范围的角色和策略以及操作员角色和策略。

    策略确定每个角色允许的操作。有关各个角色和策略的更多详细信息,请参阅关于使用STS的ROSA集群的IAM资源,并参阅ROSA IAM角色资源以获取有关信任策略的更多详细信息。

    某些策略由下面列出的集群操作员角色使用。操作员角色在第二步创建,因为它们依赖于现有的集群名称,并且不能与帐户范围的角色同时创建。

    • 操作员角色包括:

      • <operator_role_prefix>-openshift-cluster-csi-drivers-ebs-cloud-credentials

      • <operator_role_prefix>-openshift-cloud-network-config-controller-cloud-credentials

      • <operator_role_prefix>-openshift-machine-api-aws-cloud-credentials

      • <operator_role_prefix>-openshift-cloud-credential-operator-cloud-credentials

      • <operator_role_prefix>-openshift-image-registry-installer-cloud-credentials

      • <operator_role_prefix>-openshift-ingress-operator-cloud-credentials

    • 为每个帐户范围的角色和每个操作员角色创建信任策略。

部署带有HCP集群的ROSA

部署带有HCP集群的ROSA遵循以下步骤:

  1. 创建帐户范围的角色。

  2. 创建操作员角色。

  3. Red Hat使用AWS STS向AWS发送所需的权限,允许AWS创建并附加相应的AWS托管操作员策略。

  4. 创建OIDC提供程序。

  5. 创建集群。

在集群创建过程中,ROSA CLI会为您创建所需的JSON文件,并输出您需要的命令。如果需要,ROSA CLI也可以为您运行这些命令。

ROSA CLI可以自动为您创建角色,也可以使用--mode manual--mode auto标志手动创建它们。有关部署的更多详细信息,请参阅创建具有自定义设置的集群

带有HCP的ROSA工作流程

用户创建所需的帐户级角色。在创建角色期间,会创建一个名为跨帐户信任策略的信任策略,允许 Red Hat 拥有的角色承担这些角色。还会为 EC2 服务创建信任策略,允许 EC2 实例上的工作负载承担角色并获取凭证。AWS 会为每个角色分配相应的权限策略。

创建帐户级角色和策略后,用户可以创建集群。启动集群创建后,用户会创建 Operator 角色,以便集群 Operator 可以进行 AWS API 调用。然后,这些角色将被分配给前面创建的相应权限策略和具有 OIDC 提供程序的信任策略。Operator 角色与帐户级角色的不同之处在于,它们最终代表需要访问 AWS 资源的 Pod。由于用户无法将 IAM 角色附加到 Pod,因此他们必须使用 OIDC 提供程序创建信任策略,以便 Operator(以及 Pod)可以访问所需的资源。

用户将角色分配给相应的策略权限后,最后一步是创建 OIDC 提供程序。

cloud experts sts explained creation flow hcp

当需要新角色时,当前使用 Red Hat 角色的工作负载将在 AWS 帐户中承担该角色,从 AWS STS 获取临时凭证,并开始使用用户 AWS 帐户中的 API 调用执行操作(由承担的角色的权限策略允许)。凭证是临时的,最长持续时间为一小时。

cloud experts sts explained highlevel

操作员使用以下流程获取执行其任务所需的凭证。每个操作员都被分配了一个 Operator 角色、一个权限策略和一个具有 OIDC 提供程序的信任策略。操作员将通过传递包含角色和令牌文件 (web_identity_token_file) 的 JSON Web 令牌来承担该角色,该令牌将传递给 OIDC 提供程序,然后 OIDC 提供程序使用公钥对签名密钥进行身份验证。公钥在集群创建期间创建并存储在 S3 存储桶中。然后,操作员确认签名令牌文件中的主体与角色信任策略中的角色匹配,从而确保 OIDC 提供程序只能获取允许的角色。然后,OIDC 提供程序将临时凭证返回给操作员,以便操作员可以进行 AWS API 调用。有关可视化表示,请参见下图

cloud experts sts explained oidc op roles hcp