1세대 Horizon Cloud 애플리케이션 등록이 포드 구독 또는 외부 게이트웨이 구독(선택 사항)에서 API 호출을 수행하고 해당 VDI 관련 작업을 수행하도록 하려면 역할이 할당되어야 합니다. 일반적으로 Contributor 역할은 이 용도로 사용됩니다. Contributor 역할의 사용을 방지하려는 조직은 사용자 지정 역할을 생성하고 사용자 지정 역할을 통해 Horizon Cloud 앱 등록이 필요한 API 호출을 수행할 수 있습니다.

중요: 이 정보는 1세대 제어부의 1세대 테넌트 환경에 액세스할 수 있는 경우에만 적용됩니다. KB-92424에 설명된 대로 1세대 제어부는 EOA(사용 종료)에 도달했습니다. 자세한 내용은 해당 문서를 참조하십시오.

조직에서 포드의 외부 Unified Access Gateway 구성에 별도의 구독을 사용하는 방식을 채택하고 조직에서 해당 용도로 설정한 특정 리소스 그룹에 게이트웨이 리소스를 배포하도록 선택하는 경우, 포드 구독의 Horizon Cloud 앱 등록에 대한 사용자 지정 역할 외에, 해당 게이트웨이 구독에 대한 사용자 지정 역할은 포드 구독에 대한 사용자 지정 역할보다 좀 더 세분화된 범위별 사용 권한을 가질 수 있습니다.

사용자 지정 역할에 대한 간략한 소개

중요한 개념은 Horizon Cloud가 포드 구독 및 해당 리소스 그룹에서 특정 작업을 수행하여 포드 및 해당 게이트웨이 구성을 사용하는 데 필요한 리소스를 성공적으로 생성하고 유지 관리해야 한다는 것입니다.

간단한 예로, 포드 및 게이트웨이 아키텍처에는 NIC가 포함된 가상 시스템이 필요하기 때문에 구독에 가상 시스템과 NIC를 생성하고 해당 NIC를 구독의 VNet에 있는 서브넷에 연결하는 기능이 Horizon Cloud에 필요합니다.

Microsoft Azure에서 역할은 앱 등록의 서비스 주체가 수행할 수 있는 관리 작업 집합을 제공합니다. 관리 작업은 리소스와 해당 리소스에 대해 수행된 작업을 조합한 것입니다.

아래에 설명된 규칙에 따라 포드 구독 및 (선택 사항) 게이트웨이 구독의 Horizon Cloud 앱 등록 기능을 필요한 최소 작업으로 제한할 수 있습니다.

사용 가능한 사용 사례 개요

구독 및 리소스 그룹에서 Horizon Cloud 필수 작업을 논의할 때 다음과 같은 사용 사례를 고려할 수 있습니다.

참고: 두 구독 사용 사례에서 포드 구독의 앱 등록에 대한 역할은 단일 구독 사용 사례에 필요한 것과 동일한 규칙을 따라야 합니다.
사용 사례 설명
포드 및 해당 외부 Unified Access Gateway 구성에 Horizon Cloud에서 사용하는 단일 구독입니다.

이 경우 포드의 구독 수준에서 서비스 주체에게 액세스 권한을 부여해야 합니다. 구독 수준에서 서비스 주체에 할당된 역할은 Horizon Cloud가 구독에서 필수 리소스를 성공적으로 생성하고 시간에 따라 리소스에 대해 작동하는 데 필요한 작업을 허용해야 합니다. 예를 들어 이 경우에 역할은 기본 리소스 그룹, 네트워크 보안 그룹, 가상 시스템 등을 생성하는 기능을 제공해야 합니다.

2개의 구독이 있으며, 포드 구독에서처럼 Horizon Cloud가 외부 게이트웨이의 지정된 구독에서 게이트웨이의 필수 리소스 그룹 및 리소스를 자동으로 생성하도록 하려고 합니다.
  • 외부 Unified Access Gateway 구성 리소스에 사용하도록 지정된 하나의 구독
  • 나머지 포드 리소스에 대한 하나의 구독

