Share via


Configurar e usar um gateway de área de trabalho remota no Azure DevTest Labs

Este artigo descreve como configurar e usar um gateway para acesso seguro à área de trabalho remota a máquinas virtuais (VMs) de laboratório no Azure DevTest Labs. O uso de um gateway melhora a segurança porque você não expõe as portas RDP (Remote Desktop Protocol) da VM à Internet. Essa solução de gateway de área de trabalho remota também dá suporte à autenticação de token.

O DevTest Labs fornece um local central para que os usuários do laboratório exibam e se conectem às próprias VMs. A seleção de Conectar>RDP na página Visão geral da VM de um laboratório cria um arquivo RDP específico a um computador, e os usuários podem abrir o arquivo para se conectar à VM.

Com um gateway de área de trabalho remota, os usuários do laboratório se conectam às respectivas VMs por meio de um computador de gateway. Os usuários são autenticados diretamente no computador do gateway e podem usar credenciais fornecidas pela empresa em computadores ingressados no domínio. A autenticação de token fornece uma camada extra de segurança.

Outra maneira de acessar com segurança as VMs do laboratório sem expor portas nem endereços IP é por meio de um navegador, com o Azure Bastion. Para mais informações, consulte Habilitar a conexão do navegador a VMs do DevTest Labs com o Azure Bastion.

Arquitetura

O diagrama a seguir mostra como um gateway de área de trabalho remota aplica a autenticação de token e se conecta às VMs do DevTest Labs.

Diagrama que mostra a arquitetura do gateway de área de trabalho remota.

  1. Selecionar Conectar>RDP de uma VM de laboratório invoca o comando REST getRdpFileContents:

    POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/virtualmachines/{name}/getRdpFileContents
    
  2. Quando o laboratório tem um gateway configurado, a ação getRdpFileContents invoca https://{gateway-hostname}/api/host/{lab-machine-name}/port/{port-number} para solicitar um token de autenticação.

    • {gateway-hostname} ou {lb-uri} para um balanceador de carga, é o nome de host do gateway especificado na página Configurações de laboratório do laboratório.
    • {lab-machine-name} é o nome da VM à qual se conectar.
    • {port-number} é a porta a ser usada para a conexão. Normalmente, essa porta é 3389, mas se a VM do laboratório usar um IP compartilhado, o número da porta será diferente.
  3. O gateway de área de trabalho remota usa https://{function-app-uri}/api/host/{lab-machine-name}/port/{port-number} para adiar a chamada para um aplicativo de função do Azure Functions.

    Observação

    O cabeçalho da solicitação inclui automaticamente a chave de função, que é obtida do cofre de chaves do laboratório. O nome do segredo da chave de função é o Segredo do token de gateway na página Configurações do laboratório do laboratório em questão.

  4. A função do Azure gera e retorna um token para autenticação baseada em certificado no computador do gateway.

  5. A ação getRdpFileContents retorna o arquivo RDP completo, incluindo o token de autenticação.

Quando um programa de conexão RDP abre o arquivo RDP, o gateway de área de trabalho remota autentica o token e a conexão é encaminhada à VM do laboratório.

Observação

Nem todos os programas de conexão RDP oferecem suporte à autenticação de token.

Importante

A função do Azure define uma data de validade para o token de autenticação. Um usuário precisa se conectar à VM antes que o token expire.

Requisitos de configuração

Há alguns requisitos de configuração para computadores de gateway, Azure Functions e redes para trabalhar com autenticação de token e acesso RDP do DevTest Labs:

Requisitos do computador de gateway

O computador do gateway precisa ter a seguinte configuração:

  • Um certificado TLS/SSL para lidar com o tráfego HTTPS. O certificado precisa corresponder ao FQDN (nome de domínio totalmente qualificado) do computador de gateway se há apenas um computador, ou do balanceador de carga de um farm de gateway. Os certificados TLS/SSL curinga não funcionam.

  • Um certificado de autenticação. Você pode criar um certificado de autenticação usando o script do PowerShell Create-SigningCertificate.ps1.

  • Um módulo de autenticação conectável que dá suporte à autenticação de token. Um exemplo desse tipo de módulo é RDGatewayFedAuth.msi fornecido com as imagens do System Center VMM (Virtual Machine Manager).

  • A capacidade de lidar com solicitações para https://{gateway-hostname}/api/host/{lab-machine-name}/port/{port-number}.

Você pode usar o Módulo de solicitação de roteamento de aplicativos para o IIS (servidor de informações da Internet) para redirecionar solicitações https://{gateway-hostname}/api/host/{lab-machine-name}/port/{port-number} para o aplicativo de funções.

