通过身份和访问管理概述了Red Hat站点可靠性工程(SRE)访问Red Hat OpenShift Service on AWS (ROSA)集群。
Red Hat SRE团队的大多数访问都是通过自动化配置管理使用集群操作员完成的。
有关可用子处理器的列表,请参阅Red Hat客户门户网站上的Red Hat子处理器列表。
对Red Hat OpenShift Service on AWS (ROSA)集群的SRE访问通过几层必要的身份验证进行控制,所有这些都由严格的公司策略管理。所有访问集群的认证尝试和在集群内进行的更改都记录在审计日志中,以及负责这些操作的SRE的特定帐户身份。这些审计日志有助于确保SRE对客户集群进行的所有更改都符合构成Red Hat托管服务准则的严格策略和程序。
以下是SRE必须执行以访问客户集群的过程概述。
SRE从Red Hat SSO(云服务)请求刷新的ID令牌。此请求已通过身份验证。令牌有效期为15分钟。令牌过期后,您可以再次刷新令牌并接收新令牌。刷新到新令牌的能力是无限期的;但是,在30天不活动后,刷新到新令牌的能力将被撤销。
SRE连接到Red Hat VPN。对VPN的身份验证由Red Hat企业身份和访问管理系统(RH IAM)完成。使用RH IAM,SRE是多因素的,并且可以由组织内部按组以及现有的入职和离职流程进行内部管理。在SRE通过身份验证并连接后,SRE可以访问云服务集群管理平面。对云服务集群管理平面的更改需要多层审批,并由严格的公司策略维护。
授权完成后,SRE登录到集群管理平面并接收集群管理平面创建的服务帐户令牌。令牌有效期为15分钟。令牌不再有效后,将被删除。
获得对集群管理平面的访问权限后,SRE将使用各种方法访问集群,具体取决于网络配置。
访问私有或公共集群:通过使用端口6443上的加密HTTP连接,通过特定的网络负载均衡器(NLB)发送请求。
访问PrivateLink集群:请求发送到Red Hat Transit Gateway,然后连接到每个区域的Red Hat VPC。接收请求的VPC将取决于目标私有集群的区域。在VPC中,有一个私有子网包含到客户PrivateLink集群的PrivateLink端点。
SRE通过Web控制台或命令行界面(CLI)工具访问ROSA集群。身份验证需要使用行业标准密码复杂性和帐户锁定要求的多因素身份验证(MFA)。SRE必须以个人的身份进行身份验证,以确保可审计性。所有身份验证尝试都记录到安全信息和事件管理(SIEM)系统中。
SRE使用加密的HTTP连接访问私有集群。连接仅允许从安全的Red Hat网络使用IP允许列表或私有云提供商链接。
访问ROSA和AWS组件时,SRE遵循最小权限原则。共有四类基本的SRE手动访问
通过Red Hat门户进行SRE管理员访问,使用正常的两因素身份验证,无需特权提升。
通过Red Hat企业SSO进行SRE管理员访问,使用正常的两因素身份验证,无需特权提升。
OpenShift提升,这是使用Red Hat SSO的手动提升。访问时间限制为2小时,完全经过审核,需要管理批准。
AWS访问或提升,这是对AWS控制台或CLI访问的手动提升。访问时间限制为60分钟,并且完全经过审核。
每种访问类型对组件的访问级别不同
组件 | 典型的SRE管理员访问(Red Hat门户) | 典型的SRE管理员访问(Red Hat SSO) | OpenShift提升 | 云提供商访问或提升 |
---|---|---|---|---|
OpenShift集群管理器 |
读/写 |
无访问权限 |
无访问权限 |
无访问权限 |
OpenShift控制台 |
无访问权限 |
读/写 |
读/写 |
无访问权限 |
节点操作系统 |
无访问权限 |
提升的OS和网络权限的特定列表。 |
提升的OS和网络权限的特定列表。 |
无访问权限 |
AWS控制台 |
无访问权限 |
无访问权限,但这是用于请求云提供商访问的帐户。 |
无访问权限 |
使用SRE身份的所有云提供商权限。 |
Red Hat人员在Red Hat OpenShift Service on AWS的日常操作过程中不会访问AWS账户。出于紧急故障排除的目的,SRE拥有明确定义且可审计的程序来访问云基础设施账户。
在隔离的后端平面流程中,SRE请求访问客户的支持角色。此请求由后端平面API进行即时(JIT)处理,该API动态更新组织角色的权限到特定SRE人员的帐户。此SRE的帐户可以访问特定Red Hat客户的环境。SRE访问Red Hat客户的环境是临时性的、短暂的访问,仅在访问请求时建立。
对 STS 令牌的访问会进行审计日志记录,并可追溯到单个用户。STS 集群和非 STS 集群都使用 AWS STS 服务进行 SRE 访问。当ManagedOpenShift-Technical-Support-Role
附加了ManagedOpenShift-Support-Access
策略,并且此角色用于管理员时,访问控制使用统一后端平面流程。当ManagedOpenShift-Support-Role
附加了ManagedOpenShift-Technical-Support-
策略时,访问控制使用隔离后端平面流程。有关更多信息,请参阅 KCS 文章更新 ROSA 集群的信任策略。
当 SRE 通过双因素身份验证访问 VPN 时,他们和 Red Hat 支持团队可以承担您 AWS 账户中的ManagedOpenShift-Support-Role
角色。ManagedOpenShift-Support-Role
角色拥有 SRE 直接排查问题和管理 AWS 资源所需的所有权限。在承担ManagedOpenShift-Support-Role
角色后,SRE 使用 AWS 安全令牌服务 (STS) 为客户的 AWS Web UI 生成一个唯一的、定时过期的 URL,用于访问其账户。然后,SRE 可以执行多种故障排除操作,包括
查看 CloudTrail 日志
关闭故障 EC2 实例
SRE 执行的所有活动都来自 Red Hat IP 地址,并记录到 CloudTrail 中,以便您可以审计和查看所有活动。此角色仅在需要访问 AWS 服务以协助您时使用。大多数权限都是只读的。但是,少数权限具有更多访问权限,包括重新启动实例或启动新实例的能力。SRE 访问权限仅限于附加到ManagedOpenShift-Support-Role
角色的策略权限。
有关权限的完整列表,请参阅关于使用 STS 的 ROSA 集群的 IAM 资源用户指南中的 sts_support_permission_policy.json 文件。
PrivateLink VPC 端点服务是在创建 ROSA 集群时创建的。
当您拥有 PrivateLink ROSA 集群时,其 Kubernetes API 服务器通过负载均衡器公开,默认情况下,只能从 VPC 内部访问。Red Hat 站点可靠性工程 (SRE) 可以通过 VPC 端点服务连接到此负载均衡器,该服务在 Red Hat 拥有的 AWS 账户中有一个关联的 VPC 端点。此端点服务包含集群的名称,该名称也位于 ARN 中。
在**允许主体**选项卡下,列出了 Red Hat 拥有的 AWS 账户。此特定用户确保其他实体无法创建到 PrivateLink 集群的 Kubernetes API 服务器的 VPC 端点连接。
当 Red Hat SRE 访问 API 时,此集群管理平面可以通过 VPC 端点服务连接到内部 API。
Red Hat 客户体验和参与 (CEE) 团队的成员通常对集群的某些部分具有只读访问权限。具体来说,CEE 对核心和产品命名空间的访问权限有限,并且无法访问客户命名空间。
角色 | 核心命名空间 | 分层产品命名空间 | 客户命名空间 | AWS 账户* |
---|---|---|---|---|
OpenShift SRE - 常规操作[1] |
读取:全部 写入:非常 有限 |
读取:全部 写入:无 |
读取:无 写入:无 |
读取:无 写入:无 |
OpenShift SRE - 提升访问权限[2](受已批准的访问限制) |
读取:全部 写入:全部 |
读取:全部 写入:全部 |
读取:全部 写入:全部 |
读取:全部 写入:全部 |
CEE |
读取:全部 写入:无 |
读取:全部 写入:无 |
读取:无 写入:无 |
读取:无 写入:无 |
客户管理员 |
读取:无 写入:无 |
读取:无 写入:无 |
读取:全部 写入:全部 |
读取:全部 写入:全部 |
客户用户 |
读取:无 写入:无 |
读取:无 写入:无 |
读取:有限[3] 写入:有限[3] |
读取:无 写入:无 |
其他所有人 |
读取:无 写入:无 |
读取:无 写入:无 |
读取:无 写入:无 |
读取:无 写入:无 |
仅限于解决常见用例,例如部署失败、升级集群和替换坏的工作节点。
提升的访问权限赋予 SRE 集群管理员角色的访问级别,并受已批准的访问限制。有关更多信息,请参阅“默认集群角色”和“已批准的访问”。
限于客户管理员通过 RBAC 授予的权限以及用户创建的命名空间。
客户访问权限仅限于客户创建的命名空间以及客户管理员角色通过 RBAC 授予的权限。通常不允许访问底层基础设施或产品命名空间,除非具有cluster-admin
访问权限。有关客户访问和身份验证的更多信息,请参阅文档的“了解身份验证”部分。
新的 SRE 用户访问需要管理批准。分离或转移的 SRE 帐户将通过自动化流程删除为授权用户。此外,SRE 定期执行访问审核,包括管理部门对授权用户列表的签字确认。
访问和身份授权表包括管理对集群、应用程序和基础设施资源的授权访问的责任。这包括提供访问控制机制、身份验证、授权和管理对资源的访问等任务。
资源 | 服务责任 | 客户责任 |
---|---|---|
日志记录 |
Red Hat
|
|
应用程序网络 |
Red Hat
|
|
集群网络 |
Red Hat
|
|
虚拟网络管理 |
Red Hat
|
|
虚拟存储管理 |
Red Hat
|
|
虚拟计算管理 |
Red Hat
|
|
AWS 软件(公共 AWS 服务) |
AWS 计算:提供 Amazon EC2 服务,用于 ROSA 控制平面、基础设施和工作节点。 存储:提供 Amazon EBS,用于允许 ROSA 为集群配置本地节点存储和持久卷存储。 存储:提供 Amazon S3,用于服务的内置镜像注册表。 网络:提供 AWS 身份和访问管理 (IAM),客户使用它来控制对在其账户上运行的 ROSA 资源的访问。 |
|
硬件和 AWS 全球基础设施 |
AWS
|
|
当您安装使用 AWS 安全令牌服务 (STS) 的 AWS 集群上的 Red Hat OpenShift Service 时,会创建特定于集群的 Operator AWS Identity and Access Management (IAM) 角色。这些 IAM 角色允许 AWS 集群上的 Red Hat OpenShift Service Operator 运行核心 OpenShift 功能。
集群 Operator 使用服务帐户来承担 IAM 角色。当服务帐户承担 IAM 角色时,会为服务帐户提供临时 STS 凭证,供其在集群 Operator 的 Pod 中使用。如果承担的角色具有必要的 AWS 权限,则服务帐户可以在 Pod 中运行 AWS SDK 操作。
下图说明了在 SRE 拥有的项目中承担 AWS IAM 角色的工作流程
此工作流程包含以下阶段
在集群 Operator 运行的每个项目中,Operator 的部署规范都包含针对投影服务帐户令牌的卷挂载,以及包含 Pod 的 AWS 凭证配置的密钥。令牌是受众绑定且时间绑定的。每小时,AWS 上的 Red Hat OpenShift Service 都会生成一个新令牌,AWS SDK 会读取包含 AWS 凭证配置的已挂载密钥。此配置包含已挂载令牌的路径和 AWS IAM 角色 ARN。密钥的凭证配置包括以下内容:
一个$AWS_ARN_ROLE
变量,其中包含具有运行 AWS SDK 操作所需权限的 IAM 角色的 ARN。
一个$AWS_WEB_IDENTITY_TOKEN_FILE
变量,其中包含 Pod 中服务帐户 OpenID Connect (OIDC) 令牌的完整路径。完整路径为/var/run/secrets/openshift/serviceaccount/token
。
当集群 Operator 需要承担 AWS IAM 角色以访问 AWS 服务(例如 EC2)时,在 Operator 上运行的 AWS SDK 客户端代码会调用AssumeRoleWithWebIdentity
API 调用。
OIDC 令牌从 Pod 传递到 OIDC 提供程序。如果满足以下要求,提供程序将验证服务帐户身份:
身份签名有效且由私钥签名。
sts.amazonaws.com
受众列在 OIDC 令牌中,并与 OIDC 提供程序中配置的受众匹配。
在使用 STS 集群的 AWS 上的 Red Hat OpenShift Service 中,OIDC 提供程序在安装过程中创建,并默认设置为服务帐户发行者。 |
OIDC 令牌未过期。
令牌中的发行者值具有 OIDC 提供程序的 URL。
如果项目和服务帐户在正在承担的 IAM 角色的信任策略的范围内,则授权成功。
身份验证和授权成功后,将以 AWS 访问令牌、密钥和会话令牌的形式将临时 AWS STS 凭证传递到 Pod,供服务帐户使用。通过使用这些凭证,服务帐户将临时授予 IAM 角色中启用的 AWS 权限。
当集群 Operator 运行时,在 Pod 中使用 AWS SDK 的 Operator 使用包含投影服务帐户路径和 AWS IAM 角色 ARN 的密钥来对 OIDC 提供程序进行身份验证。OIDC 提供程序返回临时 STS 凭证,用于对 AWS API 进行身份验证。
有关集群 Operator 使用的 AWS IAM 角色的更多信息,请参阅 特定于集群的 Operator IAM 角色参考。
有关集群 Operator 需要的策略和权限的更多信息,请参阅 帐户范围角色创建方法。
有关更多信息,请参阅已批准的访问。