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/action | Este 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/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 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/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. |
| 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?