Pour que l'enregistrement d'application Horizon Cloud puisse effectuer des appels d'API dans l'abonnement de l'espace (ou dans l'abonnement à la passerelle externe facultatif) et effectuer ses opérations liées à VDI, un rôle doit lui être attribué. En général, le rôle Contributor est utilisé à cette fin. En ce qui concerne les organisations qui préfèrent éviter l'utilisation du rôle Contributor, elles peuvent créer un rôle personnalisé et faire en sorte que le rôle personnalisé permette à l'enregistrement d'application Horizon Cloud d'effectuer les appels d'API requis.

En plus d'un rôle personnalisé pour l'enregistrement d'application Horizon Cloud dans l'abonnement de l'espace, si votre organisation préfère adopter l'approche pour disposer d'un abonnement distinct pour la configuration externe d'Unified Access Gateway de l'espace et choisir également de déployer les ressources de la passerelle dans un groupe de ressources spécifique que votre organisation configure à cette fin, le rôle personnalisé de l'abonnement de cette passerelle peut disposer d'autorisations plus granulaires et d'étendue limitée que celles du rôle personnalisé de l'abonnement de l'espace.

Brève présentation des rôles personnalisés

Le concept général nécessite qu'Horizon Cloud effectue certaines opérations dans l'abonnement de l'espace et ses groupes de ressources pour créer et gérer les ressources requises afin de disposer d'un espace et de ses configurations de passerelle.

Par exemple, étant donné que l'architecture de l'espace et celle de la passerelle nécessitent des machines virtuelles équipées de cartes réseau, Horizon Cloud doit être en mesure de créer des machines virtuelles et des cartes réseau dans votre abonnement et d'attacher ces cartes réseau aux sous-réseaux dans le réseau virtuel de l'abonnement.

Dans Microsoft Azure, un rôle fournit un ensemble d'opérations de gestion qui peuvent être effectuées par le principal de service d'un enregistrement d'application. Une opération de gestion est une combinaison de la ressource et de l'action effectuée sur cette ressource.

Vous pouvez limiter les capacités d'enregistrement d'application Horizon Cloud dans l'abonnement de l'espace et l'abonnement (facultatif) de la passerelle aux opérations minimales requises, en suivant les règles décrites ci-dessous.

Présentation des cas d'utilisation disponibles

Lorsque vous traitez les opérations requises d'Horizon Cloud dans les abonnements et les groupes de ressources, ces cas d'utilisation sont inclus.

Note : Dans le cas d'utilisation à deux abonnements, le rôle pour l'enregistrement d'application dans l'abonnement de l'espace doit suivre les mêmes règles que celles requises pour le cas d'utilisation à abonnement unique.
Cas d'utilisation Description
Abonnement unique utilisé par Horizon Cloud pour les espaces et leurs configurations externes d'Unified Access Gateway.

Dans ce cas, l'accès doit être accordé au principal de service au niveau de l'abonnement de l'espace. Le rôle attribué au principal de service à ce niveau doit autoriser les actions qu'Horizon Cloud doit effectuer dans votre abonnement pour créer à l'intérieur les ressources requises et agir dessus dans le temps. Dans ce cas, par exemple, le rôle doit permettre de créer les groupes de ressources par défaut, les groupes de sécurité réseau, les machines virtuelles, etc.

Deux abonnements, et vous souhaitez qu'Horizon Cloud crée automatiquement les groupes de ressources et les ressources nécessaires de la passerelle dans l'abonnement spécifié de la passerelle externe, de la même manière que dans l'abonnement de l'espace.
  • Un abonnement spécifié à utiliser pour les ressources de la configuration externe d'Unified Access Gateway
  • Un abonnement pour le reste des ressources de l'espace

Lorsque vous utilisez cette option, l'accès doit être accordé au principal de service au niveau de l'abonnement, avec des autorisations qui autorisent des actions identiques à celles du cas d'utilisation à abonnement unique décrit ci-dessus.

