2.5. 支持访问 Azure 资源的身份


OpenShift Container Platform 集群需要一个 Azure 身份来创建和管理 Azure 资源。因此,您需要以下身份之一来完成安装:

  • 服务主体
  • 系统分配的管理身份
  • 用户分配的受管身份

2.5.1. 所需的 Azure 角色

OpenShift Container Platform 集群需要一个 Azure 身份来创建和管理 Azure 资源。在创建身份前,请验证您的环境是否满足以下要求:

  • 用于创建身份的 Azure 帐户被分配 User Access AdministratorContributor 角色。在以下情况下需要这些角色:

    • 创建服务主体或用户分配的受管身份。
    • 在虚拟机上启用系统分配的受管身份。
  • 如果您要使用服务主体完成安装,请验证您用来创建身份的 Azure 帐户是否已被分配了 Microsoft Entra ID 中的 microsoft.directory/servicePrincipals/createAsOwner 权限。

要在 Azure 门户上设置角色,请参阅 Azure 文档中的使用 RBAC 和 Azure 门户管理对 Azure 资源的访问

安装程序需要访问具有所需权限的 Azure 服务主体或受管身份,以部署集群并维护其每日操作。这些权限必须授予与身份关联的 Azure 订阅。

以下选项可供您使用:

  • 您可以为身份分配 ContributorUser Access Administrator 角色。分配这些角色是授予所有所需权限的最快速方法。

    有关分配角色的更多信息,请参阅 Azure 文档,使用 Azure 门户管理 Azure 资源的访问

  • 如果机构的安全策略需要更严格的权限集,您可以创建具有所需权限的自定义角色

在 Microsoft Azure 上创建 OpenShift Container Platform 集群需要以下权限。

例 2.1. 创建授权资源所需的权限

  • Microsoft.Authorization/policies/audit/action
  • Microsoft.Authorization/policies/auditIfNotExists/action
  • Microsoft.Authorization/roleAssignments/read
  • Microsoft.Authorization/roleAssignments/write

例 2.2. 创建计算资源所需的权限

  • Microsoft.Compute/availabilitySets/read
  • Microsoft.Compute/availabilitySets/write
  • Microsoft.Compute/disks/beginGetAccess/action
  • Microsoft.Compute/disks/delete
  • Microsoft.Compute/disks/read
  • Microsoft.Compute/disks/write
  • Microsoft.Compute/galleries/images/read
  • Microsoft.Compute/galleries/images/versions/read
  • Microsoft.Compute/galleries/images/versions/write
  • Microsoft.Compute/galleries/images/write
  • Microsoft.Compute/galleries/read
  • Microsoft.Compute/galleries/write
  • Microsoft.Compute/snapshots/read
  • Microsoft.Compute/snapshots/write
  • Microsoft.Compute/snapshots/delete
  • Microsoft.Compute/virtualMachines/delete
  • Microsoft.Compute/virtualMachines/powerOff/action
  • Microsoft.Compute/virtualMachines/read
  • Microsoft.Compute/virtualMachines/write

例 2.3. 创建身份管理资源所需的权限

  • Microsoft.ManagedIdentity/userAssignedIdentities/assign/action
  • Microsoft.ManagedIdentity/userAssignedIdentities/read
  • Microsoft.ManagedIdentity/userAssignedIdentities/write

例 2.4. 创建网络资源所需的权限

  • Microsoft.Network/dnsZones/A/write
  • Microsoft.Network/dnsZones/CNAME/write
  • Microsoft.Network/dnszones/CNAME/read
  • Microsoft.Network/dnszones/read
  • Microsoft.Network/loadBalancers/backendAddressPools/join/action
  • Microsoft.Network/loadBalancers/backendAddressPools/read
  • Microsoft.Network/loadBalancers/backendAddressPools/write
  • Microsoft.Network/loadBalancers/read
  • Microsoft.Network/loadBalancers/write
  • Microsoft.Network/networkInterfaces/delete
  • Microsoft.Network/networkInterfaces/join/action
  • Microsoft.Network/networkInterfaces/read
  • Microsoft.Network/networkInterfaces/write
  • Microsoft.Network/networkSecurityGroups/join/action
  • Microsoft.Network/networkSecurityGroups/read
  • Microsoft.Network/networkSecurityGroups/securityRules/delete
  • Microsoft.Network/networkSecurityGroups/securityRules/read
  • Microsoft.Network/networkSecurityGroups/securityRules/write
  • Microsoft.Network/networkSecurityGroups/write
  • Microsoft.Network/privateDnsZones/A/read
  • Microsoft.Network/privateDnsZones/A/write
  • Microsoft.Network/privateDnsZones/A/delete
  • Microsoft.Network/privateDnsZones/SOA/read
  • Microsoft.Network/privateDnsZones/read
  • Microsoft.Network/privateDnsZones/virtualNetworkLinks/read
  • Microsoft.Network/privateDnsZones/virtualNetworkLinks/write
  • Microsoft.Network/privateDnsZones/write
  • Microsoft.Network/publicIPAddresses/delete
  • Microsoft.Network/publicIPAddresses/join/action
  • Microsoft.Network/publicIPAddresses/read
  • Microsoft.Network/publicIPAddresses/write
  • Microsoft.Network/virtualNetworks/join/action
  • Microsoft.Network/virtualNetworks/read
  • Microsoft.Network/virtualNetworks/subnets/join/action
  • Microsoft.Network/virtualNetworks/subnets/read
  • Microsoft.Network/virtualNetworks/subnets/write
  • Microsoft.Network/virtualNetworks/write
