Partager via


Configurer et utiliser une passerelle des services Bureau à distance dans Azure DevTest Labs

Cet article explique comment configurer et utiliser une passerelle pour un accès Bureau à distance sécurisé aux machines virtuelles de lab dans Azure DevTest Labs. L’utilisation d’une passerelle améliore la sécurité, car vous n’exposez pas les ports RDP (Remote Desktop Protocol) des machines virtuelles à Internet. Cette solution de passerelle des services Bureau à distance prend également en charge l’authentification par jeton.

DevTest Labs fournit un emplacement central où les utilisateurs du lab peuvent afficher et se connecter à leurs machines virtuelles. La sélection de Connecter>via RDP sur la page Vue générale d’une machine virtuelle de laboratoire crée un fichier RDP spécifique à la machine, et les utilisateurs peuvent ouvrir le fichier pour se connecter à la machine virtuelle.

Avec une passerelle des services Bureau à distance, les utilisateurs du lab se connectent à leurs machines virtuelles par le biais d’une machine de passerelle. Les utilisateurs s’authentifient directement sur l’ordinateur de passerelle et peuvent utiliser des informations d’identification fournies par l’entreprise sur des machines jointes à un domaine. L’authentification par jeton fournit une couche supplémentaire de sécurité.

Une autre façon d’accéder de manière sécurisée aux machines virtuelles de lab sans exposer les ports ou les adresses IP consiste à utiliser un navigateur avec Azure Bastion. Pour plus d’informations, consultez Activer la connexion du navigateur aux machines virtuelles DevTest Labs avec Azure Bastion.

Architecture

Le diagramme suivant montre comment une passerelle des services Bureau à distance applique l’authentification par jeton et se connecte aux machines virtuelles DevTest Labs.

Diagramme illustrant l’architecture de la passerelle de bureau à distance.

  1. La sélection de l’option Connecter>Connecter via RDP à partir d’une machine virtuelle de labo appelle la commande REST getRdpFileContents :

    POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/virtualmachines/{name}/getRdpFileContents
    
  2. Lorsque le labo est configuré avec une passerelle, l’action getRdpFileContents appelle https://{gateway-hostname}/api/host/{lab-machine-name}/port/{port-number} pour demander un jeton d’authentification.

    • {gateway-hostname}, ou {lb-uri} pour un équilibreur de charge, est le nom d’hôte de la passerelle spécifié dans la page Paramètres lab du lab.
    • {lab-machine-name} est le nom de la machine virtuelle à laquelle se connecter.
    • {port-number} est le port à utiliser pour la connexion. En règle générale, ce port est 3389, mais si la machine virtuelle lab utilise une adresse IP partagée, le numéro de port est différent.
  3. La passerelle des services Bureau à distance utilise https://{function-app-uri}/api/host/{lab-machine-name}/port/{port-number} pour différer l’appel à une application de fonction Azure Functions.

    Remarque

    L’en-tête de la requête comprend automatiquement la clé de fonction, obtenue à partir du coffre de clés du lab. Le nom du secret de clé de fonction est le Secret de jeton de passerelle spécifié dans la page des Paramètres du labo.

  4. La fonction Azure génère et retourne un jeton pour l’authentification basée sur les certificats sur la machine de passerelle.

  5. L’action getRdpFileContents retourne le fichier RDP complet, notamment le jeton d’authentification.

Lorsqu’un programme de connexion RDP ouvre le fichier RDP, la passerelle des services Bureau à distance authentifie le jeton, et la connexion est transférée à la machine virtuelle de lab.

Remarque

Tous les programmes de connexion RDP ne prennent pas en charge l’authentification par jeton.

Important

La fonction Azure définit une date d’expiration pour le jeton d’authentification. Un utilisateur doit se connecter à la machine virtuelle avant l’expiration du jeton.

Exigences de configuration

Il existe certaines conditions de configuration requises pour permettre aux machines de passerelle, Azure Functions et aux réseaux d’utiliser l’accès RDP DevTest Labs et l’authentification par jeton :

Configuration requise pour la machine de passerelle

La configuration de la machine de passerelle doit être la suivante :

  • Un certificat TLS/SSL pour gérer le trafic HTTPS. Le certificat doit correspondre au nom de domaine complet (FQDN) de la machine de passerelle s’il n’existe qu’une seule machine, ou de l’équilibreur de charge d’une batterie de serveurs de passerelle. Les certificats TLS/SSL génériques ne fonctionnent pas.

  • Un certificat de signature. Vous pouvez créer un certificat de signature à l’aide du script PowerShell Create-SigningCertificate.ps1.

  • Un module d’authentification enfichable qui prend en charge l’authentification par jeton. RDGatewayFedAuth.msi, qui est fourni avec des images System Center Virtual Machine Manager (VMM), est un exemple de ce type de module.

  • Capacité à gérer les requêtes à destination de https://{gateway-hostname}/api/host/{lab-machine-name}/port/{port-number}.