Deux abonnements comme ci-dessus, mais au lieu qu'Horizon Cloud crée automatiquement les groupes de ressources et les ressources nécessaires de la passerelle externe, créez un groupe de ressources à l'avance dans l'abonnement spécifié de cette passerelle externe tout en souhaitant qu'Horizon Cloud déploie les ressources de la passerelle externe dans ce groupe de ressources existant.

Deux options pour accorder l'accès au principal de service utilisé pour le déploiement de la passerelle externe :

  • Accordez l'accès au niveau de l'abonnement, comme dans le cas ci-dessus.
  • Utilisez la combinaison suivante :
    • Au niveau de l'abonnement, accordez l'accès à l'aide du rôle Lecteur intégré.
    • Au niveau du groupe de ressources nommé, accordez l'accès à l'aide d'autorisations définies dans un rôle personnalisé. Les autorisations accordées au niveau du groupe de ressources doivent fournir les opérations qu'Horizon Cloud doit effectuer dans le groupe de ressources pour déployer et configurer les ressources de la passerelle externe à cet emplacement.

      En plus des autorisations d'accès au groupe de ressources, Horizon Cloud doit disposer des autorisations pour effectuer les actions suivantes, en fonction de vos plans de déploiement :

      • Si ce déploiement utilise des sous-réseaux que vous créez à l'avance sur le réseau virtuel de cet abonnement, Horizon Cloud doit être en mesure de créer des cartes réseau et des groupes de sécurité réseau (NSG) sur ces sous-réseaux. Les autorisations requises sur le réseau virtuel auquel appartient le sous-réseau sont Microsoft.Network/virtualNetworks/subnets/* et Microsoft.Network/networkSecurityGroups/*
      • Si ce déploiement permet à Horizon Cloud de générer les sous-réseaux, outre les autorisations Microsoft.Network/virtualNetworks/subnets/* et Microsoft.Network/networkSecurityGroups/* ci-dessus, Horizon Cloud doit être en mesure de créer les sous-réseaux. Microsoft.Network/virtualNetworks/write est l'autorisation requise sur le réseau virtuel
      • Si votre déploiement de passerelle externe spécifie l'utilisation d'une adresse IP publique, Horizon Cloud doit être en mesure de créer des adresses IP publiques dans le groupe de ressources nommé. Microsoft.Network/publicIPAddresses est l'autorisation requise sur le groupe de ressources nommé
Lorsque le réseau virtuel dispose d'autres routes personnalisées. Le cloud Microsoft Azure dispose d'une fonctionnalité appelée routes personnalisées. Si le réseau virtuel dispose de routes personnalisées, une autorisation est nécessaire en plus de toutes celles pour les cas d'utilisation ci-dessus : Microsoft.Network/routeTables/join/action.

Utilisation d'un abonnement unique pour l'espace et ses configurations de passerelle ou d'un abonnement distinct pour la configuration externe d'Unified Access Gateway avec des autorisations définies au niveau de l'abonnement

Pour ces cas d'utilisation, les autorisations sont attribuées au niveau de l'abonnement. Le rôle personnalisé doit autoriser les opérations dans le tableau suivant. Le signe * (caractère générique) accorde l'accès à toutes les opérations qui correspondent à la chaîne dans l'opération indiquée.

Tableau 1. Opérations sur les ressources Microsoft Azure qui doivent être autorisées dans le rôle personnalisé lors de l'attribution d'autorisations au niveau de l'abonnement
Opération Description dans la documentation de 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

Le bloc de code JSON suivant est un exemple permettant d'illustrer l'apparence éventuelle d'une définition de rôle personnalisé nommée Espace Horizon Cloud lorsqu'elle dispose de l'ensemble des opérations précédentes. L'ID est l'ID unique du rôle personnalisé. Lorsqu'Azure PowerShell ou Azure CLI sont utilisés pour créer un rôle personnalisé, cet ID est généré automatiquement. Pour la variable mysubscriptionId1, remplacez l'ID de l'abonnement dans lequel le rôle personnalisé est utilisé : l'abonnement de l'espace ou l'abonnement de passerelle facultatif.

Tableau 2. Exemple de JSON pour un rôle autorisant les opérations requises d'Horizon Cloud lors de l'attribution d'autorisations au niveau de l'abonnement
{
"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"
  ]
}

Lorsque des routes personnalisées se trouvent dans le réseau virtuel et ses sous-réseaux

Le cloud Microsoft Azure dispose d'une fonctionnalité appelée routes personnalisées.

Si ces routes sont ajoutées au réseau virtuel et à ses sous-réseaux, cette autorisation supplémentaire est nécessaire.

Tableau 3. Opération sur les ressources Microsoft Azure qui doit être autorisée lorsque le réseau virtuel dispose de routes personnalisées
Opération Description dans la documentation de Microsoft Azure
Microsoft.Network/routeTables/join/action https://docs.microsoft.com/en-us/azure/role-based-access-control/resource-provider-operations#microsoftnetwork

Utilisation d'un abonnement distinct pour la configuration externe d'Unified Access Gateway, déploiement dans un groupe de ressources personnalisé, avec le rôle Lecteur au niveau de l'abonnement et les autorisations supplémentaires requises attribuées à des niveaux granulaires

Pour ce cas d'utilisation, au niveau de l'abonnement de la passerelle externe, votre organisation peut utiliser le rôle Reader intégré pour l'utilisation de l'enregistrement d'application Horizon Cloud, ainsi qu'un rôle personnalisé au niveau du groupe de ressources nommé.

Votre organisation crée un rôle personnalisé qui spécifie les autorisations dans le tableau suivant. Ce rôle personnalisé est ensuite attribué à l'enregistrement d'application Horizon Cloud pour fonctionner avec le groupe de ressources spécifiquement nommé dans l'abonnement de la passerelle externe. Vous (ou votre organisation) devez créer au préalable ce groupe de ressources nommé dans l'abonnement dans lequel vous déployez la passerelle externe.

Certaines autorisations spécifiques d'accès aux sous-réseaux et au réseau virtuel sont également requises, en fonction des options de déploiement prévues :

  • Si ce déploiement de passerelle externe utilise des sous-réseaux créés à l'avance, Horizon Cloud doit être en mesure de créer des cartes réseau et des groupes de sécurité réseau (NSG) sur ces sous-réseaux. Les autorisations requises sur le réseau virtuel auquel appartient le sous-réseau sont Microsoft.Network/virtualNetworks/subnets/* et Microsoft.Network/networkSecurityGroups/*.
  • Si ce déploiement de passerelle externe permet à Horizon Cloud de générer les sous-réseaux, en plus des autorisations Microsoft.Network/virtualNetworks/subnets/* et Microsoft.Network/networkSecurityGroups/* ci-dessus, Horizon Cloud doit être en mesure de créer les sous-réseaux. Microsoft.Network/virtualNetworks/write est l'autorisation requise sur le réseau virtuel de l'abonnement
  • Si votre déploiement spécifie l'utilisation d'une adresse IP publique pour la configuration de la passerelle externe, Horizon Cloud doit être en mesure de créer des adresses IP publiques dans le groupe de ressources nommé. Microsoft.Network/publicIPAddresses est l'autorisation requise sur le groupe de ressources nommé

Les opérations autorisées suivantes sont nécessaires dans le groupe de ressources nommé. Le signe * (caractère générique) accorde l'accès à toutes les opérations qui correspondent à la chaîne dans l'opération indiquée du fournisseur de ressources.

Tableau 4. Opérations sur les ressources Microsoft Azure qui doivent être autorisées dans le groupe de ressources spécifié
Opération Description dans la documentation de 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/publicIPAddresses/*, si votre déploiement spécifie l'utilisation d'une adresse IP publique pour le déploiement de la passerelle externe. 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