注意

在 Azure 上创建私有 OpenShift Container Platform 集群不需要以下权限。

  • Microsoft.Network/dnsZones/A/write
  • Microsoft.Network/dnsZones/CNAME/write
  • Microsoft.Network/dnszones/CNAME/read
  • Microsoft.Network/dnszones/read

例 2.5. 检查资源健康状况所需的权限

  • Microsoft.Resourcehealth/healthevent/Activated/action
  • Microsoft.Resourcehealth/healthevent/InProgress/action
  • Microsoft.Resourcehealth/healthevent/Pending/action
  • Microsoft.Resourcehealth/healthevent/Resolved/action
  • Microsoft.Resourcehealth/healthevent/Updated/action

例 2.6. 创建资源组所需的权限

  • Microsoft.Resources/subscriptions/resourceGroups/read
  • Microsoft.Resources/subscriptions/resourcegroups/write

例 2.7. 创建资源标签所需的权限

  • Microsoft.Resources/tags/write

例 2.8. 创建存储资源所需的权限

  • Microsoft.Storage/storageAccounts/blobServices/read
  • Microsoft.Storage/storageAccounts/blobServices/containers/write
  • Microsoft.Storage/storageAccounts/fileServices/read
  • Microsoft.Storage/storageAccounts/fileServices/shares/read
  • Microsoft.Storage/storageAccounts/fileServices/shares/write
  • Microsoft.Storage/storageAccounts/fileServices/shares/delete
  • Microsoft.Storage/storageAccounts/listKeys/action
  • Microsoft.Storage/storageAccounts/read
  • Microsoft.Storage/storageAccounts/write

例 2.9. 创建 marketplace 虚拟机资源的可选权限

  • Microsoft.MarketplaceOrdering/offertypes/publishers/offers/plans/agreements/read
  • Microsoft.MarketplaceOrdering/offertypes/publishers/offers/plans/agreements/write

例 2.10. 创建计算资源的可选权限

  • Microsoft.Compute/availabilitySets/delete
  • Microsoft.Compute/images/read
  • Microsoft.Compute/images/write
  • Microsoft.Compute/images/delete

例 2.11. 启用用户管理加密的可选权限

  • Microsoft.Compute/diskEncryptionSets/read
  • Microsoft.Compute/diskEncryptionSets/write
  • Microsoft.Compute/diskEncryptionSets/delete
  • Microsoft.KeyVault/vaults/read
  • Microsoft.KeyVault/vaults/write
  • Microsoft.KeyVault/vaults/delete
  • Microsoft.KeyVault/vaults/deploy/action
  • Microsoft.KeyVault/vaults/keys/read
  • Microsoft.KeyVault/vaults/keys/write
  • Microsoft.Features/providers/features/register/action

例 2.12. 使用 NatGateway 出站类型安装集群的可选权限

  • Microsoft.Network/natGateways/read
  • Microsoft.Network/natGateways/write

例 2.13. 使用 Azure 网络地址转换 (NAT) 安装私有集群的可选权限

  • Microsoft.Network/natGateways/join/action
  • Microsoft.Network/natGateways/read
  • Microsoft.Network/natGateways/write

例 2.14. 使用 Azure 防火墙安装私有集群的可选权限

  • Microsoft.Network/azureFirewalls/applicationRuleCollections/write
  • Microsoft.Network/azureFirewalls/read
  • Microsoft.Network/azureFirewalls/write
  • Microsoft.Network/routeTables/join/action
  • Microsoft.Network/routeTables/read
  • Microsoft.Network/routeTables/routes/read
  • Microsoft.Network/routeTables/routes/write
  • Microsoft.Network/routeTables/write
  • Microsoft.Network/virtualNetworks/peer/action
  • Microsoft.Network/virtualNetworks/virtualNetworkPeerings/read
  • Microsoft.Network/virtualNetworks/virtualNetworkPeerings/write

例 2.15. 运行收集 bootstrap 的可选权限

  • Microsoft.Compute/virtualMachines/retrieveBootDiagnosticsData/action

删除 Microsoft Azure 上的 OpenShift Container Platform 集群需要以下权限。您可以使用相同的权限删除 Azure 上的私有 OpenShift Container Platform 集群。

例 2.16. 删除授权资源所需的权限

  • Microsoft.Authorization/roleAssignments/delete

例 2.17. 删除计算资源所需的权限

  • Microsoft.Compute/disks/delete
  • Microsoft.Compute/galleries/delete
  • Microsoft.Compute/galleries/images/delete
  • Microsoft.Compute/galleries/images/versions/delete
  • Microsoft.Compute/virtualMachines/delete

