Après ces quelques chaudes semaines d’été, il est pour nous l’occasion de nous replonger dans Azure Virtual Desktop et ses dernières nouveautés. Comme vous le savez peut-être, AVD repose sur une authentification d’Azure AD, potentiellement combinée avec un Active Directory classique. Cette méthode apporte une couche de sécurité dans l’accès au service grâce aux mesures de protections disponibles sur Azure AD.
Dans cet article, nous allons nous intéresser au Single Sign-on, ou Authentification Unique, dans Azure Virtual Desktop à travers une première méthode de gestion des identités Cloud : Azure AD. Enfin, nous finirons ce billet par un rapide troubleshooting concernant cette évolution, encore en préversion à l’heure où les lignes de cet article sont écrites.
L’authentification unique, souvent désignée par le sigle anglais SSO est une méthode permettant à un utilisateur d’accéder à plusieurs applications informatiques (ou sites web sécurisés) en ne procédant qu’à une seule authentification.
Afin de bien comprendre l’évolution du SSO dans Azure Virtual Desktop, l’authentification utilisateur s’effectue en deux étapes. Voici un rappel du processus depuis le client Windows Remote Desktop utilisé pour AVD, disponible ici :
Première authentification Azure AD (ou serveur AD FS si besoin) :
Seconde authentification pour l’ouverture de la session Windows :
La mémorisation du mot de passe de session Windows est bien disponible via la case à cocher ci-dessous, mais elle pose un souci de sécurité. Il ne s’agit pas ici de SSO mais d’un classique stockage de mot de passe en local. En effet, le mot de passe sera alors sauvegardé sur le Credential Manager de Windows :
Sur un ordinateur partagé, cela rendrait simplement l’accès à Azure Virtual Desktop ouvert à tous !
Microsoft travaille depuis déjà pas mal de temps sur du SSO pour Azure Virtual Desktop. L’excellente vidéo ci-dessous faite il y a quelques mois par Dean Cefola de l’Azure Academy nous montre son processus de mise en place, mais uniquement si l’infrastructure dispose d’un Active Directory avec un serveur AD FS :
Comment faire du SSO sans serveur AD FS ?
C’est dans ce cas précis que la nouveauté de Microsoft intervient ! Une nouvelle option RDP vient de se faire son apparition sur Azure Virtual Desktop. Cette option apporte le SSO de manière 100% native. Petit rappel toujours utile, voici la liste des propriétés RDP acceptées par AVD.
Comme pour presque tous les articles de ce blog, nous allons détailler le processus de mise en place de cette nouvelle fonctionnalité d’AVD :
Etape 0 : Rappel des prérequis
Cette fonctionnalité d’AVD est encore en préversion. Nous allons donc partir d’un environnement Azure vierge et y installer un environnement AVD joint à Azure AD. Voici la courte liste des composants déjà présents sur mon environnement de test :
Tenant Azure
Souscription Azure valide
Etape I : Création du réseau virtuel
Dans un environnement vide, il faut donc commencer par la création d’un réseau virtuel :
Dans mon exemple de test, je ne modifie pas l’adressage réseau :
Attendez que la création se termine pour continuer :
Etape II : Déploiement d’Azure Virtual Desktop
Comme pour un déploiement classique d’Azure Virtual Desktop, notre travail commence par déployer un pool d’hôtes. Vous trouverez ce dernier dans la barre de recherche d’Azure :
Taper « virtual desktop » dans la barre de recherche pour voir le service AVD apparaître.
La procédure de départ reste identique au processus habituel pour AVD. Cependant, il est important de cocher la Validation environnement à OUI :
Il n’est toujours pas possible de stocker les métadatas d’AVD sur un centre de données en Suisse.
Le choix de l’image Windows utilisée pour Azure Virtual Desktop a son importance ! Actuellement, la fonctionnalité de préversion du SSO repose sur une modification de l’OS Windows, et n’est pour l’instant déployée que sur la version 22H2 de Windows 11 :
La suite des options concernant les machines virtuelles AVD ne changent pas :
Type de domaine à joindre : Choisissez Azure Active Directory
Intune : il est également possible d’automatiser l’enrôlement des machines virtuelles AVD dans Intune. Cela permet de configurer ces dernières, que ce soient des machines virtuelles dédiées ou partagées entre utilisateurs.
La création de l’espace de travail ne change pas :
Lancez la création et attendez plusieurs minutes :
Une fois le déploiement terminé, constatez la présence des ressources suivantes dans le groupe de ressources :
Etape III : Affectation des utilisateursAVD
Comme pour tout environnement Azure Virtual Desktop, il est nécessaire d’affecter des utilisateurs ou groupes pour que ces derniers soient autorisés à se connecter aux machines virtuelles. Cela se passe par le groupe d’application AVD :
Il est aussi possible de passer par l’attribution d’un rôle RBAC pour cette même opération :
Etape IV : Ajout des rôles RBAC
Afin d’autoriser les utilisateurs à se connecter aux machines virtuelles AVD jointes à Azure AD, l’attribution d’un rôle RBAC spécifique est nécessaire. Affectez les deux rôles RBAC suivants sur le groupe de ressources :
Virtual Machine Administrator Login : Groupe d’utilisateurs ayant les droits d’administrateur local sur les machines virtuelles AVD
Virtual Machine User Login : Affecter le rôle Virtual Machine User Login au même groupe d’utilisateurs que celui utilisé pour le groupe d’application AVD
Etape V : Implémentation de la fonctionnalité SSO
Retournez sur votre pool d’hôtes afin de profiter très facilement de cette nouvelle fonctionnalité :
La sauvegarde de cette option impacte les arguments RDP affichés dans l’onglet Avancé :
Pensez bien à sauvegarder ????.
Un clic sur la session RDP vous affiche toujours la demande d’authentification de la session Windows :
Lancez un rafraîchissement pour mettre à jour les options RDP :
Retentez l’opération de connexion RDP pour voir cette nouvelle fenêtre apparaître :
Confirmez votre identité :
Acceptez la demande d’autorisation pour autoriser les connexion RDP :
Il semble que cette demande soit valable pour une machine du pool uniquement.
La session Windows 11 devrait alors s’ouvrir :
Retentez l’opération une seconde fois pour vérifier le bon fonctionnement du SSO ????
Conclusion
On peut dire que Microsoft a fait le maximum pour simplifier les choses concernant le déploiement de cette nouvelle fonctionnalité AVD ! D’autres articles suivront pour tester les autres cas de gestions des identités via Active Directory.
Encore merci à Dean pour cette annonce et sa vidéo sur le sujet.
Troubleshoot
Depuis l’apparition de cette nouvelle fonctionnalité, je me suis retrouvé embêté dans le déploiement d’environnements AVD joint à Azure AD et sous Windows 10/11 sans utiliser cette nouvelle option.
En effet, mes utilisateurs de test n’étaient plus en mesure de passer l’authentification de la session Windows :
La faute revient à l’impossibilité de remettre l’ancien argument RDP suivant dans ma configuration RDP, comme indiqué dans mon premier article sur le sujet.
targetisaadjoined:i:1
Voici le message d’erreur en question sur mon AVD depuis le portail Azure :
????
La solution
Pour contourner ce blocage, il est nécessaire de passer cet argument RDP targetisaadjoined:i:1 via une commande PowerShell :
J’avais déjà écrit un article sur comment sauvegarder de machine virtuelle via Runbook/Snapshot. Cette option est intéressante dans le cas où la sauvegarde native d’Azure ne supporte pas l’OS de la machine virtuelle. Microsoft continue d’apporter des mesures de sécurité sur son service sauvegarde Azure Backup.
Dans cet article, nous allons parler et tester l’autorisation multi-utilisateur (MUA), annoncée il y a seulement quelques jours en disponibilité générale. Dans quel but ? Accroître la protection des sauvegardes de vos ressources Azure.
Mais avant cela, nous allons faire un rappel de quelques mesures de protection de sauvegardes de machines virtuelles disponibles sur Azure.
Par défaut, quelles mesures de protection existent sur mes sauvegardes de VMs ?
Quand vous sauvegardez des machines virtuelles au travers de la sauvegarde native d’Azure, vous utilisez et déployez un coffre de sauvegarde. Ce dernier est directement géré par le service Azure Backup :
Ce schéma nous montre la création de snapshots et le transfert différé vers le coffre de sauvegarde.
La création de snapshots et la rétention de vos sauvegardes sont alors configurées selon une police de sauvegarde, créée dans ce coffre de sauvegarde :
D’autre part, le nombre et la répartition des copies de vos sauvegardes vont dépendre des propriétés de ce coffre :
La création d’un Recovery Service Vault est paramétré en Geo-redondant par défaut. Cette option reste modifiable tant qu’aucune sauvegarde n’est paramétrée.
Pour rappel, voici quelques notions de réplication à connaitre, tant elles sont très utilisées sur un grand nombre de ressources Azure :
Redondance locale (LRS) : La donnée est présente en triple exemplaires dans le même datacenter (Zone) de la région Azure.
Redondance zonale (ZRS) : La donnée est présente en triple exemplaires, chacun réparti dans les 3 datacenters (Zones) de la même région Azure, si celle-ci le propose.
Géo-redondance (GRS) : La donnée est présente en triple exemplaires dans le même datacenter (Zone) de la région Azure, et 3 autres exemplaires dans la région paire Azure de la première.
Note : il existe également d’autres scénarios de réplication Azure : RA-GRS, GZRS, … ????
Enfin, la suppression d’une sauvegarde stockée dans un coffre conserve encore celle-ci pendant 14 jours. Cette fonctionnalité est activée par défaut et est appelée Soft-delete:
Pour information, la donnée maintenue dans cet état de soft-delete ne coûte rien.
Un coffre de sauvegarde contenant encore des sauvegardes en état de soft-delete ne peut être supprimé.
Envi d’en savoir plus sur la sauvegarde de machine virtuelle ?
Voici l’excellente vidéo de Travis Roberts expliquant le service Azure Backup et les étapes de sa mise en place sur différentes ressources Azure :
Pourquoi mettre en place l’autorisation multi-utilisateur sur les sauvegardes Azure ?
L’autorisation multi-utilisateur (MUA) pour la sauvegarde Azure vous permet d’ajouter une couche supplémentaire de protection aux opérations critiques sur vos coffres Recovery Services. Pour MUA, Sauvegarde Azure utilise une autre ressource Azure appelée protection des ressources pour garantir que les opérations critiques sont effectuées uniquement avec l’autorisation applicable.
En y réfléchissant, un scénario apparait effectivement comme non protégé : comment sécuriser les sauvegardes contre un compte administrateur compromis ou contre une suppression accidentelle ?
En effet, un compte utilisateur Azure AD, configuré comme propriétaire ou contributeur de ressources Azure, dispose des droits pour la mise en en place de sauvegardes, mais également de ceux pour les démettre ! Les mesures listées précédemment renforcent la sécurité mais sont toutes réversibles par cet utilisateur.
Est-ce ici qu’entre en scène Azure Resource Guard ?
L’idée générale d’Azure Resource Guard est de faire reposer la répartition des tâches (donc des droits Azure) sur différents utilisateurs. Il s’agit d’un dispositif (SOD) mis en place dans tout processus de contrôle interne : acteur et contrôleur.
Comme le montre le schéma ci-dessous, deux roles sont alors nécessaires pour sécuriser les actions liées aux sauvegardes avec MUA :
Administrateur sauvegarde : Propriétaire ou contributeur du coffre de sauvegarde. Ce dernier met en place et gère les sauvegardes de ressources Azure. L’administrateur sauvegarde ne doit pas avoir de droits élevés et permanent sur l’Azure Resource Guard.
Administrateur sécurité : Propriétaire du Azure Resource Guard et gardien des opérations critiques sur le coffre de sauvegarde. Par conséquent, l’administrateur sécurité contrôle les permissions dont l’Administrateur sauvegarde a besoin pour effectuer les opérations critiques.
Quelles sont les actions restreintes grâce à Azure Resource Guard ?
L’installation du contrôle d’Azure Resource Guard sur un coffre de sauvegarde bloquera certaines actions si les droits de l’Administrateur sauvegarde sont insuffisants :
Les opérations marquées comme obligatoires ne peuvent pas être exclues de la protection par Azure Resource Guard. Enfin, cette configuration s’appliquera à tous les coffres de sauvegarde associés à celui-ci.
Où doit se trouver Azure Resource Guard ?
Le service Azure Resource Guard doit obligatoirement être sur la même région Azure que le coffre de sauvegarde qu’il protège. De plus, l’Administrateur sauvegarde ne doit pas avoir de droits de contributeur permanent sur Azure Resource Guard. Dans le cas contraire, il n’est jamais bloqué pour aucune action critique sur le coffre de sauvegarde.
Il est alors possible d’envisager différents scénarios :
Le coffre de sauvegarde et Azure Resource Guard sont dans la même souscription. Mais l’Administrateur sauvegarde n’a pas accès à Azure Resource Guard.
Le coffre de sauvegarde et Azure Resource Guard sont dans des souscriptions différentes du même tenant. Mais l’Administrateur sauvegarde n’a pas accès à Azure Resource Guard ou à sa souscription.
Le coffre de sauvegarde et Azure Resource Guard sont dans des tenants différents. Mais l’Administrateur de sauvegarde n’a pas accès à Azure Resource Guard, à la souscription ou tenant correspondant.
Etape 0 : Rappel des prérequis
Comme pour beaucoup d’articles sur ce blog, nous allons créer différentes ressources sur Azure pour y parvenir. Comme à chaque fois, des prérequis sont nécessaires pour réaliser cette démonstration :
Un tenant Microsoft. Comme indiqué plus haut, il est possible de faire interagir un Azure Resource Guard avec un coffre de sauvegarde hébergés sur différents tenants.
Une ou plusieurs souscriptions Azure. Comme indiqué plus haut, il est possible de faire interagir un Azure Resource Guard avec un coffre de sauvegarde sur différentes souscriptions Azure.
Une machine virtuelle déjà déployée sur un tenant accessible à l’Administrateur de sauvegarde .
Dans mon cas, j’ai utilisé deux tenants différents, différenciés dans cet article par la couleur du portail Azure pour plus de simplicité :
Le tenant A, noir pour l’Administrateur de sauvegarde, contient la machine virtuelle à sauvegarder et le coffre de sauvegarde.
Le tenant B, blanc pour l’Administrateur sécurité, contient Azure Ressource Guard.
Nous avons donc les deux environnements Azure suivants :
Tenant A.
Etape I : Création d’Azure ResourceGuard
Sur le tenant B, commencez la création du service Azure Resource Guard :
Renseignez les différents champs, puis cliquez sur Suivant :
Si l’erreur suivante apparaît, retournez sur la page de la souscription Azure concernée :
Cliquez comme ceci pour constater le statut du resource provider Microsoft.DataProtection :
Cliquez alors sur celui-ci puis sur Enregistrer :
Attendez quelques minutes que le traitement se termine :
Contrôler le nouveau statut du resource provider :
Retournez dans la création de votre Azure Resource Guard pour constater la disparition du message d’erreur sur le second onglet.
Sélectionnez les opérations dont vous avez besoin de protéger et cliquez comme ceci pour les valider :
Vous pourrez toujours modifier cette liste après la création dans les propriétés d’Azure Resource Guard.
Lancez la création de votre Azure Resource Guard :
Etape I : Assignation du rôle de lecteur pour l’administrateur de sauvegarde
Afin de pouvoir interroger le service Azure Resource Guard, l’Administrateur sauvegarde doit disposer d’un rôle de lecteur sur ce dernier.
Sur le tenant B, retournez sur l’Azure Resource Guard et cliquez comme-ci pour rajouter le rôle de lecteur à l’administrateur sauvegarde :
Choisissez le rôle de lecteur puis cliquez sur Suivant :
Ajoutez votre Administrateur sauvegarde :
Cliquez pour valider :
Etape II : Création du coffre de sauvegarde
De retour sur le tenant A, recherchez le service Recovery Service Vault pour le créer :
Renseignez les champs et lancez la création du coffre de sauvegarde :
Etape III : Protégez votre coffre de sauvegarder
Retournez sur le tenant B, puis copiez la valeur suivante de votre Azure Resource Guard :
Sur le tenant A, retournez sur votre coffre de sauvegarde et cliquez ici pour mettre en place la MUA :
Effectuez les opérations suivantes et collez votre Resource Guard ID dans le champ suivant :
Contrôlez la cohérence des informations de votre Azure Resource Guard :
Sauvegardez la configuration MUA de votre coffre de sauvegarde :
Votre coffre de sauvegarde est maintenant protégé, continuez sur l’étape suivante pour vérifier le blocage des opérations pour l’Administrateur sauvegarde.
Etape IV : Contrôlez le blocage pour l’administrateur sauvegarde
Restez dans les propriétés de votre coffre de sauvegarde et cliquez sur les options de sécurité :
Vous êtes immédiatement averti de la couche de protection supplémentaire grâce au service Azure Resource Guard :
Essayez de désactiver la fonctionnalité Soft Delete et sauvegardez la nouvelle configuration :
L’action de sauvegarde échoue bien et affiche la notification d’erreur suivante :
La même opération, avec un autre compte, disposant lui de droits de contributeur sur Azure Resource Guard, dans mon exemple grâce à Azure Lighthouse, ne pose aucun souci :
Etape IV : Sauvegardez votre la machine virtuelle avec MUA
La mise en place de MUA ne bloque pas l’Administrateur sauvegarde de mettre en place de nouvelles protections pour des ressources Azure.
Pour cela, retournez sur la page principale de votre coffre de sauvegarde et cliquez comme-ceci :
Continuez la configuration avec la famille de ressources Machine virtuelle :
Ajoutez votre machine virtuelle à sauvegarder :
Cochez la case correspondante pour prendre la machine virtuelle désirée et cliquez sur OK
Activez la mise en place de la sauvegarde :
Une fois le traitement terminé, retournez sur le coffre de sauvegarde comme-ci :
Cliquez ici pour afficher les détails :
Lancez une sauvegarde immédiate :
La mise en place de la sauvegarde et la première sauvegarde n’ont pas provoqué d’erreur MUA pour l’Administrateur sauvegarde.
Contrôler l’avancement des travaux de la première sauvegarde et affichez les détails pour vérifier quand celui-ci est entièrement terminé :
Après quelques minutes et plusieurs rafraichissements, la sauvegarde est complète et correctement envoyée dans le coffre de sauvegarde.
Que peut-on encore mettre en place ?
Dans certains cas, vous devrez peut-être effectuer des opérations critiques sur vos sauvegardes et MUA peut vous aider à vous assurer qu’elles sont exécutées uniquement lorsque les approbations ou les autorisations appropriées existent. Comme nous l’avons vu précédemment, l’administrateur de sauvegarde doit avoir un rôle Collaborateur sur le service de protection des ressources pour effectuer des opérations critiques qui se trouvent dans l’étendue de la protection des ressources. L’une des façons d’autoriser l’exécution juste-à-temps pour ces opérations consiste à utiliser Azure Active Directory (Azure AD) Privileged Identity Management.
Les étapes suivantes de cet article sont facultatives, mais peuvent simplifier le processus d’élévations des droits grâce à la combinaison de plusieurs services Azure :
Azure Gestion des identités privilégiées (PIM)
Azure Resource Guard
La Gestion des identités privilégiées Azure AD, présente dans la licence Azure AD Premium P2, apporte de la souplesse dans les autorisations de droits temporaires sur des ressources Azure.
Dans le cadre de PIM et d’Azure Resource Guard, nous aurions la cinématique suivante :
Etape 0 : Demande d’élévation des droits par l’Administrateur sauvegarde
Etape I : Validation de la demande par Administrateur sécurité pour une durée donnée
Etape 2 : Intervention sur les sauvegardes par l’Administrateur sauvegarde
Etape 3 : Fin de l’élévation des privilèges d‘Administrateur sauvegarde
Le schéma ci-dessus est un exemple de scénario possible grâce à PIM.
Etape V : Intégration de PIM sur Azure Resource Guard
Sur le tenant B, recherchez le service Azure suivant :
Cliquez sur Ressources Azure puis sur la souscription ou le groupe de ressources contenant Azure Resource Guard :
Si aucune souscription n’apparait, cliquer « Découvrir les ressources » et laissez-vous guider.
Ajoutez un nouvel assignement :
Choisissez le rôle Contributeur et reprenez l’utilisateur Administrateur sauvegarde et cliquez sur Suivant :
Conservez bien la notion d’éligibilité et cliquez sur Assigner :
Etape VI : Mise en place du processus de validation
Notre utilisateur Administrateur sauvegarde est maintenant éligible pour devenir Contributeur sur Azure Resource Guard. Seulement, il est nécessaire de mettre en place un processus de validation pour l’élévation de ses droits. Sans cela et par défaut, toutes ses demandes seront automatiquement approuvées.
Sur le tenant B et au même niveau que précédemment, cliquez comme ceci dans Azure AD PIM pour modifier les paramétrages de validation :
Cliquez sur le rôle Contributeur :
Cliquez sur Modifier :
Modifiez vos paramétrages pour intégrer l’Administrateur sécurité dans l’activation et cliquez sur Mettre à jour :
Etape VII : Test de la fonctionnalité PIM sur Azure Resource Guard
Avant d’activer le rôle Contributeur sur Azure Resource Guard via Azure AD PIM, nous allons vérifier que l’action sur la sauvegarde de la machine virtuelle n’est pas autorisée dans les conditions de base.
Sur le tenant A, retourner sur le coffre de sauvegarde et cliquez comme ceci :
Cliquez ici pour arrêter le mécanisme de sauvegarde :
Arrêtez complètement le backup et supprimer les données :
Le message d’erreur suivant devrait alors apparaître :
Il est donc bien nécessaire de faire une élévation temporaire des droits sur Azure Resource Guard. Positionnez-vous sur le tenant contenant Azure Resource Guard et lancez Azure AD PIM :
Cliquez sur Mes Rôles :
Cliquez sur Ressources Azure puis sur Activer :
Entrez une justification et une période puis cliquez sur Activer :
La notification Azure suivante doit apparaître :
Sur le tenant B, cliquez sur Approuver les demandes dans Azure AD PIM :
Cliquez sur Ressources Azure et approuvez la demande :
Confirmez la demande d’approbation :
Sur le tenant A, un contrôle sur Azure AD PIM nous montre que le rôle de Contributeur est bien actif :
Retentez alors l’opération de suppression de la sauvegarde de la machine virtuelle :
Si l’erreur suivante arrive en notification, refaite un test dans quelques minutes :
Conclusion
L’ajout de cette fonctionnalité sur un coffre de sauvegarde est un vrai plus en termes de protection des ressources Azure. Il est vrai que la situation antérieure, avec des propriétaires et des contributeurs au plein pouvoirs pouvaient inquiéter en cas de scénarios d’attaque.
Il parait indispensable de sécuriser les opérations critiques liées aux sauvegardes, bien prises en compte avec Azure Resource Guard :
MUA apporte une vraie réponse pour protéger encore plus les sauvegardes et sans surcoût, sauf si Azure AD PIM est présent dans votre architecture. Nul doute qu’Azure Resource Guard va apporter encore plus de protection sur d’autres services au fil de ses évolutions.
La maintenance informatique est une fenêtre nécessaire dans laquelle un service est volontairement indisponible et annoncé en amont. Les architectures basées sur des services Azure n’échappent pas à cette règle car il est toujours nécessaire d’effectuer des maintenances régulières pour des sauvegardes, des mises à jour, des refontes, des réplications, …
Dans cet article, nous allons nous intéresser une nouvelle fonctionnalité disponible sous Azure Virtual Desktop. Encore en préversion à l’heure où ces lignes sont écrites, elle permet de gérer les périodes de mise à jour des agents AVD sur les machines virtuelles qui composent votre pool d’hôtes.
Qu’est qu’un agent AVD ?
Un environnement Azure Virtual Desktop est composée d’une ou plusieurs machines virtuelles. Pour que la communication entre le contrôleur de structure Azure et ces dernières soit assurée, un agent est présent sur chaque machine virtuelle. Un tour dans les programmes installés nous montre tout cela :
L’installation de ces agents est entièrement transparente si la création de la machine virtuelle est réalisée depuis le portail Azure. Si vous créez la machine virtuelle via un script PowerShell, vous devrez alors télécharger et installer manuellement les fichiers MSI.
Quand est-ce que l’agent AVD est mis à jour ?
Avant l’apparition de cette nouvelle fonctionnalité, l’agent AVD se mettait à jour à son rythme sans logique particulière. A ce ceci près qu’il existait une option ayant un impact sur le rythme de mise à jour : environnement de validation.
Qu’est-ce que l’environnement de validation ?
Nous (Microsoft) vous recommandons vivement de créer un pool d’hôtes de validation dans lequel les mises à jour de service seront appliquées en premier. Les pools d’hôtes de validation vous permettent de superviser les mises à jour de service avant que celui-ci ne les applique à votre environnement standard ou de non-validation. Sans pool d’hôtes de validation, vous risquez de ne pas détecter les modifications qui génèrent des erreurs, ce qui peut entraîner des temps d’arrêt pour les utilisateurs de votre environnement standard.
Autrement dit, la mise à jour est orientée en premier lieu vers les pools d’hôtes marqués comme environnement de validation. Une fois la mise à jour déployée avec succès en grand nombre sur des environnements de validation, elle est aussi installée sur les machines virtuelles d’environnements AVD de production.
De manière générale, un environnement de validation a tout son sens dans une solution de bureau à distance car il apporte une couche supplémentaire de tests via des utilisateurs spécifiques et évite ainsi un déploiement pouvant provoquer un blocage massif.
Mises à jour planifiées de l’agent
Toujours dans la volonté d’apporter une meilleure maîtrise de l’environnement Azure Virtual Desktop, Microsoft introduit la fonctionnalité de planification. Celle-ci ne concerne que la mise à jour de l’agent AVD présent sur les machines virtuelles du pool d’hôtes.
Comme vous allez le voir dans les écrans ci-dessous, cette option se configure au niveau du pool d’hôtes et impacte alors toutes les machines virtuelles rattachées de la même manière.
Via le portail Azure, rendez-vous sur votre pool d’hôtes et cliquez sur Mises à jour programmées des agents :
Cliquez sur la case ci-dessous pour activer la gestion manuelle des mises à jour :
Il vous est alors possible de définir une ou deux fenêtres de maintenance. Comme indiqué sur la page, 4 tentatives de mise à jour seront effectuées avant que celle-ci soit reportée la prochaine fois que les hôtes de session seront allumés.
Commencez par définir le fuseau horaire. Vous avez le choix entre celui employé par la machine virtuelle ou un parmi la liste déroulante :
Définissez le jour et l’heure de la première fenêtre de mise à jour :
Ajoutez au besoin une seconde fenêtre de mise à jour :
Enfin cliquez pour appliquer la configuration :
Et c’est tout ! ????
Conclusion
Azure Virtual Desktop continue son chemin et évolue en permanence ????. Pour rester sur ce sujet, retrouvez la vidéo très bien expliquée faite par Dean de l’Azure Academy. Dean y aborde également la possibilité de consulter l’historique des mises à jour installées via l’utilisation du Log Analytics Workspace d’Azure :
Comme pour les autres sections, voici une liste non exhaustive de différents outils de protection des ressources créées sur Azure.
Azure Advisor
Je vous avais déjà signalé que cet outil prodiguait gratuitement quelques conseils pour réaliser des économies sur votre architecture Cloud. Azure Advisor va plus loin en proposant également des conseils de sécurité.
Comme les autres recommandations, celles de sécurité sont classifiées selon l’impact et le risque sécuritaire.
Un clic sur les 21 recommandations listées dans mon tenant nous en affiche le détail :
Les premières recommandations sont pleines de bon sens :
Trop de propriétaires pour le(s) souscription(s) Azure
Activation si besoin de Microsoft Defender
Activation de la MFA pour les comptes propriétaires ????
Certaines sont à prendre avec plus de recul, comme par exemple celle-ci :
Azure Advisor autorise les exceptions après analyse du conseil.
Comme beaucoup de services sous Azure, le coût peut être un frein selon l’usage :
Dans certains cas, Azure Advisor proposera même de « corriger » à votre place la recommandation de sécurité :
Defender for Cloud (Anciennement Azure Security Center + Azure Defender)
Microsoft a renommé ce service lors du dernier Ignite en 2021. Microsoft Defender for Cloud est une solution comportant deux aspects majeurs :
Gestion de la posture de sécurité cloud (CSPM) : identifie les faiblesses dans votre architecture cloud, aide à renforcer la posture de sécurité globale de votre environnement (IaaS, PaaS, SaaS).
Protection de la charge de travail cloud (CWP). Créer une protection des charges de travail (machine virtuelle, stockage, Kubernetes, SQL, …) dans des environnements multiclouds ou hybrides contre les menaces.
Historiquement, il existait déjà ces deux services, l’un gratuit (Azure Security Center) et l’autre payant (Azure Defender), couvrant approximativement le même périmètre. Voici un schéma pour comprendre cette évolution :
Posture de sécurité pour Microsoft Defender pour le cloud
Déjà disponible sous un ancien nom Azure Secure Score, Defender for Cloud reprend le même principe grâce l’évolution permanente des caractéristiques de sécurité des ressources Azure. Chaque point de faiblesse et alors valorisé pour établir le score de sécurité de l’architecture : plus le score est élevé, plus le niveau de risque identifié par Microsoft est faible.
Azure Defender for Server
Microsoft Defender pour les serveurs fournit la détection des menaces ainsi que des défenses avancées à vos machines Windows et Linux, qu’elles s’exécutent dans Azure, AWS, GCP ou localement. Microsoft Defender pour les serveurs est disponible dans deux plans :
Autrement dit, l’intégration d’une ressource dans Microsoft Defender active un grand nombre de mesures de sécurité (capteurs de faille, évaluation des vulnérabilités, threat intelligence, …), mais apporte également la possibilité de piloter ses alertes et ses incidents depuis le centre de sécurité Microsoft.
Deux plans sontmaintenant disponibles selon le serveur concerné et les fonctionnalités recherchées. Le plan 2 correspond à l’ancien plan appelé Defender for Server :
La liste des avantages de Defender for Server se trouve ici.
Particularité Azure :
Il est aussi possible d’intégrer un serveur protégé par Defender for Cloud dans Microsoft Defender sans aucun surcoût ! Prenez le temps de lire attentivement l’article suivant, mettant en lumière les différences entre Defender for Cloud et Defender for server, mais aussi leurs possibilités d’intégration commune.
Et enfin un autre article pour la mise en place juste ici.
Azure Backup
Azure Backup est un service de sauvegarde apportant une couche de sécurité supplémentaire en cas de perte ou de corruption de donnée. Ce service est payant et est en supplément dans la plupart des cas, mais peut être déjà intégré dans le cout de certains services PaaS (App service, MySQL, …). Comme le montre le schéma ci-dessous :
Azure Backup Center pilote les sauvegardes effectuées dans les différents coffres de sauvegarde ou coffres de restauration.
Le choix du nombre de sauvegardes est accessible lors de la mise en place de cette dernière
Il est même possible de sauvegarder des ressources en dehors Azure afin de garantir une copie complète de toutes les données d’entreprise.
Azure Disaster Recovery
La sauvegarde de données n’est pas un gage systématique de reprise d’activité après sinistre. Pour cela, des solutions dédiées sont mises en place et interviennent en parallèle du cycle de sauvegarde.
Le schéma d’architecture ci-dessous montre la réplication des services entre deux régions Azure :
Les machines virtuelles présentes dans la seconde région Azure ne seront allumées que lors que failover est déclenché.
La synchronisation des données est pilotée par le service Azure Site Recovery. Des disques réplicas sont créés et facturés dans la seconde région. Il en est de même pour les bases de données répliquées. A l’inverse, les machines virtuelles ne sont pas démarrées, ce qui en réduit le coût opérationnel de la seconde région.
Retrouvez mon article sur la mise en place de ce service sur une architecture Azure Virtual Desktop.
Verrous Azure
Comment protéger les ressources Azure d’une simple suppression accidentelle ?
Il arrive que les droits utilisateurs soient justifiés, mais qu’une simple erreur d’inattention provoque de gros dégâts dans l’architecture Azure. Les verrous d’Azure sont là pour ça !
Les verrous Azure sont des composants gratuits et paramétrables sur différents niveaux :
Souscription Azure
Groupe de ressource
Azure
Les verrous Azure fonctionnent aussi par héritage et provoque deux types de blocage :
CanNotDelete signifie que les utilisateurs autorisés peuvent lire et modifier une ressource, mais qu’ils ne peuvent pas la supprimer.
ReadOnly signifie que les utilisateurs autorisés peuvent lire une ressource, mais ne pas la supprimer ni la mettre à jour. Appliquer ce verrou revient à limiter à tous les utilisateurs autorisés les autorisations fournies par le rôle Lecteur.
Dans un environnement Cloud, la connectivité réseau est un point primordial de la sécurité. Que les services hébergés dans le cloud doivent être accessibles depuis une architecture on-premise ou pour des utilisateurs internet, il est nécessaire de mettre en place des mesures de sécurité pour protéger le traffic réseau mais aussi les périphériques.
Pour cela, voici quelques services disponibles nativement sous Azure pour y parvenir :
Azure VPN
Azure VPN est un service managé par Microsoft :
Une passerelle de réseau virtuel est composée de deux machines virtuelles ou plus qui sont automatiquement configurées et déployées sur un sous-réseau spécifique que vous créez, appelé sous-réseau de la passerelle… Vous ne pouvez pas configurer directement les machines virtuelles qui font partie de la passerelle de réseau virtuel, même si les paramètres que vous sélectionnez lors de la configuration de votre passerelle ont un impact sur les machines virtuelles de passerelle créées.
La passerelle de réseau virtuel envoie du trafic crypté entre un réseau virtuel Azure et un site via Internet. Cette connexion est disponible pour deux besoins :
Connexion Site à Site (S2S) : utilisée pour établir une ou des connexions permanentes vers des locaux afin de prolonger les réseaux locaux dans Azure.
Connexion Point à Site (P2S) : utilisée pour établir des connexions temporaires en situation de mobilité. Ideal pour des périphériques portables.
Dans le cadre d’une connexion P2S, les méthodes d’authentification à Azure VPN sont à considérer selon le type de périphériques utilisé :
Azure propose plusieurs SKUs de VPN avec différents débits :
A cela, il faut aussi ajouter les coûts de bande passantes puisque le traffic sortant d’Azure est facturé par Microsoft :
Azure ExpressRoute
A l’inverse d’Azure VPN, les connexions ExpressRoute n’acheminent pas le traffic via Internet. Elles offrent plus de fiabilité, une vitesse plus rapide et une latence inférieure que les connexions Internet classiques.
Un circuit ExpressRoute comporte toujours deux connexions à deux routeurs périphériques Microsoft Enterprise (MSEE). Les fournisseurs de connectivité utilisent eux aussi des dispositifs redondants pour assurer la redondance de vos connexions à Microsoft.
Les principaux avantages de la connexion ExpressRoute sont :
Connectivité de couche 3 entre votre réseau local et le cloud de Microsoft via un fournisseur de connectivité.
Connectivité aux services de cloud de Microsoft dans toutes les régions de la zone géopolitique.
Routage dynamique entre votre réseau et Microsoft via le protocole de routage dynamique standard (BGP).
Redondance intégrée dans chaque emplacement de peering pour une plus grande fiabilité.
Un groupe de sécurité réseau (NSG) filtre le trafic réseau entrant et sortant et contient des règles qui sont utilisées pour autoriser ou refuser le trafic de sécurité réseau filtré. La configuration de ces règles de sécurité NSG vous permet de contrôler le trafic réseau en autorisant ou en refusant des types de trafic spécifiques. Vous pouvez affecter un NSG à :
Une interface réseau pour filtrer le trafic réseau sur cette interface uniquement.
Un sous-réseau pour filtrer le trafic sur toutes les interfaces réseau connectées dans le sous-réseau.
Vous pouvez également affecter des NSG à la fois à des interfaces réseau et à des sous-réseaux. Dans ce cas, chaque NSG est évalué indépendamment.
Azure Application Security Group (ASG)
Il est possible de combiner l’efficacité du NSG en associant les ressources de même nature à un ASG. Le groupe de sécurité des applications vous permet de configurer la sécurité du réseau comme une extension naturelle de la structure d’une application, en vous permettant de regrouper des machines virtuelles et de définir des politiques de sécurité du réseau en fonction de ces groupes.
Azure Bastion
Les machines virtuelles Windows et Linux nécessitent un accès pour leur administration. L’ajout d’une IP publique sur la machine virtuelle résout le souci d’accès externe mais créer un précédent de sécurité. C’est là qu’Azure Bastion rentre en scène :
Azure Bastion est un service PaaS proposé par Azure pour apporter une couche de sécurité supplémentaire dans le cadre de connexion RDP/SSH. Ce composant permet alors de se connecter sur des machines virtuelles sans les exposer à internet.
Azure Bastion doit être associé à un réseau virtuel même s’il est compatible avec les réseaux virtuels associés à ce dernier.
Azure Firewall
Azure Firewall est un service de sécurité réseau basé sur le cloud qui permet de protéger vos ressources VNet. En utilisant Azure Firewall, vous pouvez créer et gérer de manière centralisée des profils de connectivité réseau dans toute votre organisation.
Azure Virtual Desktop utilise le protocole RDP (Remote Desktop Protocol) pour établir la connexion avec l’utilisateur. Pour rappel, ce protocole permet de se connecter à des ordinateurs de manière distante. Dans la plupart des cas, cette connexion utilise le protocole TCP pour y parvenir. Le serveur écoute par défaut sur le port TCP 3389.
Il est néanmoins possible de varier cette approche de connexion pour des questions de perfomences et de fiabilité. Depuis déjà l’année dernière, Microsoft proposait la fonctionnalité RDP Shortpath pour améliorer cette connexion, débit et latence, entre l’utilisateur et la machine virtuelle AVD :
RDP Shortpath est une fonctionnalité d’Azure Virtual Desktop qui établit un transport direct basé sur UDP entre le client Remote Desktop et l’hôte de session. RDP utilise ce transport pour fournir le Bureau à distance et le RemoteApp tout en offrant une meilleure fiabilité et une latence constante.
Microsoft Doc
Dans cet article, nous allons regarder en détail cette évolution et effectuer un test sur un environnement AVD. Avant de commencer à manipuler Azure, cette vidéo vous explique très bien l’idée :
L’excellent billet de Denis Gundarev nous explique avec simplicité l’inadéquation entre le protocole TCP pour un besoin RDP :
TCP est un excellent protocole pour la livraison garantie de petites quantités de données. Les applications telles que les navigateurs ou les clients de messagerie se contentent d’envoyer les données et de les oublier. Le protocole assure la cohérence et l’ordre des paquets et relance la transmission si la livraison échoue. Cependant, RDP utilise des connexions de longue durée et les connexions TCP de longue durée sont problématiques.
Le protocole TCP est idéal pour les réseaux locaux, mais pas pour l’Internet. Oui, si le paquet est perdu, il sera retransmis. La disponibilité de la bande passante est un facteur essentiel. Malheureusement, les algorithmes de contrôle de congestion TCP limitent la possibilité de saturer le réseau.
RDH Shortpath s’applique donc sur les réseau publics
Comme son grand frère, cette fonctionnalité établit un flux UDP direct pour RDP. Toutefois, elle ne nécessite pas l’ouverture de ports entrants sur le pare-feu. Au lieu de cela, elle sélectionne automatiquement les conditions du réseau. Elle utilise une combinaison de protocoles de traversée NAT tels que STUN et UPnP et le processus d’établissement de la connectivité interactive (ICE). RDP établit alors le flux UDP direct dans la plupart des configurations de réseau.
Par conséquent, vos utilisateurs bénéficieront d’une latence plus faible, d’une meilleure utilisation du réseau et d’une grande tolérance à la perte de paquets ou aux changements de configuration du réseau.
Et la sécurité ?
RDP Shortpath pour les réseaux publics étend les capacités de multi-transport de RDP. Il ne remplace pas le transport de connexion inverse mais le complète. Le courtage de la session initiale est toujours géré par l’infrastructure Azure Virtual Desktop.
Comment constater le bénéfice ?
Denis nous a même préparé une vidéo pour montrer le bénéfice possible dans la gestion des paquets perdus entre les différents protocoles possibles :
La vidéo de gauche reprend une connexion avec le RDP Shortpath, tandis que celle de droite est en protocole TCP. La vidéo originale en bas de l’écran fait office de référence.
Mise en oeuvre de la solution
Dans un environnement Azure Virtual Desktop, chaque connexion RDP commence par l’établissement du transport de connexion inverse sur la passerelle Azure Virtual Desktop. Après l’authentification de l’utilisateur, le client et l’hôte de session établissent le transport RDP initial, et le client et l’hôte de session commencent à échanger leurs capacités.
Important : comme le rappel la documentation Microsoft, RDP Shortpath configurés sur des réseaux managés est actuellement incompatible avec la prévision de RDP Shortpath pour les réseaux publics.
Comme à chaque article d’Azure Virtual Desktop, vous pouvez suivre les différentes étapes pour mettre en route cette fonctionnalité, toujours en preview à l’heure où ces lignes sont écrites.
Etape 0 : Rappel des prérequis
Des prérequis sont nécessaires pour réaliser cette démonstration AVD :
Un tenant Microsoft
Une souscription Azure valide
Un réseau virtuel existant sur Azure
Un domaine Active Directory synchronisé avec Azure AD via l’agent Azure AD Connect
Une ou des machines virtuelles AVD déployées sur ce même réseau virtuel
Mon environnement Azure Virtual Desktop est donc déjà en place :
Etape I : Test avant modification du RDP Shortpath
Avant d’effectuer les modifications, connectez-vous à votre environnement AVD avec un utilisateur pour constater la connexion RDP via le protocole TCP :
Saisissez vos identifiants pour ouvrir votre session RDP :
Contrôlez la méthode de connexion TCP, mise en place par défaut :
Afin de mettre en place la configuration nécessaire sur les machines virtuelles AVD, il est possible d’y parvenir de plusieurs manières. En voici deux :
Etape IIa : Modifiez la configuration de registre d’une machine virtuelle AVDmanuellement
Fermez la session utilisateur et retournez sur une machine virtuelle via votre portail Azure. Exécutez la commande suivante comme ceci
Attendez quelques minutes et constatez le succès de celle-ci sur le portail Azure
Etape IIb : Modifiez la configuration de registre d’une machine virtuelle AVD via GPO
Au lieu de faire cette modification manuelle sur toutes vos machines virtuelles, vous pouvez également créer une GPO dans votre domaine AD et l’appliquer aux machines AVD.
Connectez à une machine de votre domaine AD pour y créer votre nouvelle GPO
Commencez la création de cette nouvelle GPO sur l’OU correspondante à vos machines AVD
Nommez votre GPO à votre convenance
Editez-là avec un clic droit
Créez y un nouvel objet de registre comme ceci
Descendez dans l’arborescence suivante et sélectionnez là :
Ajoutez-lui les propriétés suivantes et cliquez sur OK
Redémarrez les machines virtuelles AVD pour une bonne prise en compte de cette nouvelle GPO
Etape III : Test après modification du RDP Shortpath
Comme au premier essai, reconnectez-vous à votre environnement AVD avec un utilisateur de test, puis constatez le changement de protocole UDP :
Rien de bien compliqué ????.
Evidemment, Microsoft prévoit aussi des ajouts de règles firewall pour les machines virtuelles AVD et pour les machines clients. Ces opérations sont nécessaires si le protocole UDP est à l’origine bloqué.
Conclusion
Cette nouvelle fonctionnalité est donc une façon facile d’améliorer l’expérience de vos utilisateurs sans mettre en défaut la sécurité à travers des réseaux publics.
Pour finir et vous aider dans cette démarche, Dean nous a même préparé un seconde vidéo sur la chaine YouTube et dédiée à cette évolution du RDP Shortpath, encore en préversion !
La conteneurisation applicative est accessible sur Azure Virtual Desktop depuis plusieurs mois. L’attachement via MSIX permet de fournir des applications à des machines virtuelles sans aucune installation locale. Cependant, Il est ici différent du format MSIX normal, car celui-ci est spécialement conçu pour AVD. Pour en savoir plus sur MSIX, consultez la page web Présentation de MSIX.
Pourquoi faire de la conteneurisation applicative pour Azure Virtual Desktop ?
Azure Virtual Desktop est principalement conçu pour délivrer une expérience utilisateur commune et partagée. Il arrive fréquemment que certains utilisateurs travaillent sur des applications spécifiques. Dans ce cas, il est possible de leur délivrer cet attendu de plusieurs manières :
Gestion de applications requises dans une image OS spécifiquement dédiée
Utilisation de solution de type Intune pour un déploiement distribué
Approvisionnement d’applications via des solutions tierces (Liquidware Flexapp, Citrix AppLayering)
Utilisation d’applications conteneurisées
Dans cet article, nous allons démontrer ensemble la dernière possibilité.
Etape 0 : Rappel des prérequis
Comme pour chaque déploiement réalisé sur ce blog, des prérequis sont nécessaires avant de pouvoir se concentrer sur MSIX AppAttach :
Un tenant Microsoft (AAD)
Une souscription Azure active
Un domaine Active Directory Domain Services (AD DS)
Un espace de stockage Azure joint au domaine AD DS
Un agent Azure AD Connect installé et synchronisé avec votre Azure AD
Un environnement Azure Virtual Desktop (Pool d’hôtes – Groupe d’application – Espace de travail – VMs)
Facultatif : un Azure Bastion pour faciliter les connexions RDP
Une fois votre environnement Azure en place, plusieurs étapes sont nécessaires pour arriver à la mise à disposition des applications conteneurisées.
Etape I : Déployer une nouvelle VM Azure Windows 10
Cette nouvelle machine virtuelle vous nous être utile pour créer différents composants nécessaires :
Création d’un certificat pour signature des packages MSIX
Création du package MSIX
Configuration des VMS AVD pour supporter la couche conteneur
Création de l’image VHD
Dépose de l’image VHD sur le partage de fichier
J’ai ici repris la même image Windows 10 que celle utilisée pour AVD.
Pas besoin d’adresse IP publique dans mon cas grâce à Azure Bastion.
Patientez quelques minutes une fois la création lancée :
Une fois cette VM créée, utilisez Azure Bastion pour vous connecter en RDP sur votre machine virtuelle :
Joignez cette machine virtuelle au domaine AD DS, puis redémarrez-là :
Etape II : Préparation du certificat
Reconnectez à votre VM MSIX via Azure Bastion, puis lancez Windows PowerShell ISE, en mode administrateur :
Exécutez la commande PowerShell suivante pour générer un certificat auto-signé sur votre domaine (JLOUDEV), et stockez le dans le dossier Personal des certificats locaux :
Exécutez certlm.msc pour ouvrir la console des certificats locaux :
Lancez la commande d’Export sur ce nouveau certificat :
Cliquez sur Suivant :
Sélectionnez l’option Oui, exporter la clé privée, puis cliquez sur Suivant :
Cochez la case Exporter toutes les propriétés étendues, décochez la case Activer la confidentialité des certificats, puis cliquez sur Suivant :
Cochez la case Mot de passe, renseignez les deux champs dessous, puis cliquez sur Suivant :
Créez un nouveau dossier, par exemple celui-ci :
C:\MSIX
Renseignez le chemin de destination, puis cliquez sur Suivant :
Cliquez sur Terminer pour finaliser le processus :
Etape III : Déploiement du certificat sur les machines virtuelles AVD
Exécutez le script PowerShell suivant depuis votre fenêtre Windows PowerShell ISE, en mode administrateur, pour déployer le certificat nouvellement généré dans Trusted People des machines virtuelles AVD :
Un tour rapide grâce à Azure Bastion sur une des machines virtuelles AVD nous confirme la bonne présence du certificat :
Etape IV : Téléchargements de l’application Mozilla Firefox
Dans notre démonstration, nous allons télécharger la dernière version de Mozilla Firefox. Nous prendrons l’installation au format MSI, disponible ici.
Lancez le téléchargement depuis la machine virtuelle MSIX comme ceci :
Copiez le fichier téléchargé dans le dossier C:\MSIX :
Etape V : Préparation avant création
Avant de lancer la création, exécutez le script PowerShell suivant depuis votre fenêtre Windows PowerShell ISE, en mode administrateur, pour désactiver le service de recherche de Windows :
Pour continuer, vous aurez besoin de MSIX Packaging Tool, que vous trouverez dans le Microsoft Store. Lancez le téléchargement de ce dernier, toujours depuis la machine virtuelle MSIX :
Une fois le téléchargement terminé, lancez l’application.
Sur la page d’accueil, sélectionnez Application package afin de lancer la création d’un nouveau paquet :
Vous aurez peut-être besoin de redémarrer la machine pour continuer.
Sur la page suivante, cochez la case Créer le paquet sur cet ordinateur, puis cliquez sur Suivant :
Attendez l’installation du pilote de l’outil de conditionnement MSIX, puis cliquez sur Suivant :
Sélectionnez Parcourir pour accéder au fichier d’installation de Firefox au format MSI :
C:\MSIX\Firefox Setup 95.0.msi
Dans la liste déroulante Préférence de signature, sélectionnez Signer avec un certificat (.pfx).
Recherchez le certificat C:\MSIX\jloudev.tk.pfx, saisissez le mot de passe Demo!pass123, puis cliquez sur Suivant :
Examinez et modifiez si besoin le nom du paquet, vérifiez que le nom de l’éditeur est défini sur CN=JLOUDEV, puis cliquez sur Suivant :
Cela déclenche alors l’installation de Mozilla Firefox de manière encapsulée :
Une fois l’installation terminée, vous retrouvez le message ci-dessous, cliquez sur Suivant :
Cliquez alors sur Suivant.
Lorsque le système vous demande Avez-vous terminé ?, sélectionnez Oui :
Vérifiez dans l’écran ci-dessous qu’aucun service n’est nécessaire, puis cliquez sur Suivant :
Changez le fichier et le dossier de destination :
C:\MSIX\Firefox\Firefox
Une fois la création terminée, cliquez sur Fermer :
Retrouvez les fichiers MSIX et XML suivants dans votre dossier C:\MSIX\Firefox :
Copiez seulement le fichier MSIX dans le dossier racine C:\MSIX :
Etape VII : Installation des fonctionnalités d’Hyperviseur
Maintenant, vous allez activer la fonctionnalité d’Hyperviseur sur l’ensemble des machines virtuelles Azure Virtual Desktop, mais également sur la machine MSIX :
Exécutez le script PowerShell suivant depuis votre fenêtre Windows PowerShell ISE, en mode administrateur, pour commencer l’activation sur les VMs AVD :
Exécutez le script PowerShell suivant depuis votre fenêtre Windows PowerShell ISE, en mode administrateur, pour installer Hyper-V et ses outils de gestion sur les VMs AVD :
Chaque hôte AVD doit redémarrer pour prendre en compte les modifications : cliquez sur Oui :
Exécutez le script PowerShell suivant depuis votre fenêtre Windows PowerShell ISE, en mode administrateur, pour installer Hyper-V et ses outils de gestion sur la machine virtuelle MSIX :
La machine virtuelle MSIX doit elle aussi redémarrer :
Reconnectez-vous sur machine virtuelle MSIX, avec le même compte utilisateur qu’utilisé précédement :
Etape VIII : Créer une image jointe à une application MSIX
Ouvrez Microsoft Edge et rendez-vous sur la page suivante pour télécharger msixmgr.zip.
Dans l’Explorateur de fichiers, accédez au dossier Téléchargements, ouvrez le fichier compressé et copiez le dossier x64 dans le dossier C:\MSIX :
Exécutez le script PowerShell suivant depuis votre fenêtre Windows PowerShell ISE, en mode administrateur, pour créer le fichier VHD qui servira d’image jointe de l’application MSIX :
Exécutez le script PowerShell suivant depuis votre fenêtre Windows PowerShell IS, en mode administrateur , pour monter le fichier VHD nouvellement créé :
Exécutez le script PowerShell suivant depuis votre fenêtre Windows PowerShell ISE, en mode administrateur, pour créer une nouvelle partition, la formater, et lui attribuer la première lettre de lecteur disponible :
Cliquez sur Annuler pour ne pas formater à nouveau ce disque :
Le nouveau disque image est déjà présent dans l’explorateur de fichiers :
Exécutez le script PowerShell suivant depuis votre fenêtre Windows PowerShell ISE, en mode administrateur, pour créer une structure de dossier qui hébergera les fichiers MSIX :
Constatez la présences des fichiers dans le nouveau disque :
Exécutez le script PowerShell suivant depuis votre fenêtre Windows PowerShell ISE, en mode administrateur, pour démonter le fichier VHD qui servira d’image MSIX :
Etape IX : Configurer le groupe Active Directory contenant les hôtes AVD
Retournez sur votre contrôleur de domaine via Azure Bastion :
Exécutez le script PowerShell suivant depuis votre fenêtre Windows PowerShell ISE, en mode administrateur, pour créer un groupe AD DS qui sera synchronisé avec Azure AD :
Exécutez le script PowerShell suivant depuis votre fenêtre Windows PowerShell ISE, en mode administrateur, pour ajouter les machines virtuelles AVD en tant que membres du groupe que vous avez créé à l’étape précédente :
Ce nouveau groupe doit faire partie des synchronisations vers Azure AD. Pour cela, vérifiez dans votre configuration Azure AD Connect que cette OU est bien synchronisée :
Contrôlez après 30 minutes que le nouveau groupe remonte bien dans Azure AD :
Pour que les machines virtuelles Azure Virtual Desktop remontent bien dans ce groupe, il est nécessaire de reconfigurer également Azure AD Connect.
Retournez dans ce dernier pour activer la fonctionnalité Hybrid Azure AD Join :
Une fois les identifiants d’administrateur global renseignés, choisissez l’option ci-dessous :
Cochez la case pour remonter les machines Windows 10 et ultérieures :
Renseignez un compte Enterprise Administrator :
Une fois la configuration d’Azure AD Connect terminée :
Redémarrez les machines virtuelles AVD
Utilisez Azure Bastion pour vous connecter sur chaque VM AVD avec le compte avdadmin1@jloudev.tk
Retournez sur votre contrôleur de domaine via Azure Bastion (ou sur la machine virtuelle sur laquelle est installé Azure AD Connect), puis saisissez la commande PowerShell suivante en mode administrateur :
Start-ADSyncSyncCycle -PolicyType Initial
Attendez quelques minutes et contrôler la présence des machines virtuelles AVD dans le groupe AD sur Azure AD :
Etape X : Ajout des droits pour les VMs AVD sur le compte de stockage
Afin de mettre à disposition l’application packagée, nous allons créer un nouveau partage de fichier sur le compte de stockage existant.
Retournez sur votre portail Azure et rendez-vous sur le compte de stockage utilisé pour FSLogix :
Cliquez sur ce nouveau partage de fichier pour rajouter les 3 droits d’accès suivants :
Option
Valeur
Rôle
Storage File Data SMB Share Elevated Contributor
Assign access to
Group
Select
avd-admins
Option
Valeur
Rôle
Storage File Data SMB Share Elevated Contributor
Assign access to
Group
Select
avd-hosts
Option
Valeur
Rôle
Storage File Data SMB Share Reader
Assign access to
Group
Select
avd-group
Une fois les droits en place, retournez sur votre machine virtuelle MSIX avec le compte avdadmin1 via Azure Bastion, pour connecter ce nouveau partage de fichier grâce à la commande suivante :
$connectTestResult = Test-NetConnection -ComputerName jlosto.file.core.windows.net -Port 445
if ($connectTestResult.TcpTestSucceeded) {
# Mount the drive
New-PSDrive -Name Z -PSProvider FileSystem -Root "\\jlosto.file.core.windows.net\msixvhds" -Persist
} else {
Write-Error -Message "Unable to reach the Azure storage account via port 445. Check to make sure your organization or ISP is not blocking port 445, or use Azure P2S VPN, Azure S2S VPN, or Express Route to tunnel SMB traffic over a different port."
}
Exécutez les commandes suivantes via le programme CMD pour accorder les permissions NTFS requises :
Exécutez le script PowerShell suivant depuis votre fenêtre Windows PowerShell ISE, en mode administrateur, pour recopier le fichier VHD vers le partage de fichiers Azure :
Un contrôle dans l’explorateur de fichier nous permet de vérifier la bonne présence de ce dernier :
Etape XI : Ajout de l’application MSIX sur l’environnement Azure Virtual Desktop
On arrive presque au bout ! Il ne nous reste maintenant qu’à rajouter notre application MSIX sur notre pool d’hôtes Azure Virtual Desktop. Pour cela, retournez sur votre portail Azure et cherchez votre pool d’hôtes, cliquez sur MSIX packages, puis sur Ajouter :
Saisissez le chemin suivant pour chercher le package nouvellement généré :
Renseignez les champs ci-dessous de la façon suivante, puis cliquez sur Ajoutez :
Vérifiez la bonne présence de votre application dans l’écran des applications :
Rendez-vous maintenant dans la section groupe d’applications, puis cliquez sur Ajouter :
Renseignez un nom à votre groupe d’applications, puis cliquez sur Suivant :
Sur le second onglet, cliquez sur Ajouter des applications :
Renseignez les champs ci-dessous, puis cliquez sur Sauvegarder et passez à l’onglet suivant :
Ajoutez votre groupe d’utilisateurs AVD puis passez sur l’onglet suivant :
Reprenez votre espace de travail existant puis validez les derniers onglets pour lancer la création :
Quelques minutes plus tard, la création se termine :
Etape XII : Test du package MSIX
Pour cela rien de plus simple, ouvrez l’application Remote Desktop. Voici le lien vers la page Microsoft si vous avez besoin de la télécharger :
Une fois installée, cliquez sur Souscrire :
Renseignez les identifiants d’un utilisateur présent dans votre groupe d’utilisateurs AVD :
Décochez la case et cliquez sur Non :
Constatez la présence de l’icône de bureau à distance et du nouvel icône pour Firefox :
Cliquez sur Firefox et renseignez le mot de passe de l’utilisateur AVD :
Firefox s’ouvre bien comme une application publiée sur votre poste local !!!
Le petit icône spécial dans la barre des tâches vous montre bien qu’il s’agit d’une application publiée et non locale :
Conclusion
Félicitations ! Vous avez réussi votre premier package applicatif via MSIX sur votre environnement Azure Virtual Desktop. On ne va pas se mentir, les premières opérations de mise en place demandent de la vigilance. Mais à force de pratiquer, les choses deviennent plus simples. Nul doute que tout cela peut vous faire gagner un temp considérable dans la mise à jour des applications dans de larges environnements Azure Virtual Desktop.
Comme toujours, faites part de vos remarques dans les commentaires ????
Microsoft vient tout juste de l’annoncer en préview : vous pouvez maintenant gérer les identités d’un partage de fichiers Azure PaaS directement avec Azure AD !
C’est une excellente nouvelle, attendue depuis plusieurs mois par de nombreux utilisateurs d’Azure Virtual Desktop, notamment pour mettre en place des solutions comme FSLogix, déjà utilisée pour la gestion des profils utilisateurs, sans serveur AD DS. Par contre, il y a encore une petite mauvaise nouvelle :
Cette fonctionnalité nécessite actuellement que les utilisateurs aient des identités hybrides, gérées dans Active Directory.
Cette contrainte d’avoir un environnement hybride, qui sous-entend donc la présence d’un domaine AD, n’est pas forcément une mauvaise chose. Il s’agit ici d’une avancée technique intermédiaire. Nul doute que ce prérequis ne sera plus nécessaire à moyen terme.
Dans cet article, nous allons donc tester cette nouvelle fonctionnalité. Le but de tester cette préview de gestion des tickets Kerberos par Azure AD est de mesurer les avancées Microsoft. Vous pouvez suivre la documentation leur officielle ici.
Etape 0 : Rappel des prérequis
Comme vous allez travailler avec des tickets Kerberos spécifiques à Azure AD, il est obligatoire que les postes ayant accès au partage de fichiers PaaS disposent de l’un des OS suivants :
Windows 11 Enterprise mono ou multisession
Windows 10 Enterprise mono ou multisession, en version 2004 ou ultérieure avec la mise à jour KB5007253
Windows Server, version 2022 avec la dernière mise à jour KB5007254
Dans mon cas, j’ai utilisé l’environnement suivant :
une VM Windows Server 2022 pour jouer le contrôleur de domaine
Une environnement AVD composé de VMs en Windows 11 Enterprise multisession
Comme annoncé avant, les postes en accès au partage de fichier doivent donc être joints à Azure AD ou en mode hybride (Active Directory + Azure AD). Néanmoins, les utilisateurs doivent être « hybrides », il est donc nécessaire de passer par Azure AD Connect pour y arriver. Le choix du domaine managé Azure AD DS n’est donc pas possible ici :
Azure Active Directory Domain Services (Azure AD DS) : Azure AD DS fournit des services de domaine managé avec un sous-ensemble de fonctionnalités AD DS traditionnelles, comme la jonction de domaine, la stratégie de groupe, le protocole LDAP et l’authentification Kerberos/NTLM.
Active Directory Domain Services (AD DS) : serveur LDAP (Lightweight Directory Access Protocol) qui fournit des fonctionnalités clés telles que l’identité et l’authentification, la gestion des objets, la stratégie de groupe et les approbations.
Au final, les prérequis sont donc les suivants :
Un tenant Microsoft (Azure AD)
Des licences comprenant Windows 10 Entreprise pour vos utilisateurs AVD
Une souscription Azure active avec le rôle de propriétaire :
Un domaine Active Directory Domain Services (AD DS) :
Etape II : Configuration de l’authentification Azure AD
Vous allez utiliser plusieurs nouvelles fonctionnalités, il est donc préférable de réinstaller des modules PowerShell sur votre poste. Ouvrez PowerShell ISE en mode administrateur et lancez la commande suivante :
Cette clef n’est pas contre pas visible sur le portail Azure.
Etape III : Création d’une identité principal de service
L’activation des droits d’Azure AD sur le compte de stockage n’est pas encore possible via le portail Azure. Commencez par générer un mot de passe, basé sur la nouvelle clef Kerberos de votre compte stockage, et stocker le dans une variable grâce à la commande PowerShell suivante :
Etape IV : Définir les autorisations API sur l’application nouvellement créée
Comme indiqué dans la documentation Microsoft, la suite du processus peut se faire dans le portail Azure. Ouvrez votre portail Azure Active Directory :
Dans vos Enregistrement d’applications, cliquez sur Toutes les applications, puis enfin sélectionnez l’application dont le nom correspond à votre compte de stockage :
Dans les autorisations API dans le volet de gauche, ajoutez une autorisation comme ceci :
Sélectionnez Microsoft Graph, puis choisissez délégation des permissions :
Dans la section OpenID, sélectionnez Profile :
Descendez plus bas dans la liste pour retrouver la section User. Cochez alors User.Read et cliquez sur Ajouter :
Une fois sur retourné sur l’écran des permissions, cliquez ci-dessous pour ajouter le consentement global à tout votre tenant :
Constatez la bonne application de celui-ci grâce au statut à droite :
Etape V : Création du partage de fichier
Retournez sur votre compte de stockage pour créer un nouveau partage de fichier comme ceci :
Etape VI : Jointure du partage de fichier Azure au domaine Active Directory
Pour l’instant, le partage de fichier Azure nécessite encore l’attribution de droits RBAC aux utilisateurs Azure Virtual desktop. Dans votre cas cette fonctionnalité nécessite d’activer l’authentification AD DS sur le compte de stockage.
Commencez par télécharger sur GitHub la version la plus récente du module PowerShell AzFilesHybrid.zip :
Décompressez les fichiers sur le disque C sur une VM, jointe à votre domaine :
Démarrez Windows PowerShell ISE en tant qu’administrateur et exécutez ce qui suit pour supprimer le flux de données alternatif Zone.Identifier, qui a une valeur de 3, indiquant qu’il a été téléchargé à partir d’Internet :
Vous pouvez aussi contrôler la bonne activation sur le compte de stockage :
Restez sur votre compte de stockage pour assigner le rôle Storage File Data SMB Share Contributor à votre utilisateurs Azure Virtual Desktop :
Dans notre démonstration, nous allons seulement autoriser le groupe d’utilisateurs Azure Virtual Desktop.
Etape VII : Attribution des autorisations
Pour empêcher les utilisateurs d’accéder aux profils utilisateurs d’autres utilisateurs, vous devez également attribuer des autorisations au niveau du répertoire.
Le système que vous utilisez pour configurer les permissions doit répondre aux exigences suivantes :
La poste a une version de Windows répond aux exigences des systèmes d’exploitation des prérequis
Le poste doit être joint à Azure AD ou à Hybrid Azure AD à Azure AD
Le poste est relié au contrôleur de domaine
Installez ou importez si besoin sur le poste le module PowerShell ActiveDirectory. Dans mon cas, je n’ai pas eu à faire cette opération car j’ai tout exécuté depuis mon contrôleur de domaine :
Import-module ActiveDirectory
Azure AD ne prenant pas actuellement en charge la configuration des listes de contrôle d’accès dans Shell, il doit s’appuyer sur Active Directory. Pour configurer Shell sur votre compte de stockage, exécutez la commande suivante dans PowerShell ISE en tant qu’administrateur :
Lancez enfin la commande net use pour monter le lecteur réseau et vérifiez le bon fonctionnement :
net use Z: \\jloaadjoin2.file.core.windows.net\avdfileshare
Il arrive par moment que la commande échoue la première fois.
On retrouve bien le disque réseau dans l’explorateur Windows :
En retournant sur les tickets Kerberos, un nouveau CIFS a fait son apparition :
Etape IX : Configuration de FSLogix
Une fois l’architecture en place, on peut combiner cette dernière pour la gestion des profils utilisateurs via FSLogix. Pour cela, il nous faut rajouter la configuration FSLogix et une règle de registre en plus pour Azure AD.
L’ouverture d’une nouvelle session utilisateurs d’AVD vous affiche bien la mention FSLogix :
Un tour dans le partage de fichier du compte de stockage montre bien la présence du dossier du profil utilisateur géré par FSLogix :
Conclusion
La gestion des tickets Kerberos par Azure AD est une belle avancée. Bien évidemment, le processus de prise en charge complète d’un compte de stockage de manière native n’est pas encore là, mais nous y sommes en bonne voie ???? Comme à chaque fois, n’hésitez pas à utiliser les commentaires pour exprimer de vos retours ????
Cela est toujours bienvenu pour l’optimisation des coûts.
Encore en préversion, vous pouvez déjà tester cette fonctionnalité depuis plusieurs jours en suivant la documentation Microsoft. Dans cet article, je vais mettre en place cette fonctionnalité étape par étape. Nous allons voir ensemble son impact sur un environnement AVD.
La fonction de mise à l’échelle automatique (ou plan d’autoscaling) vous permet de mettre en route des machines virtuelles (VM) Azure Virtual Desktop, en modulant à la hausse ou à la baisse leur nombre.
Cela permet d’optimiser les coûts de déploiement en fonction de vos besoins. Vous pouvez établir un plan d’autoscaling basé sur :
Créneaux horaires
Jours de la semaine
Plafond du nombre de sessions utilisateurs
Etape 0 : Rappel des prérequis
Cette fonctionnalité AVD nécessite de disposer d’un environnement Azure Virtual Desktop déjà en place. Voici donc la liste des composants déjà présents sur mon tenant Azure :
Domaine Active Directory Domain Services (AD DS)
Pool d’hôtes Azure Virtual Desktop
Espace de travail AVD
Groupe d’applications AVD
5 machines virtuelles D4s_v4, déjà jointes à AVD
Point important : Il est nécessaire de définir un nombre maximal de sessions utilisateurs par VM dans la configuration de votre pool d’hôtes :
L’algorithme du pool d’hôtes n’a pas d’importance car le plan d’autoscaling dispose de sa propre option.
Etape I : Création d’un nouveau rôle RBAC
Comme l’indique la documentation Microsoft, il est nécessaire de créer un nouveau rôle RBAC pour assurer la gestion automatique des VMs.
Besoin d’en savoir un peu plus sur les rôles Azure ? Voici une vidéo en français qui devrait vous aider :
Merci à Seyfallahpour cette explication très claire ????.
Vous pouvez suivre la création du rôle personnalisé via cette aide Microsoft, ou en répétant les étapes suivantes :Copiez le code JSON suivant et enregistrez le dans un fichier (ex. AVD-custom-role.json) sur votre PC :
Selectionnez le type Souscription puis choisissez celle voulue, puis cliquez sur Suivant :
Contrôlez cet onglet et cliquez sur Suivant :
Lancez la création de votre rôle personnalisé :
Etape II : Création d’un nouveau rôle RBAC
Une fois le nouveau rôle créé, il ne nous reste qu’à assigner le service Azure Virtual Desktop à celui-ci. Cela s’effectue directement sur le périmètre, qu’on souhaite lui assigner.
Cherchez donc ici la Souscription Azure de votre AVD puis cliquez ici :
Utilisez la barre de recherche pour retrouver plus facilement votre rôle personnalisé :
Cliquez ici pour ajouter le service Azure Virtual Desktop :
Utilisez encore une fois la barre de recherche pour retrouver le service AVD sous son ancien nom et Sélectionnez-le :
Cliquez sur Suivant :
Lancez l’Assignation du rôle :
Vérifiez la présence de l’assignation d’AVD sur la souscription, puis cliquez sur le rôle :
Vous retrouvez ici toutes les permissions nécessaire à la fonctionnalité d’Autoscale :
La création d’un plan d’autoscaling AVD apporte les avantages / restrictions suivants :
Le plan d’autoscaling est utilisable pour un ou plusieurs environnement Azure Virtual Desktop, à la condition que ces derniers nécessitent une gestion horaire identique
Ne pas associer le plan d’autoscaling avec d’autres solutions tierces de gestion des ressources Azure
Il n’est pas possible d’associer plusieurs plans d’autoscaling sur un seul environnement AVD
Le plan d’autoscaling est dépendant d’un seul fuseau horaire
Le plan d’autoscaling est configurable sur plusieurs périodes distinctes
Le plan d’autoscaling est opérationnel dès sa configuration terminée
Le plan d’autoscaling ne tient pas compte du « Drain mode » activé sur les VMs si aucun TAG n’est pas renseigné
Le plan d’autoscaling n’est pas en interaction avec la méthode de répartition des utilisateurs configuré sur votre pool d’hôtes
Remplissez le premier onglet avec vos informations de base puis cliquez sur Suivant :
Le champ dédié au TAG exclu permet de « sortir » des VMs du plan d’autoscaling.
L’onglet suivant vous permet de définir quand le plan d’autoscaling s’active pour suivre les besoins de montée / descente en puissance tout au long de la journée.
Dans chaque phase de la planification, autoscale n’éteint les machines virtuelles que lorsqu’un hôte de session n’a plus de sessions actives.
Les valeurs par défaut qui s’affichent lorsque vous créez une planification sont les valeurs suggérées pour les jours de la semaine, mais vous pouvez les modifier selon vos besoins.
Cliquez comme ceci pour ajouter votre première période :
Choisissez un Nom, sélectionnez les Jours adéquats puis cliquez sur Suivant :
L’onglet de charge reprend le fuseau horaire du premier onglet et vous demande de renseigner les champs et de cliquer sur Suivant :
Heure de début : Sélectionnez une heure dans le menu déroulant pour commencer à préparer les VM pour les heures de charge
Algorithme d’équilibrage de charge : Microsoft recommande de choisir l’algorithme Breadth-first. Cela répartira les utilisateurs sur les VM existantes afin de maintenir des temps d’accès rapides
Pourcentage minimum de VM hôtes : Entrez ici le pourcentage d’hôtes de session que vous souhaitez conserver au minimum pendant les heures de montée et de pointe. Par exemple, si vous choisissez 10 % et que votre pool d’hôtes compte 10 hôtes de session, plan d’autoscaling gardera une hôte de session disponible pour les prochaines connexions utilisateur
Seuil de capacité : Saisissez ici le pourcentage d’utilisation du pool d’hôtes qui déclenchera le début des phases de charge et de pic. Par exemple, si vous choisissez 60 % pour un pool d’hôtes pouvant gérer 10 sessions à l’instant T, le plan d’autoscaling n’activera des hôtes supplémentaires que lorsque le pool d’hôtes dépassera 6 sessions
L’onglet de pic de charge reprend aussi le fuseau horaire du premier onglet et vous demande de renseigner les champs puis de cliquer sur Suivant :
Heure de début : Entrez une heure correspondante au moment où votre taux d’utilisation est le plus élevé pendant la journée. Cette heure sera également l’heure de fin de votre phase de charge
Equilibrage de charge : Sélectionnez Breadth-first ou Depth-first. Le premier distribue les nouvelles sessions utilisateur sur toutes les sessions disponibles dans le pool d’hôtes. Le second distribue les nouvelles sessions à l’ôte de session disponible ayant le plus grand nombre de connexions et n’ayant pas encore atteint sa limite de session.
Seuil de capacité : Valeur non modifiable
L’onglet de décharge vous demande de renseigner les mêmes champs que pour ceux des périodes de charge et de pic :
Heure de début
Equilibrage de charge
Pourcentage minimum d’hôtes (%)
Seuil de capacité (%)
Forcer la déconnexion des utilisateurs
Pour finir, l’onglet heures creuses vous demande de renseigner les mêmes champs suivants :
Heure de début
Equilibrage de charge
Seuil de capacité
Cliquez sur Ajouter une fois ce premier planning terminé :
Il est possible d’ajouter une second planning si besoin, mais uniquement sur les autres jours restants :
Sélectionnez-le ou les pools d’hôtes concernés et cliquez sur Suivant :
Renseignez les TAGs et lancez la Création :
Consultez la ressource Azure créée et dédiée au plan d’autoscaling d’Azure Virtual Desktop :
Etape IV : Test de la solution
Avant que mon script soit validé et en place, j’ai pris le soin d’éteindre l’ensemble des VMs (5) de mon pool d’hôtes AVD. Voici donc mon environnement de test :
Limite d’utilisateurs AVD par VM : 2 utilisateurs
Nombre de VMs AVD : 5 VMs
Nombre total de sessions AVD disponibles : 20 sessions, soit 4 par VM
Période A : Hors période du plan d’autoscaling
Période B : Charge : Algorithme : Breadth-first / Min : 25 % / Max : 60 %
Période C : Pic : Algorithme : Depth-first / Max : 60 %
Période D : Décharge : Algorithme : Depth-first / Min : 10 % / Max : 90 %
Période E : Creux : Algorithme : Depth-first / Max : 90 %
Période A – Hors période :
Seule une machine virtuelle s’allume après la validation du script car celui-ci est directement opérationnel :
Période B – Période de charge :
Nous entrons dans la période de charge de mon environnement Azure Virtual Desktop. Ayant paramétré le Pourcentage minimum de VM hôtes à 25% et disposant de 5 VMs AVD , une seconde VM s’allume automatiquement allumée à l’entrée dans cette phase :
25% x 5 (max nbr VMs) = 1 VM
Sans attendre la période de pic, je décide alors de connecter un premier utilisateur AVD, sachant que mon Seuil de capacité est de 60% et que le nombre d’utilisateurs AVD par VM est de 4.
De façon assez logique, aucune machine nouvelle virtuelle ne s’allume. Cela fait sens car deux VMs sont déjà opérationnelles. Je décide donc de connecter un second utilisateur. Même constat au niveau de VMs, toujours à cause de la règle des 60 % :
La répartition des utilisateurs se fait bien selon l’algorithme Breadth-first.
Je connecte donc un 3ème utilisateur AVD et ne constate toujours aucun allumage d’une nouvelle machine virtuelle. En effet la règle des 60 % se calcule sur le nombre de sessions possibles en fonction des hôtes allumées. Ici donc :
60% x 4 (max nbr users) x 2 (VMs allumées) = 4.8 sessions utilisateurs
Je décide donc de continuer mon test et de rajouter un quatrième utilisateur. Toujours le même constat :
On finit avec la connexion du 5ème utilisateur. Cette fois-ci, cet ajout provoquera bien le démarrage d’une nouvelle et 3ème machine virtuelle AVD :
Curieusement, la connexion du 6ème utilisateur se ne retrouve pas sur cette nouvelle machine virtuelle sans utilisateur, mais bien sur la seconde, en contradiction avec l’algorithme de la période de charge :
Afin de tester toutes les caractéristiques de la période de charge, je décide de déconnecter l’ensemble des utilisateurs AVD. Aucune VM ne s’éteindra malgré 0 utilisateur connecté sur AVD :
Période C – Période de pic :
Nous quittons la période de charge pour entrer dans la période de pic d’AVD. Le but ici est de constater le changement d’algorithme Depth-first agissant sur la répartition des utilisateurs.
Aucune session utilisateur AVD n’est ouverte, 2 VMs restent allumées, même sans utilisateur :
Je connecte alors 4 utilisateurs AVD et je ne constate aucun démarrage de machines virtuelles AVD. L’assignation des utilisateurs se fait bien en Depth-first :
On continue avec la connexion du 5ème utilisateur. Cette fois-ci, cet ajout provoquera bien le démarrage d’une nouvelle et 3ème machine virtuelle AVD :
En effet la règle des 60 % se calcule sur le nombre de sessions possibles en fonction des hôtes allumées. Ici donc :
60% x 4 (max nbr users) x 2 (VM allumée) = 4.8 sessions utilisateurs
Je décide de finir en connectant un 6ème utilisateur. L’algorithme Depth-first continue de bien s’appliquer bien comme précédement :
Au final, la période de pic se distingue de la période de charge par la présence systématique d’une machine virtuelle « d’avance », vide d’utilisateurs pour encaisser leur arrivée massive.
D’ailleurs, la déconnexion de l’ensemble des utilisateurs AVD nous ramène à deux machines virtuelles allumées :
Période D : Période de décharge :
Nous continuons l’analyse du plan d’autoscaling avec la période de décharge de mon environnement AVD. Aucune session AVD n’est active à ce moment précis. Comme la période de charge, seule une seule VM reste allumée :
Comme à chaque période, je connecte alors 3 utilisateurs AVD et je ne constate aucun démarrage de machines virtuelles AVD. L’assignation des utilisateurs se fait toujours en Depth-first :
Quand je connecte le 4ème utilisateur, je constate bien le démarrage d’une seconde machine virtuelle :
En effet la règle des 90 % se calcule sur le nombre de sessions possibles en fonction des hôtes allumées. Ici donc :
90% x 4 (max nbr users) x 1 (VM allumée) = 3.6 sessions utilisateurs
Dès que je connecte les utilisateurs 5, 6 et 7, aucune nouvelle machine virtuelle ne s’allume :
Dès que j’arrive à l’utilisateur 8, les choses changent :
Cela s’explique encore par la règle des 90% ci-dessous :
90% x 4 (max nbr users) x 2 (VMs allumées) = 7.2 sessions utilisateurs
A noter que l’inactivité des utilisateurs AVD provoque le message d’alerte suivant :
Ce chrono et le message indiqué ici est paramétré dans le plan d’autoscaling.
D’ailleurs, la déconnexion de l’ensemble des utilisateurs AVD nous ramène à une machine virtuelle allumée :
Période E : Période de creux :
Nous sommes maintenant dans la dernière période, appelée aussi période creuse. Le but de celle-ci est de fonctionner en économie maximale. Notre point de départ est donc une seule session AVD d’ouverte et donc une seule machine virtuelle reste active :
On recommence donc par connecter 3 utilisateurs Azure Virtual Desktop. Aucune autre machine virtuelle ne s’allume :
90% x 4 (max nbr users) x 1 (VM allumée) = 3.6 sessions utilisateurs
De ce fait, la connexion du 4ème utilisateur ajoute une seconde machine virtuelle :
On continue par connecter les utilisateurs 5, 6 et 7. Aucun changement au niveau du nombre de VMs :
En effet et comme pour le cas du 4ème utilisateur, la règle des 90% qui s’applique ici n’est réalisée que si le nombre d’utilisateurs connectés dépasse l’entier supérieur :
90% x 4 (max nbr users) x 2 (VMs allumées) = 7.2 sessions utilisateurs
La connexion du 8ème utilisateur vérifie et valide cette théorie :
Pour finir la déconnexion de tous les utilisateurs entraîne l’arrêt des machines virtuelles AVD allumées, sauf une :
Fonctionnalités et annexes
Modification
Le plan d’autoscaling est pleinement modifiable après sa création en cliquant ici :
Désactivation
Si votre pool d’hôtes a besoin de repasser en fonctionnement manuel, rien de plus simple par la désactivation temporaire du plan d’autoscaling :
Sauvegarde des logs
Comme un grand nombre de ressources Azure, vous pouvez sauvegarder les logs pour une analyse plus fine :
Dans mon cas, je fais le choix d’utiliser Log Analytics Workspace :
Erreur rencontrées
Au fil de mes différents tests, j’ai reçu une ou deux fois des messages d’erreur lors de la connexion d’un nouvel utilisateur sur une machine virtuelle fraîchement démarrée.
Un nouvel essai de connexion a résolu le souci à chaque fois.
Conclusion
Disons-le tout de suite, cette fonctionnalité était déjà disponible depuis plusieurs mois via une la solution script proposée par Microsoft et basée sur Azure Logic Apps.
La nouvelle solution choisie par Microsoft d’intégrer une fonctionnalité d’autoscaling dans Azure Virtual Desktop est riche de sens et est plus que bienvenue. Pour ma part je trouve qu’elle remplace la fonctionnalité Démarrage des VMs à la demande, déjà existante mais qui ne permettait pas de tenir des plannings de charges et de décharges.
Malgré tout, le plan d’autoscaling manque encore de clarté sur son fonctionnement dans le besoin de démarrage de machines virtuelles. Je me suis en effet retrouvé à plusieurs reprises avec plusieurs VMs allumées malgré qu’elles soient vides d’utilisateurs.
Pour finir, un aperçu graphique du mode et des indices de charges actuels aurait été apprécié.
C’est ici que Nerdio intervient. Nerdio Manager est une solution disponible sur la marketplace d’Azure, qui va vous simplifier la gestion de votre environnement AVD. Voici une vidéo sur le sujet part le CEO de Nerdio, Vadim Vladimirskiy :
La nombre de vidéos disponibles concernant AVD sur leur chaîne Youtube est impressionnant !
Le portail Azure apporte en effet une grande facilité de déploiement d’un environnement Azure Virtual Desktop. Mais tout cela devient assez lourd quand on doit manager la solution durant toute sa période d’exploitation.
Alors imaginez avec plusieurs centaines d’utilisateurs sur plusieurs pools d’hôtes …
Comme vous allez le voir une fois en place, Nerdio propose de simplifier et d’automatiser les opérations courantes sur l’environnement AVD. On pourra gérer les images OS, les cycles de mise à jour, optimiser les ressources Azure selon les besoins et les pics de charge, et bien d’autres encore…
Dans ce premier article sur Nerdio, nous allons nous occuper ici de l’installation de la solution sur votre environnement Azure.
Etape 0 : Rappel des prérequis
Comme pour tout déploiement dans Azure, des prérequis sont nécessaires :
Un tenant Microsoft (AAD)
Des licences comprenant Windows 10 Entreprise pour vos utilisateurs AVD
Une souscription Azure active
Un domaine Active Directory Domain Services (AD DS)
Un espace de stockage sur Azure pour les profils utilisateurs via FSLogix, provenant d’un serveur de fichiers ou d’un compte de stockage Azure + partage de fichier
Si un des points listés est absent de votre environnement, pas de panique, Vadim vous explique tout ici :
Au final, Nerdio se focalise avant tout sur les composants Azure Virtual Desktop, afin de pouvoir l’intégrer sans difficulté dans un grand nombre d’environnements existants.
Etape I : Déploiement de la solution
Tout commence donc depuis la marketplace. Avant de pouvoir jouer avec Nerdio, il faut en effet commencer à déployer les premières ressources Azure.
Cliquez ci-dessous pour créer votre Nerdio :
Tapez Nerdio dans la barre de recherche et sélectionnez Nerdio Manager for Enterprise :
Créez un nouveau groupe de ressources et choisissez la localisation qui vous convient :
Une fois la validation passée, lancez la création :
Une fois le déploiement terminé, cliquez sur Outputs pour récupérer l’URL de votre application web Nerdio :
En effet, le groupe de ressources créé par Nerdio a généré plusieurs ressources dont une application web :
Ouvrez cette URL dans un nouvel onglet de votre navigateur Internet :
Comme indiqué sur cette page web, vous avez déjà déployé les composants nécessaires à Nerdio. Maintenant, Nerdio va avoir besoin de s’installer.
Pour cela, suivez les indications en ouvrant Azure Cloud Shell avec un compte disposant du rôle d’administrateur global de votre tenant, mais aussi d’un rôle de propriétaire sur la souscription Azure :
Qu’est-ce qu’Azure Cloud Shell ?
Azure Cloud Shell est un interpréteur de commandes interactif, authentifié et accessible par navigateur qui permet de gérer les ressources Azure. Il vous donne la possibilité de choisir l’expérience d’interpréteur de commandes la plus adaptée à votre façon de travailler, qu’il s’agisse de Bash ou de PowerShell.
Lors de l’ouverture de ce nouvel onglet, Azure Cloud Shell vous demandera éventuellement de créer ou de rattacher à un compte de stockage + partage de fichier pour stocker les logs :
Azure Cloud Shell va vous permettre d’exécuter des commandes en PowerShell ou en Azure CLI. Restez en PowerShell et coller le script donné sur la page web Nerdio :
Script correctement terminé après plusieurs minutes.
Une fois le script terminé, vous pouvez retourner sur la page web Nerdio et rafraîchir. Si vous n’avez pas conservé cette page, pas de panique ! Vous pouvez la retrouver comme ceci :
Retournez sur le groupe de ressources créé par l’application Nerdio, puis cliquez sur le service d’application :
Copiez l’URL de l’application :
Collez l’URL dans un nouvel onglet de votre navigateur :
Pour que Nerdio puisse fonctionner, vous allez devoir le configurer sur votre environnement actuel. Voici, étape par étape, les points à paramétrer :
Les informations du tenant et de la souscription Azure sont déjà renseignés et donc non modifiable :
Ensuite, enregistrez votre application auprès des serveurs Nerdio :
Un environnement Azure Virtual Desktop nécessite aussi un contrôleur de domaine dans la majorité des scénarios. Une gestion via Nerdio n’échappe pas à cette règle et demande alors le réseau virtuel où se trouve l’AD et FSLogix :
Le menu déroulant propose automatiquement les ressources Azure se trouvant dans la même souscription que Nerdio. Cliquez sur OK pour continuer la configuration :
Nerdio vous demande de spécifier un groupe de ressources pour Azure Virtual Desktop. Il propose par défaut le même que celui utilisé pour son installation, mais reste modifiable :
Un conseil, créez un groupe de ressources dissocié pour les ressources AVD afin de gagner en clarté. Retournez alors sur votre premier onglet (Portail Azure) pour créer le groupe de ressources AVD.
Une fois créé, revenez sur la page de configuration.
Cliquez sur le groupe de ressources et changez-le par votre nouveau groupe, puis cliquez sur OK :
Le paramètre suivant concerne Active Directory. Nerdio a besoin de connaître plusieurs paramètres pour connecter les machines virtuelles AVD au domaine :
Directory : Choisissez selon votre annuaire entre Active Directory ou Azure AD DS
AD Domain : Spécifiez le domaine Active Directory au format FQDN pour les machines virtuelles hôtes de session à rejoindre
AD Username : Spécifiez un utilisateur admin au format FQDN avec l’autorisation de créer des objets « ordinateurs«
AD Password : Mot de passe du compte admin
Organisation Unit : Spécifiez l’unité d’organisation (OU) au format DN où toutes les machines virtuelles hôtes de session seront créées par défaut
Une fois les champs renseignés, cliquez sur OK :
Le compte de stockage est utilisé pour stocker les profils via FSLogix. Ce dernier doit exister au préalable, comme pour le partage de fichier, qui doit être joint au domaine AD renseigné plus haut :
Plusieurs options possibles sur cet écran :
Vous pouvez passer la configuration du compte de stockage pour y revenir plus tard si nécessaire
Vous pouvez activer la fonction Cloud Cache de FSLogix. Cela permet de conserver sur le profil utilisateur sur plusieurs compte de stockage Azure, hébergés dans différentes régions pour augmenter sa résiliance.
Cliquez sur OK une fois les champs renseignés :
Le portail de gestion Nerdio offre aussi la possibilité de gérer des machines Windows 365. Cela s’avère pratique pour centraliser la gestion des bureaux à distance dans une seule console.
Pour cela, vous devez autoriser l’application Nerdio sur votre environnement. Cliquez sur OK si vous êtes d’accord :
Enfin, choisissez le modèle de gestion AVD au sein de Nerdio. Prenez ici Spring 2020 Update -ARM (GA) et cliquez sur Done :
Avant de pouvoir laisser Nerdio procéder, il faut lui donner un consentement de l’administrateur global. Cliquez sur le lien donné dans le nom du domaine :
Saisissez les identifiants appropriés pour vous identifier:
La liste d’autorisations est assez longue. Prenez le temps de la regarder et acceptez si vous êtes d’accord :
Un message d’information apparaît alors pour vous confirmer le succès de l’opération :
Fermez l’onglet et retournez sur l’onglet de configuration Nerdio pour cocher la case et cliquez sur OK :
Le processus vous emmène alors directement sur le portail de management Nerdio :
Vous allez maintenant pouvoir créer votre premier environnement Azure Virtual Desktop. Nerdio dispose d’un grand nombre de personnalisations. Nous ne ferons que les opérations de base dans ce premier article. D’autres articles suivront pour des sujets précis.
Etape II : Création d’un environnement Azure Virtual Desktop
Vous voilà sur votre portail de gestion Nerdio. Indispensable dans toute structure AVD, l’espace de travail est un composant créé par Nerdio. Cliquez sur Workspaces, puis Add Workspace :
Renseignez les options de votre espace de travail et cliquez sur OK :
Chaque tâche Nerdio est visible dans l’historique, très précis avec ses statuts actualisés automatiquement :
Faites un tour dans votre portail Azure pour constater la création de la première ressource :
Cliquez votre espace de travail Nerdio pour le configurer :
Cliquez sur Static host pools dans le sous-menu à gauche, puis sur Add static host pool :
Renseignez les champs de votre pool d’hôtes AVD et cliquez sur OK. Voici mes options :
Desktop Experience : vous permet de choisir entre un environnement mono-utilisateur ou multi-utilisateurs
Répertoire : reprend par défaut l’AD DS ou l’Azure AD DS renseigné pendant la configuration Nerdio
FSLogix : reprend par défaut le compte de stockage utilisé pour FSLogix renseigné
Initial host count : nombre initial de machine virtuelles AVD créées avec le pool d’hôtes
Name Préfix : préfixe du nom utilisé pour la création des machines virtuelles AVD
Desktop image : propose une liste d’images Windows 10/11 disponibles sur Azure, mais aussi des images personnalisées et créées dans le menu Desktop image de Nerdio
VM size : offre plusieurs choix de puissance pour les VMs AVD
OS Disk : Taille et puissance du disque OS installé sur chaque VM AVD
Resource group : groupe de ressources Azure pour la création des VMs AVD et du pool d’hôtes
Quick assign : Annuaire des groupes et des utilisateurs d’Azure AD
Une fois la création du pool d’hôtes lancée, vous pouvez suivre toutes les étapes grâce au système de tâches Nerdio :
Après que toutes les tâches sont terminées, ouvrez un portail Azure pour constater les créations dans le groupe de ressources AVD :
Cliquez sur le pool d’hôtes créé par Nerdio et constatez la présence de VMs disponibles aux utilisateurs AVD :
Pour tester la solution, ouvrez un navigateur en mode privé pour vous rendre sur la page d’accueil AVD :
aka.ms/wvdarmweb
Utilisez les identifiants d’un utilisateur faisant parti du groupe AVD assigné lors de la création sur Nerdio et cliquez sur OK :
Recherchez le bon espace de travail créé par Nerdio et cliquez sur l’icône RDP :
Saisissez une nouvelle fois le mot de passe de l’utilisateur AVD et cliquez sur Submit :
Vous voilà enfin sur votre bureau Windows 11 !
Faites un tour sur votre compte de stockage FSLogix via votre portail Azure :
Cliquez sur le partage de fichiers correspond à celui renseigné dans la configuration Nerdio :
Constatez la présence d’un dossier créé par FSLogix pour le stockage du profil utilisateur au format VHDX :
Etape III : Suppression de l’environnement de test AVD
Dans le cadre d’un environnement de test, vous pouvez également supprimer très facilement les composants Azure créés par Nerdio.
Commencez par les machines virtuelles AVD :
Continuez par le pool d’hôtes :
Et finissez par supprimer l’espace de travail :
Conclusion
Au final la mise en place d’un environnement de test pour Azure Virtual Desktop via Nerdio a été très simple et très facile. Plusieurs remarques à ce sujet :
Nerdio ne vous dispense pas de mettre en place les prérequis propres à un environnement AVD
Le présent article ne montre pas toutes les fonctionnalités très utiles et présentes dans la console Nerdio. Plusieurs articles suivront par la suite
Quel est le coût de Nerdio ?
La société propose plusieurs modèles de licence après le premier mois d’essai gratuit :
Nerdio for Managed Service Providers (MSPs)
Nerdio manager for Enterprise :
A cela s’ajoute aussi le coût des ressources Azure déployées par Nerdio, dont voici les estimations au bout de quelques jours :
En conclusion, la solution s’avère assez prometteuse sur la gestion des environnements d’Azure Virtual Desktop par un grand nombre d’automatismes ou de customisations, à travers un seul et unique portail.
Comme à chaque fois Dean Ceola, de la Cloud Academy, a également fait une très bonne vidéo juste ici :
Enfin et comme toujours, pensez à partager votre propre expérience dans les commentaires ????