Requisitos do Azure Functions

Um aplicativo de funções do Azure Functions manipula solicitações com o formato https://{function-app-uri}/app/host/{lab-machine-name}/port/{port-number} e cria e retorna o token de autenticação com base no certificado de autenticação do computador de gateway. O {function-app-uri} é o URI usado para acessar a função.

O cabeçalho da solicitação inclui automaticamente a chave de função, que é obtida do cofre de chaves do laboratório.

Para uma função de exemplo, confira CreateToken.cs.

Requisitos de rede

  • O DNS para o FQDN associado ao certificado TLS/SSL do computador de gateway precisa direcionar o tráfego para o computador do gateway ou o balanceador de carga do farm de computadores do gateway.

  • Se a VM do laboratório usa um endereço IP privado, precisa haver um caminho de rede do computador de gateway para o computador do laboratório. Os dois computadores precisam compartilhar a mesma rede virtual ou então usar redes virtuais emparelhadas.

Criar um gateway de área de trabalho remota

O repositório do GitHub do Azure DevTest Labs tem modelos do ARM (Azure Resource Manager) que ajudam a configurar a autenticação de token do DevTest Labs e recursos de gateway de área de trabalho remota. Há modelos de criação de computador de gateway, configurações de laboratório e um aplicativo de funções.

Observação

Usando os modelos de exemplo, você concorda com os termos de licença do Gateway da Área de Trabalho Remota.

Siga estas etapas para configurar o farm de gateway da área de trabalho remota.

  1. Criar um certificado de autenticação.

    Execute Create-SigningCertificate.ps1. Salve a impressão digital, a senha e a codificação Base64 do certificado criado para uso posterior.

  2. Criar um certificado TLS/SSL. O FQDN associado ao certificado TLS/SSL precisa ser para um domínio que você controla.

  3. Registre a senha, a impressão digital e a codificação Base64 para o certificado TLS/SSL para uso posterior.

    • Para obter a impressão digital, use os seguintes comandos do PowerShell:

      $cer = New-Object System.Security.Cryptography.X509Certificates.X509Certificate;
      $cer.Import('path-to-certificate');
      $hash = $cer.GetCertHashString()
      
    • Para obter a codificação Base64, use o seguinte comando do PowerShell:

      [System.Convert]::ToBase64String([System.IO.File]::ReadAllBytes('path-to-certificate'))
      
  4. Baixe todos os arquivos de https://github.com/Azure/azure-devtestlab/tree/master/samples/DevTestLabs/GatewaySample/arm/gateway. Copie todos os arquivos e RDGatewayFedAuth.msi para um contêiner de blob em uma conta de armazenamento.

  5. Abra azuredeploy.json de https://github.com/Azure/azure-devtestlab/tree/master/samples/DevTestLabs/GatewaySample/arm/gateway e preencha os seguintes parâmetros:

    Parâmetro Obrigatório Descrição
    adminUsername Obrigatório Nome de usuário do administrador para os computadores do gateway.
    adminPassword Necessário Senha da conta de administrador para os computadores de gateway.
    instanceCount Número de computadores de gateway a serem criados.
    alwaysOn Indica se o aplicativo do Azure Functions criado deve ser mantido em um estado quente (ativado) ou não. Manter o aplicativo ativo evita atrasos quando os usuários tentam se conectar pela primeira vez à VM do laboratório, mas isso implica em custos.
    tokenLifetime O período de tempo no formato HH:MM:SS pelo qual o token criado será válido.
    sslCertificate Necessário A codificação Base64 do certificado TLS/SSL para o computador do gateway.
    sslCertificatePassword Necessário A senha do certificado TLS/SSL para o computador do gateway.
    sslCertificateThumbprint Necessário A impressão digital do certificado para identificação no repositório de certificados local do certificado de autenticação.
    signCertificate Necessário A codificação Base64 para o certificado de autenticação para o computador do gateway.
    signCertificatePassword Necessário A senha para o certificado de autenticação para o computador do gateway.
    signCertificateThumbprint Necessário A impressão digital do certificado para identificação no repositório de certificados local do certificado de autenticação.
    _artifactsLocation Necessário O local do URI para localizar os artefatos que este modelo requer. Esse valor precisa ser um URI totalmente qualificado, não um caminho relativo. Os artefatos incluem outros modelos, scripts do PowerShell e o módulo de autenticação conectável do Gateway de Área de Trabalho Remota, que devem ser nomeados RDGatewayFedAuth.msi que dá suporte à autenticação de token.
    _artifactsLocationSasToken Necessário O token de SAS (assinatura de acesso compartilhado) para acessar artefatos, se o _artifactsLocation for uma conta de armazenamento do Azure.
  6. Execute o seguinte comando da CLI do Azure para implantar azuredeploy.json:

    az deployment group create --resource-group {resource-group} --template-file azuredeploy.json --parameters @azuredeploy.parameters.json -–parameters _artifactsLocation="{storage-account-endpoint}/{container-name}" -–parameters _artifactsLocationSasToken = "?{sas-token}"
    
    • Obtenha o {storage-account-endpoint} executando az storage account show --name {storage-account-name} --query primaryEndpoints.blob.

    • Obtenha o {sas-token} executando az storage container generate-sas --name {container-name} --account-name {storage-account-name} --https-only –permissions drlw –expiry {utc-expiration-date}.

      • {storage-account-name} é o nome da conta de armazenamento que contém os arquivos que você carregou.
      • {container-name} é o contêiner no {storage-account-name} que contém os arquivos que você carregou.
      • {utc-expiration-date} é a data, em UTC, na qual o token SAS expirará e não poderá mais ser usado para acessar a conta de armazenamento.
  7. Registre os valores para gatewayFQDN e gatewayIP da saída de implantação de modelo. Salve também o valor da chave para a função recém-criada, que você pode encontrar na guia Configurações do aplicativo do aplicativo de funções.

  8. Configure o DNS para que o FQDN do certificado TLS/SSL seja direcionado para o endereço IP gatewayIP.