例 2.18. 删除身份管理资源所需的权限

  • Microsoft.ManagedIdentity/userAssignedIdentities/delete

例 2.19. 删除网络资源所需的权限

  • Microsoft.Network/dnszones/read
  • Microsoft.Network/dnsZones/A/read
  • Microsoft.Network/dnsZones/A/delete
  • Microsoft.Network/dnsZones/CNAME/read
  • Microsoft.Network/dnsZones/CNAME/delete
  • Microsoft.Network/loadBalancers/delete
  • Microsoft.Network/networkInterfaces/delete
  • Microsoft.Network/networkSecurityGroups/delete
  • Microsoft.Network/privateDnsZones/read
  • Microsoft.Network/privateDnsZones/A/read
  • Microsoft.Network/privateDnsZones/delete
  • Microsoft.Network/privateDnsZones/virtualNetworkLinks/delete
  • Microsoft.Network/publicIPAddresses/delete
  • Microsoft.Network/virtualNetworks/delete
注意

在 Azure 上删除私有 OpenShift Container Platform 集群不需要以下权限。

  • Microsoft.Network/dnszones/read
  • Microsoft.Network/dnsZones/A/read
  • Microsoft.Network/dnsZones/A/delete
  • Microsoft.Network/dnsZones/CNAME/read
  • Microsoft.Network/dnsZones/CNAME/delete

例 2.20. 检查资源健康状况所需的权限

  • Microsoft.Resourcehealth/healthevent/Activated/action
  • Microsoft.Resourcehealth/healthevent/Resolved/action
  • Microsoft.Resourcehealth/healthevent/Updated/action

例 2.21. 删除资源组所需的权限

  • Microsoft.Resources/subscriptions/resourcegroups/delete

例 2.22. 删除存储资源所需的权限

  • Microsoft.Storage/storageAccounts/delete
  • Microsoft.Storage/storageAccounts/listKeys/action
注意

要在 Azure 上安装 OpenShift Container Platform,您必须将权限范围到您的订阅。之后,您可以将这些权限重新限定到安装程序创建的资源组。如果其他资源组中存在公共 DNS 区域,则必须始终将网络 DNS 区域相关权限应用到您的订阅。默认情况下,OpenShift Container Platform 安装程序分配 Contributor 角色的 Azure 身份。

在删除 OpenShift Container Platform 集群时,您可以将订阅的所有权限限定到您的订阅。

2.5.3. 使用 Azure 管理的身份

安装程序需要一个 Azure 身份来完成安装。您可以使用系统分配或用户分配的受管身份。

如果无法使用受管身份,您可以使用服务主体。

流程

  1. 如果您使用系统分配的受管身份,请在您要从其运行安装程序的虚拟机上启用它。
  2. 如果您使用用户分配的受管身份:

    1. 将它分配给您要从中运行安装程序的虚拟机。
    2. 记录其客户端 ID。安装集群时需要这个值。

      有关查看用户分配受管身份的详情的更多信息,请参阅 Microsoft Azure 文档来列出用户分配的管理身份

  3. 验证是否为受管身份分配了所需的权限。

2.5.4. 创建服务主体

安装程序需要一个 Azure 身份来完成安装。您可以使用服务主体。

如果无法使用服务主体,您可以使用受管身份。

先决条件

  • 已安装或更新 Azure CLI
  • 您有一个 Azure 订阅 ID。
  • 如果您没有将 ContributorUser Administrator Access 角色分配给服务主体,您已创建了具有所需 Azure 权限的自定义角色。

流程

  1. 运行以下命令,为您的帐户创建服务主体:

    $ az ad sp create-for-rbac --role <role_name> \
    1
    
         --name <service_principal> \
    2
    
         --scopes /subscriptions/<subscription_id> 
    3
    Copy to Clipboard Toggle word wrap
    1
    定义角色名称。您可以使用 Contributor 角色,或者指定包含所需权限的自定义角色。
    2
    定义服务主体名称。
    3
    指定订阅 ID。

    输出示例

    Creating 'Contributor' role assignment under scope '/subscriptions/<subscription_id>'
    The output includes credentials that you must protect. Be sure that you do not
    include these credentials in your code or check the credentials into your source
    control. For more information, see https://aka.ms/azadsp-cli
    {
      "appId": "axxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "displayName": <service_principal>",
      "password": "00000000-0000-0000-0000-000000000000",
      "tenantId": "8xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
    }
    Copy to Clipboard Toggle word wrap

  2. 记录输出中的 appIdpassword 参数的值。安装集群时需要这些值。
  3. 如果您将 Contributor 角色应用到服务主体,请运行以下命令来分配 User Administrator Access 角色:

    $ az role assignment create --role "User Access Administrator" \
      --assignee-object-id $(az ad sp show --id <appId> --query id -o tsv) 
    1
    
      --scope /subscriptions/<subscription_id> 
    2
    Copy to Clipboard Toggle word wrap
    1
    为您的服务主体指定 appId 参数值。
    2
    指定订阅 ID。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat