Aujourd’hui, nous allons parler d’Azure Virtual Desktop, d’encryption et de sécurité.
Et, le plus important, nous verrons comment automatiser tout cela pour gagner du temps tout en respectant les bonnes pratiques de Microsoft.
Voici le schéma d’architecture que nous allons mettre en place. L’idée est simple : créer un groupe de ressources qui contiendra le calcul (compute) ainsi que l’encryption des disques (nous utiliserons le CMK). Un Key Vault stockera les secrets, avec une rotation mise en place tous les 30 jours pour garantir une meilleure sécurité. Un autre groupe de ressources sera dédié à la configuration d’Azure Virtual Desktop.
Qu’est-ce que le CMK – Customer Managed Key ?
Les clés gérées par le client (CMK) sont des clés que les clients peuvent lire, créer, supprimer, mettre à jour ou gérer eux-mêmes. Ces clés sont stockées dans un coffre de clés (Key Vault) ou un module de sécurité matériel (HSM) appartenant au client. Bring Your Own Key (BYOK) est un scénario dans lequel un client importe ses propres clés d’un emplacement de stockage externe dans un service de gestion de clés Azure.
Plus d’information ici : https://learn.microsoft.com/en-us/azure/security/fundamentals/key-management
Script Terraform
Maintenant que vous en savez un peu plus, passons au script Terraform (TF), que nous allons analyser pas à pas.
Dans un premier temps, nous allons créer un groupe de ressources et un VNet avec un espace d’adressage de 10.0.0.0/16 :
Ainsi qu’un sous-réseau (Subnet) :
Nous allons également créer un NSG (Network Security Group) qui autorise le port 443 (HTTPS) à se connecter à la VM AVD, et l’associer au sous-réseau précédemment créé :
Une fois cette étape terminée, nous allons créer notre Azure Virtual Desktop. D’abord, nous allons créer l’espace de travail (Workspace) :
Ensuite, nous créons le Host Pool :
Astuce : J’ai rencontré une erreur de connexion entre mon bureau RDWeb et AVD. La solution consiste à ajouter dans les custom_rdp_properties la ligne suivante : ;targetisaadjoined:i:1;.
Une fois le host pool créé, nous ajoutons une ligne pour l’enregistrement des machines virtuelles que nous allons créer :
L’expiration_date est une valeur à renseigner pour autoriser l’enregistrement des machines dans le host pool AVD. Vous la trouverez dans la variable appropriée.
Ensuite, nous allons créer le DAG (Desktop Application Group), qui est l’endroit où les applications peuvent être insérées pour être disponibles dans AVD :
Bien entendu, nous allons associer notre Workspace au DAG :
Voilà, la partie Azure Virtual Desktop est terminée. Nous allons maintenant créer les machines virtuelles ainsi que les interfaces réseau :
Une fois nos interfaces réseau créées, nous allons créer un Key Vault avec un nom aléatoire et les permissions adéquates pour pouvoir créer une ou plusieurs clés et secrets. Nous activerons également la suppression différée (soft delete) pour 7 jours et enfin, l’encryption, afin que le Key Vault puisse stocker la clé de cryptage des disques et les secrets des comptes administrateurs locaux :
Ensuite, nous allons créer une clé aléatoire avec une rotation tous les 30 jours environ :
Enfin, nous créons le disk encryption set :
Nous allons attribuer l’identité du disk encryption set au Key Vault pour qu’il puisse lire et écrire les valeurs.
Une fois cela terminé, nous créons nos machines virtuelles :
Pour finir, nous lions notre AVD à Azure Active Directory et non à un domaine spécifique/existant. Nous associons également nos VMs au host pool AVD.
Pour ajouter un peu de complexité à notre script, nous créons deux groupes qui auront les droits d’accès aux VM AVD. Ces groupes seront ajoutés aux rôles RBAC « Virtual Machine Administrator Login » et « Virtual Machine User Login » :
Une fois le script terminé, on l’exécute :
Lancez terraform init
Enfin, exécutez terraform apply -auto-approve ou terraform apply pour appliquer les changements :
Si nous contrôlons côté Azure, le groupe de ressources a bien été créé ainsi que toute l’infrastructure.
Nos groupes ont bien été créés et assignés au RBAC. (Pensez bien à ajouter les comptes qui doivent accéder à AVD dans ces groupes.)
Notre Key Vault contient bien la clé d’encryption du disque ainsi que les secrets des comptes administrateurs locaux.
Le host pool a bien été créé, et les machines virtuelles ont été ajoutées.
Maintenant, nous allons lancer un client RDWeb ou bien le client lourd :
Connect to Azure Virtual Desktop with the Remote Desktop Web client – Azure | Microsoft Learn
On le lance et on s’authentifie avec AAD (ou Entra ID)
Bienvenue sur vos machines Azure Virtual Desktop !
Comme promis, vous trouverez l’ensemble de mon script sur mon Github. N’hésitez pas à apporter des modifications. De mon côté, je vais essayer de le tenir à jour autant que possible
Lien : technicalandcloud/Secure-AzureVirtualDesktop-deployment-with-Terraform (github.com).
Nicolas VACCARO
Ingénieur cloud