이 옵션을 사용하는 경우 각 구독에 대한 서비스 주체에는 위에 설명된 단일 구독 사용 사례의 경우와 동일한 작업을 허용하는 사용 권한을 사용하여 구독 수준에서 액세스 권한을 부여해야 합니다.

위와 같이 2개의 구독이 있지만 Horizon Cloud에서 외부 게이트웨이의 필수 리소스 그룹 및 리소스를 자동으로 생성하도록 하지 않고, 해당 외부 게이트웨이의 지정된 구독에서 미리 리소스 그룹을 생성하고, Horizon Cloud에서 해당 기존 리소스 그룹에 외부 게이트웨이의 리소스를 배포하도록 하려고 합니다.

외부 게이트웨이 배포에 사용되는 서비스 주체에 액세스 권한을 부여하는 두 가지 옵션은 다음과 같습니다.

  • 위 경우와 동일하게 구독 수준에서 액세스 권한을 부여합니다.
  • 다음 조합을 사용합니다.
    • 구독 수준에서 기본 제공 읽기 권한자 역할을 사용하여 액세스 권한을 부여합니다.
    • 명명된 리소스 그룹의 수준에서 사용자 지정 역할에 정의된 사용 권한을 사용하여 액세스 권한을 부여합니다. 리소스 그룹 수준에서 부여된 사용 권한은 Horizon Cloud가 외부 게이트웨이의 리소스를 배포하고 구성하기 위해 리소스 그룹에서 수행해야 하는 작업을 수행할 수 있어야 합니다.

      리소스 그룹에 대한 사용 권한 외에도, Horizon Cloud는 배포 계획에 따라 다음 작업을 수행할 수 있는 사용 권한이 필요합니다.

      • 이 배포가 해당 구독 VNet에 대해 미리 생성한 서브넷을 사용하는 경우 Horizon Cloud에는 해당 서브넷에 NIC 및 NSG(네트워크 보안 그룹)를 생성하는 기능이 필요합니다. 서브넷이 속한 VNet에 필요한 사용 권한은 Microsoft.Network/virtualNetworks/subnets/*Microsoft.Network/networkSecurityGroups/*입니다.
      • 이 배포에서 위의 Microsoft.Network/virtualNetworks/subnets/*Microsoft.Network/networkSecurityGroups/* 사용 권한 외에, Horizon Cloud가 서브넷을 생성하는 경우 Horizon Cloud에는 서브넷을 생성하는 기능이 있어야 합니다. VNet에 필요한 사용 권한은 Microsoft.Network/virtualNetworks/write입니다.
      • 외부 게이트웨이 배포가 공용 IP 주소를 사용하도록 지정하는 경우 Horizon Cloud에는 명명된 리소스 그룹에서 공용 IP 주소를 생성할 수 있는 기능이 필요합니다. 명명된 리소스 그룹에 필요한 사용 권한은 Microsoft.Network/publicIPAddresses입니다.
VNet에 사용자 지정 경로가 있는 경우. Microsoft Azure Cloud에는 사용자 지정 경로라는 기능이 있습니다. VNet에 사용자 지정 경로가 있는 경우 위의 모든 사용 사례 외에 사용 권한이 필요합니다. Microsoft.Network/routeTables/join/action

포드 및 해당 게이트웨이 구성에 대해 단일 구독을 사용하거나, 구독 수준에서 사용 권한이 설정된 외부 Unified Access Gateway 구성에 대해 별도의 구독을 사용하는 경우

이러한 사용 사례의 경우 사용 권한은 구독 수준에서 할당됩니다. 사용자 지정 역할은 다음 표의 작업을 허용해야 합니다. *(와일드 카드 문자)는 나열된 작업 내의 문자열과 일치하는 모든 작업에 액세스 권한을 부여합니다.

표 1. 구독 수준에서 사용 권한을 할당할 때 사용자 지정 역할에서 허용해야 하는 Microsoft Azure 리소스 작업
작업 Microsoft Azure 설명서에 포함된 설명
Microsoft.Authorization/*/read https://docs.microsoft.com/en-us/azure/role-based-access-control/resource-provider-operations#microsoftauthorization
Microsoft.Compute/*/read https://docs.microsoft.com/en-us/azure/role-based-access-control/resource-provider-operations#microsoftcompute
Microsoft.Compute/availabilitySets/* https://docs.microsoft.com/en-us/azure/role-based-access-control/resource-provider-operations#microsoftcompute
Microsoft.Compute/disks/* https://docs.microsoft.com/en-us/azure/role-based-access-control/resource-provider-operations#microsoftcompute
Microsoft.Compute/images/* https://docs.microsoft.com/en-us/azure/role-based-access-control/resource-provider-operations#microsoftcompute
Microsoft.Compute/locations/* https://docs.microsoft.com/en-us/azure/role-based-access-control/resource-provider-operations#microsoftcompute
Microsoft.Compute/snapshots/* https://docs.microsoft.com/en-us/azure/role-based-access-control/resource-provider-operations#microsoftcompute
Microsoft.Compute/virtualMachines/* https://docs.microsoft.com/en-us/azure/role-based-access-control/resource-provider-operations#microsoftcompute
Microsoft.Compute/virtualMachineScaleSets/* https://docs.microsoft.com/en-us/azure/role-based-access-control/resource-provider-operations#microsoftcompute
Microsoft.DBforPostgreSQL/* https://docs.microsoft.com/en-us/azure/role-based-access-control/resource-provider-operations#microsoftdbforpostgresql
Microsoft.KeyVault/*/read https://docs.microsoft.com/en-us/azure/role-based-access-control/resource-provider-operations#microsoftkeyvault
Microsoft.KeyVault/vaults/* https://docs.microsoft.com/en-us/azure/role-based-access-control/resource-provider-operations#microsoftkeyvault
Microsoft.KeyVault/vaults/secrets/* https://docs.microsoft.com/en-us/azure/role-based-access-control/resource-provider-operations#microsoftkeyvault
Microsoft.Network/loadBalancers/* https://docs.microsoft.com/en-us/azure/role-based-access-control/resource-provider-operations#microsoftnetwork
Microsoft.Network/networkInterfaces/* https://docs.microsoft.com/en-us/azure/role-based-access-control/resource-provider-operations#microsoftnetwork
Microsoft.Network/networkSecurityGroups/* https://docs.microsoft.com/en-us/azure/role-based-access-control/resource-provider-operations#microsoftnetwork
Microsoft.Network/publicIPAddresses/* https://docs.microsoft.com/en-us/azure/role-based-access-control/resource-provider-operations#microsoftnetwork
Microsoft.Network/virtualNetworks/read https://docs.microsoft.com/en-us/azure/role-based-access-control/resource-provider-operations#microsoftnetwork
Microsoft.Network/virtualNetworks/write https://docs.microsoft.com/en-us/azure/role-based-access-control/resource-provider-operations#microsoftnetwork
Microsoft.Network/virtualNetworks/checkIpAddressAvailability/read https://docs.microsoft.com/en-us/azure/role-based-access-control/resource-provider-operations#microsoftnetwork
Microsoft.Network/virtualNetworks/subnets/* https://docs.microsoft.com/en-us/azure/role-based-access-control/resource-provider-operations#microsoftnetwork
Microsoft.Network/virtualNetworks/virtualNetworkPeerings/read https://docs.microsoft.com/en-us/azure/role-based-access-control/resource-provider-operations#microsoftnetwork
Microsoft.ResourceHealth/availabilityStatuses/read https://docs.microsoft.com/en-us/azure/role-based-access-control/resource-provider-operations#microsoftresourcehealth
Microsoft.Resources/subscriptions/resourceGroups/* https://docs.microsoft.com/en-us/azure/role-based-access-control/resource-provider-operations#microsoftresources
Microsoft.Resources/deployments/* https://docs.microsoft.com/en-us/azure/role-based-access-control/resource-provider-operations#microsoftresources
Microsoft.Storage/*/read https://docs.microsoft.com/en-us/azure/role-based-access-control/resource-provider-operations#microsoftstorage
Microsoft.Storage/storageAccounts/* https://docs.microsoft.com/en-us/azure/role-based-access-control/resource-provider-operations#microsoftstorage
Microsoft.Compute/galleries/read
Microsoft.Compute/galleries/write
Microsoft.Compute/galleries/delete
Microsoft.Compute/galleries/images/*
Microsoft.Compute/galleries/images/versions/*
https://docs.microsoft.com/en-us/azure/role-based-access-control/resource-provider-operations#microsoftcompute
Microsoft.MarketplaceOrdering/offertypes/publishers/offers/plans/agreements/read
Microsoft.MarketplaceOrdering/offertypes/publishers/offers/plans/agreements/write
https://docs.microsoft.com/en-us/azure/role-based-access-control/resource-provider-operations#microsoftmarketplaceordering

다음 JSON 코드 블록은 이전 작업 집합이 있을 때 Horizon Cloud Pod라는 사용자 지정 역할 정의의 모습을 보여 주는 예제입니다. ID는 사용자 지정 역할의 고유 ID입니다. Azure PowerShell 또는 Azure CLI를 사용하여 사용자 지정 역할을 생성하면 이 ID가 자동으로 생성됩니다. 변수 mysubscriptionId1은 사용자 지정 역할이 사용되는 구독의 ID(포드의 구독 또는 선택적 게이트웨이 구독)를 대신 사용합니다.

표 2. 구독 수준에서 사용 권한을 할당할 때 Horizon Cloud 필수 작업을 허용하는 역할에 대한 샘플 JSON
{
"Name": "Horizon Cloud Pod",
"Id": "uuid",
"IsCustom": true,
"Description": "Minimum set of Horizon Cloud pod required operations",
"Actions": [
  "Microsoft.Authorization/*/read"
  "Microsoft.Compute/*/read"
  "Microsoft.Compute/availabilitySets/*"
  "Microsoft.Compute/disks/*"
  "Microsoft.Compute/images/*"
  "Microsoft.Compute/locations/*"
  "Microsoft.Compute/virtualMachines/*"
  "Microsoft.Compute/virtualMachineScaleSets/*"
  "Microsoft.Compute/snapshots/*"
  "Microsoft.DBforPostgreSQL/*"
  "Microsoft.KeyVault/*/read"
  "Microsoft.KeyVault/vaults/*"
  "Microsoft.KeyVault/vaults/secrets/*"
  "Microsoft.Network/loadBalancers/*"
  "Microsoft.Network/networkInterfaces/*"
  "Microsoft.Network/networkSecurityGroups/*"
  "Microsoft.Network/publicIPAddresses/*"
  "Microsoft.Network/virtualNetworks/read"
  "Microsoft.Network/virtualNetworks/write"
  "Microsoft.Network/virtualNetworks/checkIpAddressAvailability/read"
  "Microsoft.Network/virtualNetworks/subnets/*"
  "Microsoft.Network/virtualNetworks/virtualNetworkPeerings/read"
  "Microsoft.Resources/subscriptions/resourceGroups/*"
  "Microsoft.ResourceHealth/availabilityStatuses/read"
  "Microsoft.Resources/deployments/*"
  "Microsoft.Storage/*/read"
  "Microsoft.Storage/storageAccounts/*"
  "Microsoft.Compute/galleries/read"
  "Microsoft.Compute/galleries/write"
  "Microsoft.Compute/galleries/delete"
  "Microsoft.Compute/galleries/images/*"
  "Microsoft.Compute/galleries/images/versions/*"
  "Microsoft.MarketplaceOrdering/offertypes/publishers/offers/plans/agreements/read"
  "Microsoft.MarketplaceOrdering/offertypes/publishers/offers/plans/agreements/write"
  ],
