2.8. SRE 和服务帐户访问

通过身份和访问管理,概述了对 Red Hat OpenShift Service on AWS (ROSA)集群的 Red Hat 站点可靠性工程(SRE)访问。

2.8.1. 身份和访问管理

Red Hat SRE 团队的大部分访问是通过自动化配置管理使用集群 Operator 进行的。

子处理器

有关可用子处理器列表,请查看红帽客户门户网站上的红帽子处理器列表。

2.8.2. SRE 集群访问

SRE 访问 Red Hat OpenShift Service on AWS (ROSA)集群通过多个所需身份验证层控制,所有这些集群都由严格的公司策略管理。所有身份验证尝试访问集群以及集群中所做的更改都会记录在审计日志中,以及负责这些操作的 SRE 的特定帐户身份。这些审计日志有助于确保 SREs 对客户集群进行的所有更改遵循组成红帽受管服务指南的严格的策略和步骤。

以下是 SRE 必须执行的进程的概述,以访问客户的集群。

  • SRE 从 Red Hat SSO (云服务)请求刷新的 ID 令牌。此请求经过身份验证。令牌在十五分钟内有效。令牌过期后,您可以再次刷新令牌并接收新令牌。刷新到新令牌的功能存在冲突;但是,在 30 天不活动后,会撤销刷新到新令牌的功能。
  • SRE 连接到红帽 VPN。VPN 身份验证由 Red Hat Corporate Identity and Access Management system (RH IAM)完成。使用 RH IAM 时,SRE 是多因素,可以根据组和现有载入和关闭进程在内部管理。当 SRE 进行身份验证并连接后,SRE 可以访问云服务团队管理 plane。对云服务团队管理平面的更改需要许多层的批准,并由严格的公司策略维护。
  • 授权完成后,SRE 会登录到 fleet management plane,并接收由 fleet management plane 创建的服务帐户令牌。令牌有效 15 分钟。当令牌不再有效后,它会被删除。
  • 在授予 fleet management plane 的访问权限后,SRE 会使用各种方法访问集群,具体取决于网络配置。

    • 访问私有或公共集群 : 请求通过特定的 Network Load Balancer (NLB)发送,方法是使用端口 6443 上的加密 HTTP 连接。
    • 访问 PrivateLink 集群 : 请求发送到红帽 Transit 网关,然后连接到每个区域的 Red Hat VPC。接收请求的 VPC 将依赖于目标私有集群的区域。在 VPC 中,有一个专用子网,其中包含到客户的 PrivateLink 集群 的 PrivateLink 端点。

SREs 通过 Web 控制台或命令行界面(CLI)工具访问 ROSA 集群。身份验证需要多因素身份验证 (MFA),对密码复杂性和帐户锁定要求具有行业标准的要求。SRE 必须作为个人进行身份验证以确保可审核。所有验证尝试都会记录到安全信息和事件管理 (SIEM) 系统。

SREs 使用加密 HTTP 连接访问私有集群。只有通过 IP 允许列表或私有云供应商链接,才能从安全的红帽网络获得连接。

图 2.1. SRE 对 ROSA 集群的访问

267 OpenShift on AWS Access Networking 1222

2.8.2.1. ROSA 中的特权访问控制

SRE 在访问 ROSA 和 AWS 组件时遵循最小特权的原则。SRE 访问有四个基本类别:

  • SRE 管理通过红帽门户访问,具有正常双因素身份验证,且无特权的 elevation。
  • SRE 管理通过带有正常双因素身份验证的 Red Hat Enterprise SSO 访问,且没有特权升级。
  • OpenShift elevation,这是使用红帽 SSO 的手动提升。访问时间被限制为 2 小时,经过全面审核,需要进行管理批准。
  • AWS 访问或提升,这是 AWS 控制台或 CLI 访问的手动传播。访问仅限于 60 分钟,并且完全审核。

每种访问类型对组件具有不同的访问权限级别:

组件典型的 SRE 管理访问权限(红帽门户)典型的 SRE 管理员访问权限(红帽 SSO)OpenShift elevation云供应商访问或提升信息

OpenShift Cluster Manager

R/W

无权限

无权限

无权限

OpenShift console

无权限

R/W

R/W

无权限

节点操作系统

无权限

提升 OS 和网络权限的特定列表。

提升 OS 和网络权限的特定列表。

无权限

AWS 控制台

无权限

没有访问权限,但这是用于请求云供应商访问的帐户。

无权限

使用 SRE 身份的所有云供应商权限。

2.8.2.2. SRE 对 AWS 帐户的访问

在日常的 Red Hat OpenShift Service on AWS 操作中,Red Hat 人员不会访问 AWS 账户。出于紧急的故障排除目的,SRE 定义了并可审计的程序来访问云基础架构帐户。

SRE 使用 AWS 安全令牌服务 (STS) 为保留角色生成简短的 AWS 访问令牌。对 STS 令牌的访问会被审核,可追溯到各个用户。STS 和非STS 集群都使用 AWS STS 服务进行 SRE 访问。对于非STS 集群,BYOCAdminAccess 角色附加了 AdministratorAccess IAM 策略,此角色用于管理。对于 STS 集群,ManagedOpenShift-Support-Role 带有 ManagedOpenShift-Support-Access 策略,这个策略用于管理。

2.8.2.3. AWS 帐户的 SRE STS 视图

当 SREs 通过双因素身份验证进行 VPN 时,它们和红帽支持可以假定 AWS 帐户中的 ManagedOpenShift-Support-RoleManagedOpenShift-Support-Role 具有 SREs 所需的所有权限,直接排除故障和管理 AWS 资源。假设 ManagedOpenShift-Support-Role,SRE 使用 AWS 安全令牌服务(STS)为其帐户生成唯一的、时间过期 URL。然后 SREs 可以执行多个故障排除操作,其中包括:

  • 查看 CloudTrail 日志
  • 关闭有问题的 EC2 实例

SRE 执行的所有活动都来自红帽 IP 地址,并登录到 CloudTrail 以便审核和查看所有活动。只有在需要访问 AWS 服务才能协助时,才会使用此角色。大多数权限都是只读的。但是,选择几个权限具有更多访问权限,包括重启实例或启动新实例。SRE 访问仅限于附加到 ManagedOpenShift-Support-Role 的策略权限。

有关权限的完整列表,请参阅 About IAM resources for ROSA cluster using STS 用户指南中的 sts_support_permission_policy.json。

2.8.3. 红帽支持访问

红帽客户体验与参与 (CEE) 团队的成员通常对部分群集具有只读访问权限。具体来说,CEE 对核心和产品命名空间具有有限访问权限,且无法访问客户命名空间。

角色Core 命名空间层次产品命名空间Customer 命名空间AWS 帐户*

OpenShift SRE

Read: All

Write: Very

有限 [1]

Read: All

Write: None

Read: None[2]

Write: None

Read: All [3]

Write: All [3]

CEE

Read: All

Write: None

Read: All

Write: None

Read: None[2]

Write: None

Read: None

Write: None

客户管理员

Read: None

Write: None

Read: None

Write: None

Read: All

Write: All

Read: All

Write: All

客户用户

Read: None

Write: None

Read: None

Write: None

Read: Limited[4]

Write: Limited[4]

Read: None

Write: None

其他人

Read: None

Write: None

Read: None

Write: None

Read: None

Write: None

Read: None

Write: None

  1. 仅限于解决常见用例,如部署失败、升级集群并替换错误的 worker 节点。
  2. 默认情况下,红帽人员无法访问客户数据。
  3. SRE 对 AWS 帐户的访问是在记录的事件期间进行出色的故障排除紧急步骤。
  4. 限制为通过 RBAC 授予的内容,以及用户创建的命名空间。

2.8.4. 客户访问权限

