Para que o registro do aplicativo do Horizon Cloud de primeira geração tenha a capacidade de fazer chamadas de API na assinatura do pod (ou na assinatura de gateway externo opcional) e realizar as operações relacionadas à VDI, uma função deve ser atribuída a ele. Normalmente, a função Contributor
é usada para essa finalidade. Para organizações que preferem evitar o uso da função Contributor
, elas podem criar uma função personalizada e fazer com que ela dê ao registro do aplicativo do Horizon Cloud a capacidade de realizar as chamadas de API necessárias.
Além de uma função personalizada para o registro do aplicativo do Horizon Cloud na assinatura do pod, se a sua organização preferir adotar a abordagem de ter uma assinatura separada para a configuração do Unified Access Gateway externa do pod e também optar por implantar os recursos de gateway em um grupo de recursos específico, que a organização configura para essa finalidade, a função personalizada para a assinatura desse gateway poderá ter permissões mais granulares e de escopo mais restrito do que a função personalizada para a assinatura do pod.
Breve introdução às funções personalizadas
O conceito abrangente é que o Horizon Cloud precisa realizar determinadas operações na assinatura do pod e nos grupos de recursos dele para criar e manter com êxito os recursos necessários a fim de ter um pod e suas configurações de gateway.
Como um exemplo simples, como o pod e a arquitetura de gateway exigem máquinas virtuais com NICs, o Horizon Cloud precisa da capacidade de criar máquinas virtuais e NICs na sua assinatura e anexar esses NICs a sub-redes na VNet da assinatura.
No Microsoft Azure, uma função fornece um conjunto de operações de gerenciamento que podem ser realizadas por uma entidade de serviço de registro de aplicativo. Uma operação de gerenciamento é uma combinação do recurso e da ação executada nesse recurso.
Você pode restringir as capacidades do registro do aplicativo do Horizon Cloud na assinatura do pod e na assinatura do gateway (opcional) às operações mínimas necessárias, seguindo as regras descritas abaixo.
Visão geral dos casos de uso disponíveis
Ao discutir as operações necessárias para o Horizon Cloud em suas assinaturas e grupos de recursos, existem estes casos de uso.
Caso de uso | Descrição |
---|---|
Uma única assinatura usada pelo Horizon Cloud relativa aos pods e suas configurações externas do Unified Access Gateway. | Nesse caso, o acesso deve ser concedido à entidade de serviço no nível de assinatura do pod. A função atribuída à entidade de serviço nesse nível deve permitir as ações que o Horizon Cloud precisa realizar na sua assinatura para criar, com êxito, nessa assinatura, os recursos necessários e trabalhar com esses recursos ao longo do tempo. Por exemplo, nesse caso, a função deve fornecer a capacidade de criar os grupos de recursos padrão, os grupos de segurança de rede, as máquinas virtuais e assim por diante. |
Duas assinaturas, e você deseja que o Horizon Cloud crie automaticamente os grupos de recursos e os recursos necessários ao gateway na assinatura especificada do gateway externo, tal qual se passa com a assinatura do pod.
|
Ao usar essa opção, a entidade de serviço de cada assinatura deve receber acesso no nível da assinatura, com permissões que viabilizem as ações iguais às do caso de uso de assinatura única descrito acima. |
Duas assinaturas conforme descrito acima, mas em vez de o Horizon Cloud criar automaticamente os grupos de recursos e os recursos necessários do gateway externo, você cria um grupo de recursos com antecedência na assinatura especificada do gateway externo e deseja que o Horizon Cloud implante os recursos do gateway nesse grupo de recursos existente. | Duas opções para conceder acesso à entidade de serviço usada para implantar o gateway externo:
|
Quando sua VNet tem rotas personalizadas. A Nuvem do Microsoft Azure tem um recurso chamado rotas personalizadas. | Se sua VNet tiver rotas personalizadas, será necessária uma permissão além de todas as outras para os casos de uso acima: Microsoft.Network/routeTables/join/action . |
Ao usar uma única assinatura para o pod e suas configurações de gateway ou usar uma assinatura separada para a configuração externo do Unified Access Gateway com permissões definidas no nível da assinatura
Para esses casos de uso, as permissões são atribuídas no nível da assinatura. A função personalizada deve permitir as operações da tabela a seguir. O *
(caractere curinga) concede acesso a todas as operações que correspondem à string na operação listada.
O seguinte bloco de códigos JSON é um exemplo que ilustra a possível aparência de uma definição de função personalizada chamada Pod do Horizon Cloud quando tem o conjunto de operações exigidas pelo implantador do pod. A ID é a ID exclusiva da função personalizada. Quando o Azure PowerShell ou a CLI do Azure são usados para criar uma função personalizada, esse ID é gerado automaticamente. Para a variável mysubscriptionId1, substitua o ID da assinatura em que a função personalizada será usada: a assinatura do pod ou a assinatura opcional do gateway.
{ "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" ] } |
Quando as rotas personalizadas estão em sua VNet e suas sub-redes
A nuvem do Microsoft Azure tem um recurso chamado rotas personalizadas.
Se você tiver essas rotas adicionadas à sua VNet e suas sub-redes, essa permissão adicional será necessária.
Operação | Descrição na documentação do Microsoft Azure |
---|---|
Microsoft.Network/routeTables/join/action |
https://docs.microsoft.com/en-us/azure/role-based-access-control/resource-provider-operations#microsoftnetwork |
Ao usar uma assinatura separada para a configuração externa do Unified Access Gateway, implantá-la em um grupo de recursos personalizado, com a função de leitor no nível da assinatura e permissões adicionais necessárias atribuídas em níveis granulares
Para esse caso de uso, no nível de assinatura do gateway externo, sua organização pode usar a função interna Reader
para que o registro do aplicativo do Horizon Cloud a utilize, além de uma função personalizada no nível do grupo de recursos nomeado.
Sua organização criaria uma função personalizada que especificasse as permissões na tabela a seguir. Essa função personalizada seria então atribuída ao registro do aplicativo do Horizon Cloud para operar com o grupo de recursos especificamente nomeado na assinatura do gateway externo. Você ou sua organização criariam previamente esse grupo de recursos nomeado na assinatura na qual você está implantando o gateway externo.
Algumas permissões específicas em sub-redes e na VNet também são necessárias, dependendo das suas opções de implantação planejadas:
- Se essa implantação externa de gateway usar sub-redes que você criou com antecedência, o Horizon Cloud precisará da capacidade de criar NICs e grupos de segurança de rede (NSGs) nessas sub-redes. As permissões necessárias à VNet à qual a sub-rede pertence são
Microsoft.Network/virtualNetworks/subnets/*
eMicrosoft.Network/networkSecurityGroups/*
. - Se essa implantação externa de gateway fizer com que o Horizon Cloud gere as sub-redes, além das permissões
Microsoft.Network/virtualNetworks/subnets/*
eMicrosoft.Network/networkSecurityGroups/*
acima, o Horizon Cloud precisará da capacidade de criar as sub-redes. A permissão necessária para a VNet da assinatura éMicrosoft.Network/virtualNetworks/write
- Se a sua implantação especificar o uso de um endereço IP público para a configuração externa de gateway, o Horizon Cloud precisará da capacidade de criar endereços IP públicos no grupo de recursos nomeado. A permissão necessária no grupo de recursos nomeado é
Microsoft.Network/publicIPAddresses
As seguintes operações permitidas são necessárias para o grupo de recursos nomeado. O *
(caractere curinga) concede acesso a todas as operações que correspondem à string na operação do provedor de recursos listada.