Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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) das VMs à Internet. Esta solução de gateway de área de trabalho remota também suporta autenticação de token.
O DevTest Labs fornece um local central para os usuários do laboratório visualizarem e se conectarem às suas VMs. Selecionar Connect>Connect via RDP na página Visão geral de uma VM de laboratório cria um arquivo RDP específico da máquina e os usuários podem abrir o arquivo para se conectar à VM.
Com um gateway de área de trabalho remota, os usuários de laboratório se conectam às suas VMs por meio de uma máquina de gateway. Os usuários se autenticam diretamente na máquina do gateway e podem usar credenciais fornecidas pela empresa em máquinas associadas ao domínio. A autenticação de token fornece uma camada extra de segurança.
Outra maneira de acessar com segurança VMs de laboratório sem expor portas ou endereços IP é por meio de um navegador com o Azure Bastion. Para obter mais informações, consulte Habilitar conexão do navegador com VMs do DevTest Labs com o Azure Bastion.
Arquitetura
O diagrama a seguir mostra como um gateway de área de trabalho remota aplica autenticação de token e se conecta a VMs do DevTest Labs.
Selecionar Connect>Connect via RDP a partir de uma VM de laboratório invoca o comando getRdpFileContents REST:
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 invoca
getRdpFileContentspara solicitarhttps://{gateway-hostname}/api/host/{lab-machine-name}/port/{port-number}um token de autenticação.-
{gateway-hostname}, ou{lb-uri}para um balanceador de carga, é o nome do host do gateway especificado na página Configurações do laboratório para o 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 de laboratório usa um endereço IP compartilhado, o número da porta é 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.Nota
O cabeçalho da solicitação inclui automaticamente a tecla de função, que ele obtém 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 Configurações do laboratório.
A função do Azure gera e retorna um token para autenticação baseada em certificado na máquina de gateway.
A
getRdpFileContentsação 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 encaminha para a VM de laboratório.
Nota
Nem todos os programas de conexão RDP suportam autenticação de token.
Importante
A função do Azure define uma data de expiração para o token de autenticação. Um usuário deve 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 e autenticação de token do DevTest Labs:
Requisitos da máquina de gateway
A máquina de gateway deve ter a seguinte configuração:
Um certificado TLS/SSL para lidar com o tráfego HTTPS. O certificado deve corresponder ao FQDN (nome de domínio totalmente qualificado) da máquina de gateway se houver apenas uma máquina ou ao balanceador de carga de um farm de gateway. Os certificados TLS/SSL comodim não funcionam.
Um certificado de assinatura. Você pode criar um certificado de assinatura usando o script PowerShell Create-SigningCertificate.ps1 .
Um módulo de autenticação conectável que suporta autenticação de token. Um exemplo é o RDGatewayFedAuth.msi, que vem com imagens do System Center Virtual Machine Manager (VMM).
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 Aplicações para os Serviços de Informação da Internet (IIS) para redirecionar https://{gateway-hostname}/api/host/{lab-machine-name}/port/{port-number} solicitações para a aplicação de funções.
Requisitos do Azure Functions
Um aplicativo de função do Azure Functions lida com solicitações com o https://{function-app-uri}/app/host/{lab-machine-name}/port/{port-number} formato e cria e retorna o token de autenticação com base no certificado de assinatura da máquina gateway. O {function-app-uri} é o URI usado para acessar a função.
O cabeçalho da solicitação deve passar a tecla de função, que ele obtém do cofre de chaves do laboratório.
Para uma função de exemplo, consulte CreateToken.cs.
Requisitos de rede
O DNS do FQDN associado ao certificado TLS/SSL da máquina gateway deve direcionar o tráfego para a máquina gateway ou para o balanceador de carga de um farm de máquinas gateway.
Se a VM de laboratório usar um endereço IP privado, deve haver um caminho de rede da máquina de gateway para a máquina de laboratório. As duas máquinas devem compartilhar a mesma rede virtual ou usar redes virtuais emparelhadas.
Criar um gateway de área de trabalho remota
O repositório GitHub do Azure DevTest Labs tem modelos do Azure Resource Manager (ARM) que ajudam a configurar a autenticação de token do DevTest Labs e os recursos do gateway de área de trabalho remota. Há modelos para criação de máquinas de gateway, configurações de laboratório e um aplicativo de função.
Nota
O uso dos modelos de exemplo indica seu acordo com os termos de licença do Gateway de Área de Trabalho Remota.
Siga estas etapas para configurar um farm de gateway de área de trabalho remota de exemplo.
Crie um certificado de assinatura.
Execute Create-SigningCertificate.ps1. Registre a impressão digital, a senha e a codificação Base64 do novo certificado para usar mais tarde.
Obtenha 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 usar mais tarde.
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 do 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 de https://github.com/Azure/azure-devtestlab/tree/master/samples/DevTestLabs/GatewaySample/arm/gatewaye preencha os seguintes parâmetros:
Parâmetro Necessário? Description adminUsernameNecessário Nome de usuário do administrador para as máquinas de gateway. adminPasswordNecessário Senha para a conta de administrador para as máquinas de gateway. instanceCountNúmero de máquinas de gateway a criar. alwaysOnSe o aplicativo Azure Functions criado deve ser mantido ativado. Manter o aplicativo ligado evita atrasos quando os usuários tentam se conectar pela primeira vez às 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. sslCertificateNecessário A codificação Base64 do certificado TLS/SSL para a máquina gateway. sslCertificatePasswordNecessário A senha do certificado TLS/SSL para a máquina gateway. sslCertificateThumbprintNecessário A impressão digital do certificado para identificação no armazenamento de certificados local do certificado de assinatura. signCertificateNecessário A codificação Base64 para o certificado de assinatura para a máquina de gateway. signCertificatePasswordNecessário A senha para o certificado de assinatura para a máquina gateway. signCertificateThumbprintNecessário A impressão digital do certificado para identificação no armazenamento de certificados local do certificado de assinatura. _artifactsLocationNecessário O local do URI para localizar artefatos que esse modelo exige. Esse valor deve 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 deve ser nomeado RDGatewayFedAuth.msi, que oferece suporte à autenticação de token. _artifactsLocationSasTokenNecessário O token de assinatura de acesso compartilhado (SAS) para acessar artefatos, se for uma conta de armazenamento do _artifactsLocationAzure.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 ficheiros carregados. -
{container-name}é o contêiner no{storage-account-name}que contém os arquivos que você carregou. -
{utc-expiration-date}é a data, em UTC, em que o token SAS expira e não pode mais ser usado para acessar a conta de armazenamento.
-
Registre os valores para
gatewayFQDNegatewayIPa partir da saída de implantação do 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 de função.Configure o DNS para que o FQDN do certificado TLS/SSL direcione para o
gatewayIPendereço IP.
Depois de criar o farm de gateway de ambiente de trabalho remoto e atualizar o DNS, configure o DevTest Labs para utilizar 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 Teclas 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 da 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 guardar um segredo num cofre de chaves, consulte Adicionar um segredo ao Cofre de Chaves. Registre o nome secreto para usar mais tarde. Esse valor não é a chave de função em si, mas o nome do segredo do cofre de chaves que contém a chave de função.
Para configurar o nome de host do Gateway e o segredo do token do Gateway de um laboratório para usar a autenticação de token com a máquina ou máquinas 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 de laboratório.
Na secção Ligação ao ambiente de trabalho remoto :
Na caixa Nome do Host do Gateway, introduza o FQDN ou o endereço IP da máquina ou farm do gateway de Serviços de Ambiente de Trabalho Remoto. Esse valor deve corresponder ao FQDN do certificado TLS/SSL usado em máquinas gateway.
Na caixa Segredo do token do gateway , digite o nome secreto que você registrou anteriormente. Esse valor não é a chave de função em si, mas o nome do segredo do cofre de chaves que contém a chave de função.
Selecione Guardar.
Nota
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 Conectar inclui as informações necessárias para se conectar ao gateway e usar a autenticação de token.
Automatize a configuração do laboratório
PowerShell: Set-DevTestLabGateway.ps1 é um script PowerShell de exemplo para configurar automaticamente as configurações secretas do nome do host do Gateway e do token do Gateway .
ARM: Use os modelos ARM de exemplo de Gateway no repositório GitHub do Azure DevTest Labs para criar ou atualizar laboratórios com o nome do host do Gateway e as configurações secretas do token do 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 usada pelas VMs do laboratório, 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 primeiro pelo gateway alcance VMs de laboratório. A origem da regra é o endereço IP da máquina de gateway ou do balanceador de carga do farm de gateways.