Skip to main content

2 de septiembre de 2026

Utilizar un rol personalizado para el registro de aplicaciones de Horizon Cloud

El rol Colaborador se utiliza con frecuencia 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 del rol Colaborador, puede crear un rol personalizado con esta finalidad. El rol personalizado tiene ciertos permisos obligatorios y opcionales que deben tenerse en cuenta al crear una entidad de servicio.

Para crear un rol personalizado, utilice una herramienta, como Azure PowerShell o la CLI de Azure, para crear una definición de función personalizada que incluya los permisos obligatorios indicados en este tema. Para obtener más información sobre los roles personalizados de Azure, consulte Operaciones del proveedor de recursos de Azure.

Permisos obligatorios para el rol personalizado de Azure

Los siguientes permisos son obligatorios para la implementación de Horizon Edge en Microsoft Azure. Estas operaciones de recursos de Microsoft Azure deben estar permitidas en el rol personalizado al asignar permisos en el nivel de suscripción.

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/checkIpAddressAvailability/read
Microsoft.Network/virtualNetworks/subnets/read
Microsoft.Network/virtualNetworks/subnets/write
Microsoft.Network/virtualNetworks/subnets/join/action
Microsoft.Network/virtualNetworks/subnets/joinLoadBalancer/action
Microsoft.Network/virtualNetworks/subnets/joinViaServiceEndpoint/action
Microsoft.Network/virtualNetworks/subnets/effectiveRoutingRules/read
Microsoft.Network/virtualNetworks/subnets/effectiveSecurityUserRules/read
Microsoft.Network/virtualNetworks/subnets/resourceNavigationLinks/read
Microsoft.Network/virtualNetworks/subnets/serviceAssociationLinks/read
Microsoft.Network/virtualNetworks/subnets/virtualMachines/read
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 tiene intención de utilizar App Volumes, asegúrese de haber configurado los permisos 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 para el rol personalizado de Azure

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. Las siguientes operaciones de recursos de Microsoft Azure son opcionales en el rol personalizado al asignar permisos en el nivel de suscripción.

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/actionEste permiso es necesario cuando se selecciona el tipo de conectividad Azure Private Link 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/readEste 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/actionEste permiso es necesario cuando se selecciona el tipo de conectividad Azure Private Link 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/readEste 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.
Microsoft.CostManagement//read
Microsoft.Billing/
/read
Estos permisos permiten a Horizon Cloud leer los datos de Azure Cost Management and Billing correspondientes a los grupos de recursos creados por Horizon con el fin de calcular métricas de costes y ahorro para Análisis de costes.

Nota: Al eliminar un grupo unido a Microsoft Entra ID o una máquina virtual, la entidad de servicio debe tener permisos para eliminar la entrada del dispositivo de Microsoft Entra ID.

Los permisos son de los tipos siguientes:

Ámbito: https://graph.microsoft.com/

Permiso: Device.ReadWrite.All Read and write devices

Consentimiento del administrador: Yes

Para conceder el permiso, vaya a Suscripción > Azure Active Directory > Registros de aplicaciones > Seleccionar la aplicación a la que se debe conceder el permiso > Permiso de API > Seleccionar Microsoft GRAPH > Seleccionar Device.ReadWriteAll.

Ejemplo de JSON de rol personalizado de Microsoft Azure

El siguiente bloque de código JSON muestra cómo podría ser una definición de rol personalizado llamada Horizon Cloud Custom Role - Titan cuando contiene las operaciones obligatorias y opcionales mencionadas anteriormente. El ID es el identificador único del rol personalizado. Cuando se utiliza Azure PowerShell o la CLI de Azure para crear un rol personalizado, el proceso genera automáticamente este identificador. Para la variable my_subscription_ID, sustituya los identificadores de las suscripciones en las que se utilizará el rol personalizado.

En la sección assignableScopes, puede utilizar varios identificadores de suscripción, "/subscriptions/my_subscription_ID", para permitir que el rol personalizado se utilice en varias suscripciones.

En el siguiente código JSON de ejemplo se muestra un rol que permite las operaciones necesarias de Horizon Cloud al asignar permisos en el nivel de suscripción.

{
    "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/checkIpAddressAvailability/read",
                    "Microsoft.Network/virtualNetworks/subnets/read",
                    "Microsoft.Network/virtualNetworks/subnets/write",
                    "Microsoft.Network/virtualNetworks/subnets/join/action",
                    "Microsoft.Network/virtualNetworks/subnets/joinLoadBalancer/action",
                    "Microsoft.Network/virtualNetworks/subnets/joinViaServiceEndpoint/action",
                    "Microsoft.Network/virtualNetworks/subnets/effectiveRoutingRules/read",
                    "Microsoft.Network/virtualNetworks/subnets/effectiveSecurityUserRules/read",
                    "Microsoft.Network/virtualNetworks/subnets/resourceNavigationLinks/read",
                    "Microsoft.Network/virtualNetworks/subnets/serviceAssociationLinks/read",
                    "Microsoft.Network/virtualNetworks/subnets/virtualMachines/read",
                    "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": []
            }
        ]
    }
}

¿Le resultó útil esta página?

Enviar comentarios sobre este tema

¿Le resultó útil este tema?

No incluya información personal ni confidencial.

Generando el enlace…