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


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

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

当您在 AWS 集群上安装 Red Hat OpenShift Service 时,会创建特定于集群的 Operator AWS Identity and Access Management (IAM)角色。这些 IAM 角色允许 ROSA 集群 Operator 运行核心 OpenShift 功能。

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

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

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

工作流有以下阶段:

  1. 在集群 Operator 运行的每个项目中,Operator 的部署 spec 具有投射服务帐户令牌的卷挂载,以及包含 pod 的 AWS 凭证配置的 secret。令牌是面向使用者和限时的。每小时,ROSA 都会生成新的令牌,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 供应商中配置的 audience 匹配。

      注意

      在带有 STS 集群的 ROSA 集群中,OIDC 供应商会在安装过程中创建,并将其设置为服务帐户签发者。sts.amazonaws.com 使用者默认在 OIDC 供应商中设置。

    • 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 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

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

Theme

© 2025 Red Hat