Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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 (Protocolo de Área de Trabalho Remota) das VMs para a 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 do Connect>Connect via RDP na página visão geral de uma VM de laboratório cria um arquivo RDP específico do 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.
Selecionar Conectar-se>via RDP em 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}/getRdpFileContentsQuando o laboratório é configurado com um gateway, a ação
getRdpFileContentsinvocahttps://{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 endereço IP compartilhado, o número da porta será diferente.
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 do Gateway especificado na página de Configurações de laboratório do laboratório.
A função do Azure gera e retorna um token para autenticação baseada em certificado no computador do gateway.
A ação
getRdpFileContentsretorna 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 habilitar máquinas de gateway, Azure Functions e redes para trabalhar com acesso RDP do DevTest Labs e autenticação de token.
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. Certificados TLS/SSL wildcard 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 (Serviços 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
O uso dos modelos de exemplo indica sua concordância com os termos de licença do Gateway de Área de Trabalho Remota.
Siga estas etapas para configurar o farm de gateway da área de trabalho remota.
Criar um certificado de autenticação.
Execute Create-SigningCertificate.ps1. Registre a impressão digital, a senha e a codificação Base64 do novo certificado a ser usado posteriormente.
Criar um certificado TLS/SSL. O FQDN associado ao certificado TLS/SSL deve ser para um domínio que você controla.
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'))
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.
Abra azuredeploy.json a partir 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 adminUsernameObrigatório Nome de usuário do administrador para os computadores do gateway. adminPasswordObrigatório Senha da conta de administrador para os computadores de gateway. instanceCountNúmero de computadores de gateway a serem criados. alwaysOnSe deve manter o aplicativo criado do Azure Functions ativado. Manter o aplicativo ativado evita atrasos quando os usuários tentam se conectar pela primeira vez às suas VMs de laboratório, mas isso tem implicações de custo. tokenLifetimeO período de tempo, no formato HH:MM:SS, em que o token criado é válido. sslCertificateObrigatório A codificação Base64 do certificado TLS/SSL para o computador do gateway. sslCertificatePasswordObrigatório A senha do certificado TLS/SSL para o computador do gateway. sslCertificateThumbprintObrigatório A impressão digital do certificado para identificação no repositório de certificados local do certificado de autenticação. signCertificateObrigatório A codificação Base64 para o certificado de autenticação para o computador do gateway. signCertificatePasswordObrigatório A senha para o certificado de autenticação para o computador do gateway. signCertificateThumbprintObrigatório A impressão digital do certificado para identificação no repositório de certificados local do certificado de autenticação. _artifactsLocationObrigató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 Plugável do Gateway de Área de Trabalho Remota, que deve ser nomeado RDGatewayFedAuth.msi e dá suporte à autenticação de token. _artifactsLocationSasTokenObrigatório O token de SAS (assinatura de acesso compartilhado) para acessar artefatos, se o _artifactsLocationfor uma conta de armazenamento do Azure.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}executandoaz storage account show --name {storage-account-name} --query primaryEndpoints.blob.Obtenha o
{sas-token}executandoaz 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.
Registre os valores para
gatewayFQDNegatewayIPda 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.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, configure o 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 saber 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 e o segredo do token do Gateway de um laboratório para usar a autenticação de token com o computador ou computadores do gateway, conclua estas etapas:
Na página Visão geral do laboratório, no painel esquerdo, selecione Configuração e políticas.
Na página Configuração e políticas , na seção Configurações no painel esquerdo, selecione Configurações do Laboratório.
Na seção Conexão de área de trabalho remota :
Na caixa nome do host do Gateway, insira o FQDN ou o endereço IP do farm ou do computador de gateway de serviços de área de trabalho remota. Esse valor deve corresponder ao FQDN do certificado TLS/SSL usado nos computadores de gateway.
Na caixa Segredo do Token do 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.
Clique em Salvar.
Observação
Selecionar Salvar indica que 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 Connect 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: Set-DevTestLabGateway.ps1 é um script de exemplo do PowerShell para definir automaticamente o nome do host do Gateway e as configurações de segredo do token do 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 NSG (grupo de segurança de rede) à 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.