Vous pouvez utiliser le module Demande de routage des applications pour Internet Information Services (IIS) pour rediriger les https://{gateway-hostname}/api/host/{lab-machine-name}/port/{port-number} demandes vers l’application de fonction.

Configuration requise pour Azure Functions

Une application de fonction Azure Functions gère les requêtes au format https://{function-app-uri}/app/host/{lab-machine-name}/port/{port-number}, et crée et retourne le jeton d’authentification basé sur le certificat de signature de la machine de passerelle. {function-app-uri} est l’URI utilisé pour accéder à la fonction.

L’en-tête de requête doit passer la clé de fonction, qu’il obtient à partir du coffre de clés du lab.

Pour obtenir un exemple de fonction, consultez CreateToken.cs.

Configuration requise pour le réseau

  • Le système DNS pour le nom de domaine complet (FQDN) associé au certificat TLS/SSL de la machine de passerelle doit diriger le trafic vers la machine de passerelle ou vers l’équilibreur de charge d’une batterie de serveurs de machines de passerelle.

  • Si la machine virtuelle de lab utilise une adresse IP privée, il doit y avoir un chemin réseau de la machine de passerelle à la machine de lab. Les deux machines doivent partager le même réseau virtuel ou utiliser des réseaux virtuels appairés.

Créer une passerelle des services Bureau à distance

Le dépôt GitHub Azure DevTest Labs contient des modèles ARM (Azure Resource Manager) qui aident à configurer l’authentification par jeton DevTest Labs et les ressources de passerelle des services Bureau à distance. Il existe des modèles pour la création de machine de passerelle, des paramètres de lab et d’une application de fonction.

Remarque

L’utilisation des modèles indique que vous acceptez les Termes du contrat de licence de la Passerelle des services Bureau à distance.

Suivez ces étapes afin de configurer un exemple de batterie de serveurs de passerelle des services Bureau à distance.

  1. Créez un certificat de signature.

    Exécutez Create-SigningCertificate.ps1. Enregistrez l’empreinte numérique, le mot de passe et l’encodage Base64 du nouveau certificat à utiliser ultérieurement.

  2. Obtenez un certificat TLS/SSL. Le nom de domaine complet associé au certificat TLS/SSL doit être pour un domaine que vous contrôlez.

  3. Prenez note du mot de passe, de l’empreinte et de l’encodage en Base64 du certificat TLS/SSL ; vous en aurez besoin ultérieurement.

    • Pour obtenir l’empreinte, utilisez les commandes PowerShell suivantes :

      $cer = New-Object System.Security.Cryptography.X509Certificates.X509Certificate;
      $cer.Import('path-to-certificate');
      $hash = $cer.GetCertHashString()
      
    • Pour obtenir l’encodage en Base64, utilisez la commande PowerShell suivante :

      [System.Convert]::ToBase64String([System.IO.File]::ReadAllBytes('path-to-certificate'))
      
  4. Téléchargez tous les fichiers à partir de https://github.com/Azure/azure-devtestlab/tree/master/samples/DevTestLabs/GatewaySample/arm/gateway. Copiez tous les fichiers à partir de RDGatewayFedAuth.msi vers un conteneur d’objets blob dans un compte de stockage.

  5. Ouvrez azuredeploy.json à partir de https://github.com/Azure/azure-devtestlab/tree/master/samples/DevTestLabs/GatewaySample/arm/gateway, puis renseignez les paramètres suivants :

    Paramètre Obligatoire ? Description
    adminUsername Obligatoire Nom d’utilisateur de l’administrateur des machines de passerelle.
    adminPassword Obligatoire Mot de passe du compte administrateur pour les machines de passerelle.
    instanceCount  : nombre de machines de passerelle à créer.
    alwaysOn Indique s’il faut conserver l’application Azure Functions créée. Le maintien de l'application évite les retards dès que les utilisateurs essaient de se connecter à leurs machines virtuelles de laboratoire, mais cela a des implications sur les coûts.
    tokenLifetime Durée de validité du jeton créé, au format HH:MM:SS.
    sslCertificate Obligatoire Encodage en Base64 du certificat TLS/SSL pour la machine de passerelle.
    sslCertificatePassword Obligatoire Mot de passe du certificat TLS/SSL pour la machine de passerelle.
    sslCertificateThumbprint Obligatoire Empreinte du certificat pour l’identification dans le magasin de certificats local du certificat de signature.
    signCertificate Obligatoire Encodage en Base64 du certificat de signature pour la machine de passerelle.
    signCertificatePassword Obligatoire Mot de passe du certificat de signature pour la machine de passerelle.
    signCertificateThumbprint Obligatoire Empreinte du certificat pour l’identification dans le magasin de certificats local du certificat de signature.
    _artifactsLocation Obligatoire Emplacement URI où rechercher les artefacts requis par ce modèle. Cette valeur doit être un URI complet, et non un chemin relatif. Les artefacts incluent les autres modèles, les scripts PowerShell et le module d’authentification enfichable de passerelle Bureau à distance, censé être nommé RDGatewayFedAuth.msi, qui prend en charge l’authentification par jeton.
    _artifactsLocationSasToken Obligatoire Jeton de signature d’accès partagé (SAS) pour accéder aux artefacts, si _artifactsLocation est un compte Stockage Azure.
  6. Exécutez la commande Azure CLI suivante pour déployer 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}"
    
    • Obtenez {storage-account-endpoint} en exécutant az storage account show --name {storage-account-name} --query primaryEndpoints.blob.

    • Obtenez {sas-token} en exécutant az storage container generate-sas --name {container-name} --account-name {storage-account-name} --https-only –permissions drlw –expiry {utc-expiration-date}.

      • {storage-account-name} est le nom du compte de stockage contenant les fichiers que vous avez chargés.
      • {container-name} est le conteneur dans {storage-account-name} qui contient les fichiers que vous avez chargés.
      • {utc-expiration-date} est la date, en UTC, à laquelle le jeton SAS expire et ne peut plus être utilisé pour accéder au compte de stockage.
  7. Prenez note des valeurs gatewayFQDN et gatewayIP mentionnées dans la sortie de déploiement de modèle. Enregistrez également la valeur de la clé pour la fonction nouvellement créée, que vous trouverez sous l’onglet Paramètres de l’application de fonction.

  8. Configurez DNS pour que le nom de domaine complet du certificat TLS/SSL soit dirigé vers l’adresse IP gatewayIP.

