Microsoft Azure 구독 및 리소스 그룹에서 작업을 수행하기 위해 Horizon Cloud가 사용하는 서비스 주체에는 서비스 주체가 해당 구독 및 해당 리소스 그룹에서 수행할 수 있는 허용된 작업을 지정하는 할당된 역할이 필요합니다. Microsoft Azure 기본 제공 참가자 역할을 사용하면 Horizon Cloud에 필요한 모든 작업을 수행할 수 있지만, 가장 광범위한 사용 권한이 부여됩니다. 구독 수준에서 Microsoft Azure 기본 제공 참가자 역할을 사용하는 대신에 연결된 구독에서 Horizon Cloud에 필요한 최소 작업 집합으로 범위가 지정된 최소 사용 권한 집합이 지정된 사용자 지정 역할을 생성하여 구독 수준에서 서비스 주체에 할당할 수 있습니다. 포드의 외부 Unified Access Gateway 구성에 대해 별도의 구독을 사용하는 방법을 채택하고, 생성 및 유지 관리하는 리소스 그룹에 게이트웨이 리소스를 배포하도록 선택하는 경우 별도의 구독에서 보다 세분화된 좁은 범위의 사용 권한을 서비스 주체에 할당할 수 있습니다.

중요한 개념은 Horizon Cloud가 구독 및 해당 리소스 그룹에서 특정 작업을 수행하여 포드 및 해당 게이트웨이 구성을 사용하는 데 필요한 리소스를 성공적으로 생성하고 유지 관리해야 한다는 것입니다. 간단한 예로, 포드 및 게이트웨이 아키텍처에는 NIC가 포함된 가상 시스템이 필요하기 때문에 구독에 가상 시스템과 NIC를 생성하고 해당 NIC를 구독의 VNet에 있는 서브넷에 연결하는 기능이 Horizon Cloud에 필요합니다. 포드 및 게이트웨이 배포에 대해 선택하는 일부 옵션은 Horizon Cloud가 수행해야 하는 특정 작업 집합을 결정합니다. 포드를 배포하고 외부 게이트웨이 구성을 위해 채택하는 옵션에 따라 아래에 설명된 규칙을 준수하여 구독의 Horizon Cloud 기능을 필요한 최소한의 작업으로 제한할 수 있습니다.

Microsoft Azure의 사용자 지정 역할에 대한 자세한 내용 및 사용자 지정 역할을 생성하기 위해 수행하는 단계는 Microsoft Azure 설명서 항목 Azure 리소스에 대한 사용자 지정 역할을 참조하십시오. 역할의 작동 방식, 해당 구조 및 관리 작업의 구조에 대한 자세한 내용은 Microsoft Azure 설명서에서 Azure 리소스에 대한 역할 정의 이해를 참조하십시오. 해당 설명서 항목에 설명된 대로 역할 정의는 사용 권한 모음입니다. 이 역할 정의를 간단히 역할이라고 합니다. 역할에는 해당 역할이 할당된 서비스 주체가 수행할 수 있는 관리 작업뿐 아니라 수행할 수 없는 작업도 표시됩니다. 관리 작업은 리소스와 해당 리소스에 대해 수행된 작업을 조합한 것입니다.

사용 가능한 사용 사례 개요

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

참고: 2개 구독 사용 사례에서 나머지 포드 리소스에 대해 지정된 구독용으로 생성된 서비스 주체의 역할은 단일 구독 사용 사례에 필요한 경우와 동일한 규칙을 따라야 합니다.
사용 사례 설명
포드 및 해당 외부 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입니다.

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

이러한 사용 사례의 경우 사용 권한은 구독 수준에서 할당됩니다. Horizon Cloud 워크플로의 구독 단계에서 지정한 서비스 주체에 설정된 사용자 지정 역할의 경우 사용자 지정 역할 정의에 다음 작업이 필요합니다. *(와일드 카드 문자)는 나열된 리소스 제공자 작업 내의 문자열과 일치하는 모든 작업에 대한 액세스 권한을 부여합니다. 작업에 대한 설명을 보려면 아래 나열된 링크의 Microsoft Azure 설명서를 참조하십시오.

표 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

다음 JSON 코드 블록은 이전 작업 집합이 있을 때 Horizon Cloud Pod라는 사용자 지정 역할 정의의 모습을 보여 주는 예제입니다. 속성 및 사용량 정보에 대한 설명은 Microsoft Azure 설명서 항목 Azure 리소스에 대한 사용자 지정 역할에서 사용자 지정 역할 속성 섹션을 참조하십시오. ID는 사용자 지정 역할의 고유 ID입니다. Azure PowerShell 또는 Azure CLI를 사용하여 사용자 지정 역할을 생성하는 경우 새 역할을 생성할 때 이 ID가 자동으로 생성됩니다. 자습서: Azure CLI를 사용하여 Azure 리소스에 대한 사용자 지정 역할 생성에 설명된 대로, 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/*"
  ],
"NotActions": [],
"DataActions": [],
"NotDataActions": [],
"AssignableScopes": [
  "/subscriptions/mysubscriptionId1"
  ]
}

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

이 사용 사례의 경우 기본 제공 읽기 권한자 역할을 구독 수준에서 서비스 주체에 할당한 후, 다음 표에 나오는 사용 권한을 지정하는 사용자 지정 역할을 사용하여 명명된 리소스 그룹의 수준에서 액세스 권한을 부여할 수 있습니다. 계획된 배포 옵션에 따라 서브넷 및 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입니다.

명명된 리소스 그룹에는 다음과 같은 허용되는 작업이 필요합니다. *(와일드 카드 문자)는 나열된 리소스 제공자 작업 내의 문자열과 일치하는 모든 작업에 대한 액세스 권한을 부여합니다. 작업에 대한 설명을 보려면 아래 나열된 링크의 Microsoft Azure 설명서를 참조하십시오.

표 3. 지정된 리소스 그룹에서 허용되어야 하는 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