在本文中,了解托管标识以及如何使用它们来控制或启用对 Azure 资源的访问。
重要
目前,此 Azure Red Hat OpenShift 功能仅在预览版中提供。 预览功能是可选择启用的自助功能。 预览功能是“按现状”和“按可用”提供的,不包括在服务级别协议和有限保证中。 Azure Red Hat OpenShift(ARO)预览版仅在尽力而为的基础上提供部分客户支持。 这些功能不适用于生产用途。
什么是托管标识
托管标识是特殊类型的服务主体,可用于控制或启用对 Azure 资源的访问。 它们通过消除手动管理凭据、证书、密钥或机密的需要,帮助降低安全漏洞的风险。 应用程序(或服务)利用 Microsoft Entra ID 身份验证来请求临时的有限权限凭据,以便访问其他 Azure 服务。 若要详细了解 Azure 中的托管标识,请参阅 什么是 Azure 资源的托管标识。
在 Azure Red Hat OpenShift 中,术语工作负载标识用于表示在需要访问 Azure 服务的群集中运行的应用程序或工作负荷。 有关详细信息,请参阅有关什么是工作负荷标识的文档?
托管标识和工作负荷标识通过提供短期令牌,而不是使用持有客户端密钥凭据的服务主体的长期凭据,在保护工作负荷和应用程序时有效地帮助降低风险。 此方法为应用程序在凭据因以下因素可能被泄露的情况下,提供了更安全的身份验证方式。
- 凭据的有效期较短。
- 优化了最小权限集,即最低特权原则。 权限仅限于工作负荷需要的内容,并且仅限于执行任务所需的资源。
了解身份角色分配架构
Azure Red Hat OpenShift 由核心运算符组成。 核心作员是负责管理 Azure Red Hat OpenShift 群集核心基础结构并确保其稳定性和运行运行状况的自动化控制器。 作员处理诸如:部署和维护控制平面组件、管理群集更新、监督网络并确保基本群集级服务正常运行等任务。
在具有托管标识支持的 Azure Red Hat OpenShift 群集中,核心操作员从相应的用户分配的托管标识中获取权限。 需要将用户分配的托管标识与七个核心 Red Hat OpenShift作员和 Azure Red Hat OpenShift 服务作员中的每一个相关联。 Azure Red Hat OpenShift 操作工具包括:
- OpenShift 映像注册表运算符(image-registry)
- OpenShift 网络运营商 (cloud-network-config)
- OpenShift 磁盘存储操作器(磁盘 CSI 驱动程序)
- OpenShift 文件存储运算符(file-csi-driver)
- OpenShift 群集入口运算符 (入口)
- OpenShift Cloud Controller Manager (cloud-controller-manager)
- OpenShift 机器 API 操作员 (machine-api)
- Azure Red Hat OpenShift 服务操作员(aro-operator)
Azure Red Hat OpenShift 群集需要一个用户分配的托管标识。 额外的用户分配托管标识用于启用八个核心 Azure Red Hat OpenShift 运维器托管标识的使用,并为所有这些托管标识执行联合凭据创建。 其他托管标识是 Azure Red Hat OpenShift 群集标识(aro-cluster)。 有关 Red Hat OpenShift 群集作员的详细信息,请参阅 群集作员参考。
下图显示了托管标识与角色分配之间的关系。 数字被分配给托管标识,以便展示在图像 3 中的角色分配。
Azure Red Hat OpenShift 的 Azure 内置角色
特定的 Azure Red Hat OpenShift 内置 Azure 角色授予支持托管身份所需的权限,以启用集群操作。 这些角色遵循 Azure 的模型,为通用作业函数提供标准化的权限集。 支持的内置 Azure 角色包括:
- Azure Red Hat OpenShift Cloud Controller Manager
- Azure Red Hat OpenShift 群集入口运算符
- Azure Red Hat OpenShift 磁盘存储作员
- Azure Red Hat OpenShift 联合凭据
- Azure Red Hat OpenShift 文件存储作员
- Azure Red Hat OpenShift 映像注册表作员
- Azure Red Hat OpenShift 计算机 API作员
- Azure Red Hat OpenShift 网络作员
- Azure Red Hat OpenShift 服务作员
有关内置 Azure Red Hat OpenShift 角色的详细说明,请参阅 Azure 内置角色。
角色分配范围
Azure Red Hat OpenShift 部署要求至少有两个空子网(一个用于控制平面节点,另一个用于工作器节点)的虚拟网络存在于资源组中。 对于下图 2 示例,此资源组称为 “网络资源组”。
具有托管身份的 Azure Red Hat OpenShift 群集需要创建用户分配的托管身份,并进行相应的角色分配。 按照步骤 创建启用了托管标识的 Azure Red Hat OpenShift 群集。 创建 Azure Red Hat OpenShift 后,网络资源组中的角色分配将如下图中的第三个示例所示。
身份角色分配的范围尽可能地限制在最低限度。 大多数托管标识位于所需的特定子网上,而需要对虚拟网络具有读取权限的网络操作员在该范围内进行操作。
图 3 中没有展示另外三个任务。
- 磁盘存储和映像注册表 - 这些分配由安装程序执行,并且仅在托管资源组上是必需的。 这是安装程序创建的用于承载服务基础结构的资源组。
- 群集标识 - 此分配在其他标识上设置的目的是为了为这些组件创建联合凭据,使其能够正常运作。
角色分配范围如下图所示。
注意事项
使用托管标识并遵循最低特权原则时,它提供了许多好处。 但是,请记住一些需要考虑的事项或权衡取舍。
由于角色分配应在可能的最低范围内进行,因此将有更多的角色分配。 在本例中,如果在子网范围内分配更多子网,例如将 工作负荷隔离到不同的子网中,则角色分配也需要在这些子网上发生。
由于 Azure 每个订阅的角色分配限制为 4,000 个,因此如果限制是个问题,请考虑在更高级别(例如虚拟网络或资源组)执行角色分配。 请务必考虑安全策略和 Azure 继承层次结构,该层次结构 可以授予对意外资源的权限。 例如,在资源组中执行角色分配将授予该标识对该资源组中的每个对象的访问权限。 有关详细信息,请参阅“了解范围”
重要
在较高级别的范围(例如虚拟网络或资源组)进行角色分配时,可能会导致您无意中授予权限给非预期的资源。
根据决定执行角色分配的范围,角色分配总数将有所不同。 以下是基本群集安装的角色分配总数,具体取决于选择哪个范围来执行角色分配:
- 子网范围:28(网络对象上的 11 个 + 托管标识上的 8 个 + 托管资源组上的 8 个 + 用于资源提供程序的 1 个)
- 虚拟网络范围:23(网络对象上的 6 个 , 托管标识上的 8 个 , 托管资源组上的 8 个 , 资源提供程序为 1)
- 网络资源组范围:16(网络资源组中的 7 个 + 托管资源组中的 8 个 + 资源提供者的 1 个)(假设托管标识位于同一个网络资源组中)
- 对于可选组件/功能,可以进行更多分配
- 每添加一个子网,加 5。
- 如果使用自带网络安全组 (BYO) 网络安全组 (NSG) +4
- 如果使用路由表,则为 +3
- 如果使用 NAT 网关,则为 +2
由于 Azure 文件容器存储接口 (CSI) 驱动程序仍依赖于共享访问密钥,因此默认的 Azure 文件存储类在默认情况下启用托管/工作负荷标识的群集中处于禁用状态,并且为群集启用是可选的。 如果要在 ARO 中使用 Azure 文件,请创建自己的 StorageClass,以使用共享密钥访问支持存储。 有关详细信息,请参阅 如何配置 Azure 文件存储类。
更新群集时,请确保在群集的 CloudCredential 资源上设置
upgradeable-to
批注。 有关详细信息,请参阅 更新已启用托管标识的 Azure Red Hat OpenShift 群集。