La función Contributor
se utiliza comúnmente para habilitar el proceso de registro de la aplicación Horizon Cloud para realizar llamadas de API en la suscripción de Microsoft Azure. Si prefiere evitar el uso de la función Contributor
, puede crear una función personalizada con esta finalidad. La función personalizada tiene ciertos permisos obligatorios y opcionales que deben tenerse en cuenta al crear una entidad de servicio.
Para crear una función personalizada, utilice una herramienta, como Azure PowerShell o la CLI de Azure, y cree una definición de función personalizada que, como mínimo, incluya los permisos obligatorios indicados en este tema. Consulte el ejemplo de JSON que aparece a continuación. Para obtener más información sobre los permisos específicos de Microsoft Azure que aparecen en esta página, consulte Operaciones del proveedor de recursos de Azure.
Permisos obligatorios
Operación |
---|
Microsoft.Authorization/*/read |
Microsoft.Compute/*/read |
Microsoft.Compute/availabilitySets/* |
Microsoft.Compute/disks/* |
Microsoft.Compute/galleries/read Microsoft.Compute/galleries/write Microsoft.Compute/galleries/delete Microsoft.Compute/galleries/images/* Microsoft.Compute/galleries/images/versions/* |
Microsoft.Compute/images/* |
Microsoft.Compute/locations/* |
Microsoft.Compute/snapshots/* |
Microsoft.Compute/virtualMachines/* |
Microsoft.Compute/virtualMachineScaleSets/* |
Microsoft.ContainerService/managedClusters/delete |
Microsoft.ContainerService/managedClusters/read |
Microsoft.ContainerService/managedClusters/write |
Microsoft.ContainerService/managedClusters/commandResults/read |
Microsoft.ContainerService/managedClusters/runcommand/action |
Microsoft.ContainerService/managedClusters/upgradeProfiles/read |
Microsoft.ManagedIdentity/userAssignedIdentities/*/assign/action |
Microsoft.ManagedIdentity/userAssignedIdentities/*/read |
Microsoft.MarketplaceOrdering/offertypes/publishers/offers/plans/agreements/read Microsoft.MarketplaceOrdering/offertypes/publishers/offers/plans/agreements/write |
Microsoft.Network/loadBalancers/* |
Microsoft.Network/networkInterfaces/* |
Microsoft.Network/networkSecurityGroups/* |
Microsoft.Network/virtualNetworks/read |
Microsoft.Network/virtualNetworks/write |
Microsoft.Network/virtualNetworks/checkIpAddressAvailability/read |
Microsoft.Network/virtualNetworks/subnets/* |
Microsoft.Network/virtualNetworks/virtualNetworkPeerings/read |
Microsoft.ResourceGraph/* |
Microsoft.Resources/deployments/* |
Microsoft.Resources/subscriptions/read |
Microsoft.Resources/subscriptions/resourceGroups/* |
Microsoft.ResourceHealth/availabilityStatuses/read |
Microsoft.Storage/*/read |
Microsoft.Storage/storageAccounts/* |
Si pretende utilizar App Volumes, asegúrese de haber configurado los permisos que aparecen en la tabla en el nivel de suscripción. Para obtener más información sobre estos permisos, consulte Endpoint privado de Azure para una cuenta de almacenamiento de aplicaciones de App Volumes.
Operación |
---|
Microsoft.Network/locations/availablePrivateEndpointTypes/read |
Microsoft.Network/privateEndpoints/read |
Microsoft.Network/privateEndpoints/write |
Microsoft.Network/privateEndpoints/delete |
Microsoft.Network/virtualNetworks/read |
Microsoft.Network/virtualNetworks/subnets/read |
Microsoft.Network/virtualNetworks/subnets/write |
Microsoft.Network/virtualNetworks/subnets/join/action |
Microsoft.Resources/deployments/* |
Microsoft.Resources/subscriptions/read |
Microsoft.Resources/subscriptions/resourceGroups/read |
Permisos opcionales
Los siguientes permisos no son obligatorios para la implementación de Horizon Edge en Microsoft Azure. Sin embargo, la funcionalidad de Horizon Universal Console que depende de estos permisos opcionales no funciona si no los incluye.
Operación | |
---|---|
Microsoft.KeyVault/*/read Microsoft.KeyVault/vaults/* Microsoft.KeyVault/vaults/secrets/* |
Se requieren permisos de almacén de claves para el cifrado de disco de las máquinas virtuales de grupo. |
Microsoft.Network/natGateways/join/action |
Este permiso es necesario cuando se selecciona el tipo de conectividad Vínculo privado de Azure en el momento en que se crea la instancia de Horizon Edge y la subred de administración tiene una puerta de enlace NAT asociada. Se requiere el permiso para crear los recursos de endpoint privado. |
Microsoft.Network/natGateways/read |
Este permiso es necesario para validar que la puerta de enlace NAT de la subred de administración está configurada correctamente cuando el tipo de salida de clúster se selecciona como Puerta de enlace NAT para Horizon Edge. |
Microsoft.Network/privateEndpoints/write Microsoft.Network/privateEndpoints/read |
Se requieren permisos de endpoint privado para implementar Horizon Edge con Azure Private Link. |
Microsoft.Network/publicIPAddresses/* |
Se requiere permiso de IP pública para implementar una instancia de Horizon Edge con instancias de Unified Access Gateway detrás de un equilibrador de carga con una dirección IP pública. Además, este permiso es obligatorio para implementar y agregar una dirección IP pública a una imagen. |
Microsoft.Network/routeTables/join/action |
Este permiso es necesario cuando se selecciona el tipo de conectividad Vínculo privado de Azure en el momento en que se crea la instancia de Horizon Edge y la subred de administración tiene una tabla de rutas asociada. Se requiere el permiso para crear los recursos de endpoint privado. |
Microsoft.Network/routeTables/read |
Este permiso es necesario si el tipo de salida de clúster seleccionado para Horizon Edge es Rutas definidas por el usuario. Es necesario validar la tabla de rutas asociada de la subred de administración para garantizar que la ruta predeterminada esté configurada correctamente. |
Los permisos son de los tipos siguientes:
Ámbito: https://graph.microsoft.com/
Permiso: Device.ReadWrite.All Read and write devices
Consentimiento del administrador: Yes
El permiso se puede conceder accediendo a la siguiente ubicación:
Ejemplo de JSON de función personalizada de Microsoft Azure
El siguiente bloque de código JSON es un ejemplo para ilustrar el aspecto que puede tener una definición de función personalizada denominada Horizon Cloud Custom Role - Titan cuando tiene el conjunto de operaciones obligatorias y opcionales precedentes. El ID es el identificador único del rol personalizado. Cuando se utiliza Azure PowerShell o la CLI de Azure para crear una función personalizada, el proceso genera automáticamente este identificador. Para la variable my_subscription_ID, sustituya los identificadores de las suscripciones en las que se utilizará la función personalizada.
En la sección assignableScopes, puede utilizar varios identificadores de suscripción, "/subscriptions/my_subscription_ID", para permitir que la función personalizada se utilice en varias suscripciones.
{ “id”: “uuid”, “properties”: { “roleName”: “Horizon Cloud Custom Role - Titan”, “description”: “All permissions required for deployment and operation of a Horizon Edge in Azure”, “assignableScopes”: [ “/subscriptions/my_subscription_ID” ], “permissions”: [ { “actions”: [ “Microsoft.Authorization/*/read”, “Microsoft.Compute/*/read”, “Microsoft.Compute/availabilitySets/*“, “Microsoft.Compute/disks/*“, “Microsoft.Compute/galleries/read”, “Microsoft.Compute/galleries/write”, “Microsoft.Compute/galleries/delete”, “Microsoft.Compute/galleries/images/*”, “Microsoft.Compute/galleries/images/versions/*”, “Microsoft.Compute/images/*”, “Microsoft.Compute/locations/*”, “Microsoft.Compute/snapshots/*”, “Microsoft.ContainerService/managedClusters/delete”, “Microsoft.ContainerService/managedClusters/read”, “Microsoft.ContainerService/managedClusters/write”, “Microsoft.ContainerService/managedClusters/commandResults/read”, “Microsoft.ContainerService/managedClusters/runcommand/action”, “Microsoft.ContainerService/managedClusters/upgradeProfiles/read”, “Microsoft.ManagedIdentity/userAssignedIdentities/*/assign/action”, “Microsoft.ManagedIdentity/userAssignedIdentities/*/read”, “Microsoft.Compute/virtualMachines/*”, “Microsoft.Compute/virtualMachineScaleSets/*”, “Microsoft.MarketplaceOrdering/offertypes/publishers/offers/plans/agreements/read”, “Microsoft.MarketplaceOrdering/offertypes/publishers/offers/plans/agreements/write”, “Microsoft.Network/loadBalancers/*”, “Microsoft.Network/networkInterfaces/*”, “Microsoft.Network/networkSecurityGroups/*”, “Microsoft.Network/virtualNetworks/read”, “Microsoft.Network/virtualNetworks/write”, “Microsoft.Network/virtualNetworks/checkIpAddressAvailability/read”, “Microsoft.Network/virtualNetworks/subnets/*”, “Microsoft.Network/virtualNetworks/virtualNetworkPeerings/read”, “Microsoft.ResourceGraph/*”, “Microsoft.Resources/deployments/*”, “Microsoft.Resources/subscriptions/read”, “Microsoft.Resources/subscriptions/resourceGroups/*”, “Microsoft.ResourceHealth/availabilityStatuses/read”, “Microsoft.Storage/*/read”, “Microsoft.Storage/storageAccounts/*”, “Microsoft.KeyVault/*/read”, “Microsoft.KeyVault/vaults/*”, “Microsoft.KeyVault/vaults/secrets/*”, “Microsoft.Network/natGateways/join/action”, “Microsoft.Network/natGateways/read”, “Microsoft.Network/privateEndpoints/write”, “Microsoft.Network/privateEndpoints/read”, “Microsoft.Network/publicIPAddresses/*”, “Microsoft.Network/routeTables/join/action", "Microsoft.Network/routeTables/read" ], “notActions”: [], “dataActions”: [], “notDataActions”: [] } ] } } |