Skip to main content

Para usar uma função personalizada para o registro de aplicativos do Horizon Cloud

O perfil Colaborador é normalmente usado para possibilitar que o processo de registro do aplicativo Horizon Cloud faça chamadas de API na assinatura do Microsoft Azure. Se preferir evitar o uso da função Colaborador, você pode criar uma função personalizada para essa finalidade. A função personalizada tem determinadas permissões necessárias e opcionais das quais você deve estar ciente ao criar uma entidade de serviço.

Para criar um perfil personalizado, use uma ferramenta como o Azure PowerShell ou a CLI do Azure para criar uma definição de perfil personalizado que inclua as permissões obrigatórias listadas neste tópico. Para obter mais informações sobre as funções personalizadas do Azure, consulte Operações do provedor de recursos do Azure.

Permissões obrigatórias para a função personalizada do Azure

As seguintes permissões são obrigatórias para a implantação do Horizon Edge no Microsoft Azure. Essas operações de recursos do Microsoft Azure devem ser permitidas na função personalizada ao atribuir permissões no nível da assinatura.

Operação
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/*

Se você pretende usar o App Volumes, certifique-se de ter configurado as permissões no nível da assinatura. Para obter mais informações sobre essas permissões, consulte Endpoint privado do Azure para uma conta de armazenamento de aplicativos do App Volumes.

Operação
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

Permissões opcionais para a função personalizada do Azure

As seguintes permissões não são obrigatórias para a implantação do Horizon Edge no Microsoft Azure. No entanto, a funcionalidade no Horizon Universal Console que depende dessas permissões opcionais não funcionará se você não as incluir. As seguintes operações de recursos do Microsoft Azure são opcionais na função personalizada ao atribuir permissões no nível da assinatura.

Operação 
Microsoft.KeyVault/*/read
Microsoft.KeyVault/vaults/*
Microsoft.KeyVault/vaults/secrets/*
As permissões do repositório de chaves são necessárias para a criptografia de disco das VMs do pool.
Microsoft.Network/natGateways/join/action
Essa permissão é necessária quando o tipo de conectividade Link Privado do Azure é selecionado no momento em que o Horizon Edge é criado e a sub-rede de gerenciamento tem um gateway NAT associado. A permissão é necessária para criar os recursos do endpoint privado.
Microsoft.Network/natGateways/read
Essa permissão é necessária para validar se o gateway NAT da sub-rede de gerenciamento está, se presente, configurado corretamente quando o tipo de saída do cluster é selecionado como gateway NAT para o Horizon Edge.
Microsoft.Network/privateEndpoints/write
Microsoft.Network/privateEndpoints/read
São necessárias permissões de Endpoint Privado para implementar o Horizon Edge com Link Privado do Azure.
Microsoft.Network/publicIPAddresses/*É necessária permissão de IP público para implantar uma instância do Horizon Edge com instâncias do Unified Access Gateway atrás de um balanceador de carga com um endereço IP público. Além disso, essa permissão é necessária para implantar e adicionar um endereço IP público a uma imagem.
Microsoft.Network/routeTables/join/action
Essa permissão é necessária quando o tipo de conectividade Link Privado do Azure é selecionado no momento em que o Horizon Edge é criado e a sub-rede de gerenciamento tem uma tabela de caminhos anexada. A permissão é necessária para criar os recursos do endpoint privado.
Microsoft.Network/routeTables/read
Essa permissão será necessária se o tipo de saída do cluster selecionado para o Horizon Edge for Rotas definidas pelo usuário. É necessário validar a tabela de rotas associada da sub-rede de gerenciamento para garantir que a rota padrão esteja configurada corretamente.

Observação: Ao excluir um pool ou uma VM do Microsoft Entra ID, a entidade de serviço deve ter permissões para excluir a entrada do dispositivo do Microsoft Entra ID.

As permissões são das seguintes:

Escopo: https://graph.microsoft.com/

Permissão: Device.ReadWrite.All Read and write devices

Consentimento do Administrador: Yes

A permissão pode ser concedida navegando até Assinatura > Azure Active Directory > Registros de Aplicativos > Selecione o aplicativo que precisa de permissão > Permissão da API > Selecione Microsoft GRAPH > Selecione Device.ReadWriteAll.

Exemplo de JSON da função personalizada do Microsoft Azure

O bloco de código JSON a seguir ilustra o que uma definição de função personalizada denominada Horizon Cloud Custom Role - Titan pode parecer quando contém as operações obrigatórias e opcionais listadas acima. A ID é a ID exclusiva da função personalizada. Quando você usa o Azure PowerShell ou a CLI do Azure para criar uma função personalizada, o processo gera automaticamente essa ID. Para a variável my_subscription_ID, substitua os IDs das assinaturas nas quais a função personalizada será usada.

Na seção assignableScopes, é possível usar vários IDs de assinatura, "/subscriptions/my_subscription_ID", para permitir que a função personalizada seja utilizada em várias assinaturas.

Veja a seguinte amostra JSON para um perfil que permite as operações necessárias do Horizon Cloud ao atribuir permissões no nível de Assinatura.

{
    “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”: []
            }
        ]
    }
}

Esta página foi útil?

Enviar feedback sobre este tópico

Este tópico foi útil?

Não inclua informações pessoais ou confidenciais.

Gerando o link…