搜索

第 9 章 假设服务帐户的 AWS IAM 角色

download PDF

在使用 AWS 安全令牌服务(STS)的 Red Hat OpenShift Service on AWS 集群中,OpenShift API 服务器可以启用为项目签名的服务帐户令牌,用于假定 pod 中的 AWS Identity and Access Management (IAM)角色。如果假定的 IAM 角色具有所需的 AWS 权限,pod 可以使用临时 STS 凭证对 AWS API 进行身份验证,以执行 AWS 操作。

您可以使用 pod 身份 Webhook 来项目服务帐户令牌,以假定您自己的工作负载的 AWS Identity and Access Management (IAM)角色。如果假定的 IAM 角色具有所需的 AWS 权限,pod 可以使用临时 STS 凭证运行 AWS SDK 操作。

9.1. 服务帐户如何假定 SRE 拥有的项目中的 AWS IAM 角色

当使用 AWS 安全令牌服务(STS)的 AWS 集群上安装 Red Hat OpenShift Service 时,会创建特定于集群的 Operator AWS Identity and Access Management (IAM)角色。这些 IAM 角色允许 Red Hat OpenShift Service on AWS 集群 Operator 运行核心 OpenShift 功能。

集群 Operator 使用服务帐户假设 IAM 角色。当服务帐户假设 IAM 角色时,会为集群 Operator 的 pod 中使用的服务帐户提供临时 STS 凭证。如果假定角色具有所需的 AWS 权限,则服务帐户可以在 pod 中运行 AWS SDK 操作。

在 SRE 拥有的项目中假设 AWS IAM 角色的工作流

下图演示了在 SRE 拥有的项目中假设 AWS IAM 角色的工作流:

图 9.1. 在 SRE 拥有的项目中假设 AWS IAM 角色的工作流

在 SRE 拥有的项目中假设 AWS IAM 角色的工作流

工作流有以下阶段:

  1. 在集群 Operator 运行的每个项目中,Operator 的部署 spec 具有投射服务帐户令牌的卷挂载,以及包含 pod 的 AWS 凭证配置的 secret。令牌是面向使用者和限时的。每小时,Red Hat OpenShift Service on AWS 会生成新的令牌,AWS SDK 会读取包含 AWS 凭证配置的挂载的 secret。此配置具有到挂载令牌的路径和 AWS IAM 角色 ARN。secret 的凭证配置包括:

    • 一个 $AWS_ARN_ROLE 变量,其中包含具有运行 AWS SDK 操作所需的权限的 IAM 角色的 ARN。
    • $AWS_WEB_IDENTITY_TOKEN_FILE 变量,在 pod 中具有到服务帐户的 OpenID Connect (OIDC)令牌的完整路径。完整路径为 /var/run/secrets/openshift/serviceaccount/token
  2. 当集群 Operator 需要假设 AWS IAM 角色访问 AWS 服务(如 EC2)时,Operator 上运行的 AWS SDK 客户端代码会调用 AssumeRoleWithWebIdentity API 调用。
  3. OIDC 令牌从 pod 传递给 OIDC 供应商。如果满足以下要求,供应商会验证服务帐户身份:

    • 身份签名由私钥有效并签名。
    • sts.amazonaws.com 受众列在 OIDC 令牌中,并与 OIDC 供应商中配置的受众匹配。

      注意

      在带有 STS 的 AWS 上的 Red Hat OpenShift Service 中,OIDC 供应商会在安装过程中创建,并默认设置为服务帐户签发者。在 OIDC 供应商中默认设置 sts.amazonaws.com 受众。

    • OIDC 令牌尚未过期。
    • 令牌中的签发者值具有 OIDC 供应商的 URL。
  4. 如果项目和服务帐户位于被假定的 IAM 角色的信任策略范围内,则授权会成功。
  5. 成功身份验证和授权后,临时 AWS STS 凭证以 AWS 访问令牌、secret 密钥和会话令牌的形式传递给 pod,供服务帐户使用。通过使用凭证,服务帐户被临时授予 IAM 角色中启用的 AWS 权限。
  6. 当集群 Operator 运行时,使用 pod 中的 AWS SDK 的 Operator 会消耗具有投射服务帐户和 AWS IAM 角色 ARN 的 secret,以针对 OIDC 供应商进行身份验证。OIDC 供应商返回临时 STS 凭证,用于针对 AWS API 进行身份验证。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.