Depois de criar o farm de gateway de área de trabalho remota e atualizar o DNS, você poderá configurar o Azure DevTest Labs para usar o gateway.

Configurar o laboratório para usar a autenticação de token

Antes de atualizar as configurações do laboratório, armazene a chave para a função de token de autenticação no cofre de chaves do laboratório. Você pode obter o valor da chave de função na página Chaves de Função da função no portal do Azure. Para localizar a ID do cofre de chaves do laboratório, execute o seguinte comando de CLI do Azure:

az resource show --name {lab-name} --resource-type 'Microsoft.DevTestLab/labs' --resource-group {lab-resource-group-name} --query properties.vaultName

Para obter mais informações sobre como salvar um segredo em um cofre de chaves, consulte Adicionar um segredo ao Key Vault. Registre o nome do segredo para ser usado posteriormente. Esse valor não é a própria chave de função, mas o nome do segredo do cofre de chaves do laboratório que contém a chave de função.

Para configurar o Nome do host do gateway de um laboratório e o Segredo do token de gateway para usar a autenticação de token com os computadores de gateway, siga estas etapas:

  1. Na página Visão geral do laboratório, selecione Configuração e políticas no painel de navegação à esquerda.

  2. Na página Configuração e políticas, selecione Configurações de laboratório na seção Configurações do painel de navegação à esquerda.

  3. Na seção Área de trabalho remota:

    • Para o campo Nome do host do gateway, insira o FQDN ou o endereço IP do farm ou computador do gateway de serviços de área de trabalho remota. Esse valor deve corresponder ao FQDN do certificado TLS/SSL usado nos computadores de gateway.

    • Para Token de gateway, insira o nome do segredo que você registrou anteriormente. Esse valor não é a própria chave de função, mas o nome do segredo do cofre de chaves do laboratório que contém a chave de função.

    Captura de tela das opções de área de trabalho remota nas configurações do Laboratório.

  4. Selecione Salvar.

    Observação

    Ao selecionar Salvar, você concorda com os termos de licença do Gateway de Área de Trabalho Remota.

Depois de configurar o gateway e o laboratório, o arquivo de conexão RDP criado quando o usuário do laboratório seleciona Conectar inclui as informações necessárias para se conectar ao gateway e usar a autenticação de token.

Automatizar a configuração do laboratório

  • PowerShell: o Set-DevTestLabGateway.ps1 é um script de exemplo do PowerShell para definir automaticamente as configurações de Nome do host do gateway e Segredo do token de gateway.

  • ARM: use osmodelos do ARM de exemplo do gateway no repositório do GitHub do Azure DevTest Labs para criar ou atualizar um laboratório com as configurações de Nome do host do gateway e o Segredo do token de gateway.

Configurar um grupo de segurança de rede

Para proteger ainda mais o laboratório, adicione um grupo de segurança de rede (NSG) à rede virtual que as VMs do laboratório usam, conforme descrito em Criar, alterar ou excluir um grupo de segurança de rede. Por exemplo, um NSG pode permitir que apenas o tráfego que passa pelo gateway primeiro alcance as VMs do laboratório. A origem da regra é o endereço IP do computador de gateway ou o balanceador de carga do farm de gateway.

Captura de tela de uma regra de grupo de segurança de rede.

Próximas etapas