Après avoir créé la batterie de serveurs de passerelle bureau à distance et mis à jour DNS, configurez DevTest Labs pour qu’il utilise la passerelle.

Configurer le labo pour utiliser une authentification du jeton

Avant de mettre à jour les paramètres du lab, stockez la clé de la fonction de jeton d’authentification dans le coffre de clés du lab. Vous pouvez obtenir la valeur de clé de fonction dans la page Clés de fonction de la fonction dans le portail Azure. Pour rechercher l’ID du coffre de clés du labo, exécutez la commande Azure CLI suivante :

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

Pour savoir comment enregistrer un secret dans un coffre de clés, consultez Ajouter un secret à Key Vault. Prenez note du nom du secret ; vous l’utiliserez ultérieurement. Cette valeur n’est pas la clé de fonction proprement dite, mais le nom du secret dans le coffre de clés qui contient la clé de fonction.

Pour configurer le nom d’hôte de passerelle d’un labo et le secret de jeton de passerelle pour utiliser l’authentification par jeton avec l’ordinateur ou les machines de passerelle, procédez comme suit :

  1. Dans la page Vue d’ensemble du labo, dans le volet gauche, sélectionnez Configuration et stratégies.

  2. Dans la page Configuration et stratégies , dans la section Paramètres du volet gauche, sélectionnez Paramètres du laboratoire.

  3. Dans la section Connexion Bureau à distance :

    • Dans la zone Nom d’hôte de la passerelle, saisissez le nom de domaine complet (FQDN) ou l’adresse IP de la machine ou de la batterie de la passerelle des services Bureau à distance. Cette valeur doit correspondre au nom de domaine complet (FQDN) du certificat TLS/SSL utilisé sur les machines de passerelle.

    • Dans le champ Secret de jeton de passerelle, entrez le nom du secret que vous avez enregistré précédemment. Cette valeur n’est pas la clé de fonction proprement dite, mais le nom du secret dans le coffre de clés qui contient la clé de fonction.

    Capture d’écran des options bureau à distance dans les paramètres du laboratoire.

  4. Sélectionnez Enregistrer.

    Remarque

    La sélection de l’option Enregistrer indique que vous acceptez les Termes du contrat de licence de la Passerelle des services Bureau à distance.

Après avoir configuré la passerelle et le labo, le fichier de connexion RDP créé lorsque l’utilisateur du labo sélectionne Connect inclut les informations nécessaires pour se connecter à la passerelle et utiliser l’authentification par jeton.

Automatiser la configuration du lab

  • PowerShell : Set-DevTestLabGateway.ps1 est un exemple de script PowerShell pour configurer automatiquement les paramètres de secret du nom d’hôte et du jeton de passerelle .

  • ARM : utilisez les exemples de modèles ARM de passerelle dans le référentiel Azure DevTest Labs GitHub pour créer ou mettre à jour des labs avec les paramètres Nom d’hôte de passerelle et Secret du jeton de passerelle.

Configurer un groupe de sécurité réseau

Pour sécuriser davantage le labo, ajoutez un groupe de sécurité réseau (NSG) au réseau virtuel que les machines virtuelles du labo utilisent, comme décrit dans Créer, modifier ou supprimer un groupe de sécurité réseau. Par exemple, un groupe de sécurité réseau peut autoriser uniquement le trafic qui passe d’abord par la passerelle pour atteindre des machines virtuelles de lab. La source de la règle est l’adresse IP de la machine de passerelle ou de l’équilibreur de charge de la batterie de serveurs de passerelle.

Capture d’écran d’une règle de groupe de sécurité réseau.

Étape suivante