"NotActions": [],
"DataActions": [],
"NotDataActions": [],
"AssignableScopes": [
  "/subscriptions/mysubscriptionId1"
  ]
}

사용자 지정 경로가 VNet 및 해당 서브넷에 있는 경우

Microsoft Azure Cloud에는 사용자 지정 경로라는 기능이 있습니다.

이러한 경로가 VNet 및 해당 서브넷에 추가된 경우 이 추가 사용 권한이 필요합니다.

표 3. VNet에 사용자 지정 경로가 있을 때 허용되어야 하는 Microsoft Azure 리소스 작업
작업 Microsoft Azure 설명서에 포함된 설명
Microsoft.Network/routeTables/join/action https://docs.microsoft.com/en-us/azure/role-based-access-control/resource-provider-operations#microsoftnetwork

외부 Unified Access Gateway 구성에 대해 별도의 구독을 사용하는 경우 구독 수준에 읽기 권한자 역할이 있고 세분화된 수준에서 추가 필수 사용 권한이 할당된 사용자 지정 리소스 그룹으로 배포

이 사용 사례의 경우, 외부 게이트웨이 구독의 구독 수준에서 조직이 Horizon Cloud 앱 등록에 사용할 기본 제공 Reader 역할과 명명된 리소스 그룹 수준에서의 사용자 지정 역할을 사용할 수 있습니다.