客户访问权限仅限于由客户管理员角色使用 RBAC 授予权限创建的命名空间。通常不允许访问底层基础架构或产品命名空间,而无需 cluster-admin 访问。有关客户访问和身份验证的更多信息,请参阅文档中的"了解身份验证"部分。

2.8.5. 访问批准及审核

新的 SRE 用户访问需要管理批准。通过自动过程将经过隔离或传输的 SRE 帐户作为授权用户删除。另外,SRE 会执行定期访问审核,包括授权用户列表的管理登录。

访问和身份授权表包括管理对集群、应用程序和基础架构资源的授权访问权限的职责。这包括提供访问控制机制、身份验证、授权和管理对资源的访问等任务。

资源服务职责客户职责

日志记录

Red Hat

  • 遵循行业标准内平台审计日志的内部访问过程。
  • 提供原生 OpenShift RBAC 功能。
  • 配置 OpenShift RBAC 以控制对项目的访问,并扩展项目的应用程序日志。
  • 对于第三方或自定义应用程序日志记录解决方案,客户负责访问管理。

应用程序网络

Red Hat

  • 提供原生 OpenShift RBAC 和 dedicated-admin 功能。
  • 配置 OpenShift dedicated-admin 和 RBAC,以控制对路由配置的访问。
  • 管理红帽机构管理员以授予 OpenShift Cluster Manager 访问权限。集群管理器用于配置路由器选项,并提供服务负载均衡器配额。

集群网络

Red Hat

  • 通过 OpenShift Cluster Manager 提供客户访问控制。
  • 提供原生 OpenShift RBAC 和 dedicated-admin 功能。
  • 管理红帽帐户的机构成员资格。
  • 管理红帽机构管理员以授予 OpenShift Cluster Manager 访问权限。
  • 配置 OpenShift dedicated-admin 和 RBAC,以控制对路由配置的访问。

虚拟网络管理

Red Hat

  • 通过 OpenShift Cluster Manager 提供客户访问控制。
  • 通过 OpenShift Cluster Manager 管理对 AWS 组件的可选用户访问。

虚拟存储管理

Red Hat

  • 通过 Red Hat OpenShift Cluster Manager 提供客户访问控制。
  • 通过 OpenShift Cluster Manager 管理对 AWS 组件的可选用户访问。
  • 创建启用 ROSA 服务访问所需的 AWS IAM 角色和附加策略。

虚拟计算管理

Red Hat

  • 通过 Red Hat OpenShift Cluster Manager 提供客户访问控制。
  • 通过 OpenShift Cluster Manager 管理对 AWS 组件的可选用户访问。
  • 创建启用 ROSA 服务访问所需的 AWS IAM 角色和附加策略。

AWS 软件(公共 AWS 服务)

AWS

Compute: 提供 Amazon EC2 服务,用于 ROSA control plane、基础架构和 worker 节点。

Storage : 提供 Amazon EBS,允许 ROSA 为集群置备本地节点存储和持久性卷存储。

Storage: 提供 Amazon S3,用于服务的内置镜像 registry。

网络 : 提供 AWS Identity and Access Management (IAM),供客户用来控制对客户账户上运行的 ROSA 资源的访问。

  • 创建启用 ROSA 服务访问所需的 AWS IAM 角色和附加策略。
  • 使用 IAM 工具将适当的权限应用到客户账户中的 AWS 资源。
  • 要在 AWS 机构中启用 ROSA,客户负责管理 AWS 机构管理员。
  • 要在 AWS 机构中启用 ROSA,客户负责使用 AWS 许可证管理器分发 ROSA 授权。

硬件和 AWS 全局基础架构

AWS

  • 有关 AWS 数据中心的物理访问控制的详情,请参考 AWS Cloud Security 页面中的 Our Controls
  • 客户不负责 AWS 全局基础架构。

2.8.6. 服务帐户如何假定 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 角色的工作流:

图 2.2. 在 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 供应商中配置的 audience 匹配。

      注意

      在带有 STS 集群的 Red Hat OpenShift Service on AWS 中,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 进行身份验证。

其他资源