조직은 다음 표의 사용 권한을 지정하는 사용자 지정 역할을 생성합니다. 그러면 해당 사용자 지정 역할이 Horizon Cloud 앱 등록에 할당되어 외부 게이트웨이의 구독에서 특별히 명명된 리소스 그룹에 작동합니다. 사용자 또는 조직은 외부 게이트웨이를 배포하는 구독에 명명된 해당 리소스 그룹을 미리 생성합니다.

계획된 배포 옵션에 따라 서브넷 및 VNet에 일부 특정 사용 권한이 필요합니다.

  • 이 외부 게이트웨이 배포가 미리 생성한 서브넷을 사용하는 경우 Horizon Cloud에는 해당 서브넷에 NIC 및 NSG(네트워크 보안 그룹)를 생성하는 기능이 필요합니다. 서브넷이 속한 VNet에 필요한 사용 권한은 Microsoft.Network/virtualNetworks/subnets/*Microsoft.Network/networkSecurityGroups/*입니다.
  • 이 외부 게이트웨이 배포에서 위의 Microsoft.Network/virtualNetworks/subnets/*Microsoft.Network/networkSecurityGroups/* 사용 권한 외에, Horizon Cloud가 서브넷을 생성하는 경우 Horizon Cloud에는 서브넷을 생성하는 기능이 있어야 합니다. 구독의 VNet에 필요한 사용 권한은 Microsoft.Network/virtualNetworks/write입니다.
  • 배포가 외부 게이트웨이 구성에 대해 공용 IP 주소를 사용하도록 지정하는 경우 Horizon Cloud에는 명명된 리소스 그룹에서 공용 IP 주소를 생성할 수 있는 기능이 필요합니다. 명명된 리소스 그룹에 필요한 사용 권한은 Microsoft.Network/publicIPAddresses입니다.

명명된 리소스 그룹에는 다음과 같은 허용되는 작업이 필요합니다. *(와일드 카드 문자)는 나열된 리소스 제공자 작업 내의 문자열과 일치하는 모든 작업에 대한 액세스 권한을 부여합니다.

표 4. 지정된 리소스 그룹에서 허용되어야 하는 Microsoft Azure 리소스 작업
작업 Microsoft Azure 설명서에 포함된 설명
Microsoft.Authorization/*/read https://docs.microsoft.com/en-us/azure/role-based-access-control/resource-provider-operations#microsoftauthorization
Microsoft.Compute/*/read https://docs.microsoft.com/en-us/azure/role-based-access-control/resource-provider-operations#microsoftcompute
Microsoft.Compute/availabilitySets/* https://docs.microsoft.com/en-us/azure/role-based-access-control/resource-provider-operations#microsoftcompute
Microsoft.Compute/disks/* https://docs.microsoft.com/en-us/azure/role-based-access-control/resource-provider-operations#microsoftcompute
Microsoft.Compute/images/* https://docs.microsoft.com/en-us/azure/role-based-access-control/resource-provider-operations#microsoftcompute
Microsoft.Compute/locations/* https://docs.microsoft.com/en-us/azure/role-based-access-control/resource-provider-operations#microsoftcompute
Microsoft.Compute/snapshots/* https://docs.microsoft.com/en-us/azure/role-based-access-control/resource-provider-operations#microsoftcompute
Microsoft.Compute/virtualMachines/* https://docs.microsoft.com/en-us/azure/role-based-access-control/resource-provider-operations#microsoftcompute
Microsoft.Compute/virtualMachineScaleSets/* https://docs.microsoft.com/en-us/azure/role-based-access-control/resource-provider-operations#microsoftcompute
Microsoft.DBforPostgreSQL/* https://docs.microsoft.com/en-us/azure/role-based-access-control/resource-provider-operations#microsoftdbforpostgresql
Microsoft.KeyVault/*/read https://docs.microsoft.com/en-us/azure/role-based-access-control/resource-provider-operations#microsoftkeyvault
Microsoft.KeyVault/vaults/* https://docs.microsoft.com/en-us/azure/role-based-access-control/resource-provider-operations#microsoftkeyvault
Microsoft.KeyVault/vaults/secrets/* https://docs.microsoft.com/en-us/azure/role-based-access-control/resource-provider-operations#microsoftkeyvault
Microsoft.Network/loadBalancers/* https://docs.microsoft.com/en-us/azure/role-based-access-control/resource-provider-operations#microsoftnetwork
Microsoft.Network/networkInterfaces/* https://docs.microsoft.com/en-us/azure/role-based-access-control/resource-provider-operations#microsoftnetwork
배포에서 외부 게이트웨이 배포에 공용 IP 주소를 사용하도록 지정하는 경우 Microsoft.Network/publicIPAddresses/*. https://docs.microsoft.com/en-us/azure/role-based-access-control/resource-provider-operations#microsoftnetwork
Microsoft.Network/virtualNetworks/read https://docs.microsoft.com/en-us/azure/role-based-access-control/resource-provider-operations#microsoftnetwork
Microsoft.Network/virtualNetworks/checkIpAddressAvailability/read https://docs.microsoft.com/en-us/azure/role-based-access-control/resource-provider-operations#microsoftnetwork
Microsoft.Network/virtualNetworks/virtualNetworkPeerings/read https://docs.microsoft.com/en-us/azure/role-based-access-control/resource-provider-operations#microsoftnetwork
Microsoft.ResourceHealth/availabilityStatuses/read https://docs.microsoft.com/en-us/azure/role-based-access-control/resource-provider-operations#microsoftresourcehealth
Microsoft.Resources/subscriptions/resourceGroups/* https://docs.microsoft.com/en-us/azure/role-based-access-control/resource-provider-operations#microsoftresources
Microsoft.Resources/deployments/* https://docs.microsoft.com/en-us/azure/role-based-access-control/resource-provider-operations#microsoftresources
Microsoft.Storage/*/read https://docs.microsoft.com/en-us/azure/role-based-access-control/resource-provider-operations#microsoftstorage
Microsoft.Storage/storageAccounts/* https://docs.microsoft.com/en-us/azure/role-based-access-control/resource-provider-operations#microsoftstorage
Microsoft.MarketplaceOrdering/offertypes/publishers/offers/plans/agreements/read
Microsoft.MarketplaceOrdering/offertypes/publishers/offers/plans/agreements/write
https://docs.microsoft.com/en-us/azure/role-based-access-control/resource-provider-operations#microsoftmarketplaceordering