AVD : RDP Shortpath sur un réseau public

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 :

Merci à Dean de l’Azure Academy.

Voici également un schéma montrant la « simplicité évidente » à utiliser cette fonctionnalité réseau :

L’article de Microsoft expliquait déjà alors la configuration à effectuer sur les machines virtuelles dans le cadre d’un réseau non public.

Quoi de neuf en 2022 ?

Dans une volonté d’amélioration constante, Microsoft continue sur cette voie pour élargir la fonctionnalité RDP Shortpath aux réseaux publics. En effet, cette fonctionnalité était initialement restreinte à des liaisons établies sur des réseaux privées (VPN, ExpressRoute, …)

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 AVD manuellement

Fermez la session utilisateur et retournez sur une machine virtuelle via votre portail Azure. Exécutez la commande suivante comme ceci

REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations" /v ICEControl /t REG_DWORD  /d 2 /f

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à :

SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations

Renseignez la valeur suivante

ICEControl

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 !

Azure VPN couplé à Azure MFA

De temps à autre, je suis sollicité pour valider différentes combinaisons possibles entre des composants du Cloud Microsoft. Je trouvais donc intéressant de partager avec vous l’une d’entre elles.

Dans cet article, nous allons donc déployer une connexion VPN Point à Site sur un réseau Azure, et sécurisée par une authentification multifacteur (MFA).

Etape 0 : Rappel des prérequis

Comme pour beaucoup de mes articles Azure, des prérequis sont nécessaires pour réaliser cette démontration :

  • Un tenant Microsoft
  • Une souscription Azure valide
  • Un réseau virtuel existant sur Azure
  • Une ou des machines virtuelles déployées sur ce réseau (pour les tests)

Comme le montre la copie d’écran ci-dessous, quelques ressources sont déjà en place sur ma souscription Azure. Il s’agit essentiellement de ressources dédiées aux tests finaux.

Etape 1 : Déploiement de la passerelle VPN

Pour tester notre ensemble, nous devons mettre en place une passerelle VPN sur notre réseau virtuel Azure. Pour cela, Azure propose une ressource tout à fait adaptée à ce type de connexion.

Vous la retrouverez en utilisant la barre de recherche du portail

Cliquez sur Créer pour commencer le processus de création

Prenez votre temps pour renseigner tous les champs, en fonction de votre situation

Ne pas utiliser le SKU pour ce type de test.
Vous ne serez pas en mesure d’utiliser une authentification Azure AD avec celui-ci

Info : La copie d’écran ci-dessous montre l’absence d’authentification Azure AD possible lors de l’utilisation d’une passerelle VPN en SKU Basic

Comme pour toute liaison VPN, il est nécessaire de créer une adresse IP publique

Un accès VPN est par essence même une connexion sécurisé sur un réseau non sécurisé (internet).

Une fois terminé, cliquez sur Valider et créer

Une dernière vérification, puis lancez la création de la passerelle VPN.

Ce processus est assez long puisqu’Azure déploie des machines virtuelles managées pour produire la connexion VPN. Comptez environ 30 minutes pour que le déploiement se termine.

Nous allons profiter de ce temps pour créer une second machine virtuelle, représentant une ressource locale utilisant cette passerelle VPN.

Etape 2 : Déploiement d’une seconde machine virtuelle pour jouer le rôle du client de la connexion VPN Point à Site

Comme annoncé juste avant, cette seconde machine ne sera évidemment pas sur le même réseau virtuel que la première.

Créez un second réseau virtuel dans une autre région Azure pour bien les identifier

Continuez avec l’adresse réseau et le sous-réseau

Azure propose par défaut un adressage réseau différent du premier réseau virtuel.
Il reste modifiable.

Lancez la création une fois tous les champs vérifiés

La création d’un réseau virtuel Azure est généralement très rapide

Continuiez avec le déploiement d’une nouvelle machine virtuelle sur ce réseau virtuel local

N’oubliez pas de renseigner le compte d’administrateur local et cochez la case concernant les droits d’utilisation de licence Windows 10

Vérifiez aussi que l’onglet réseau reprend le nouveau réseau virtuel local nouvelle créé, ainsi qu’une nouvelle adresse IP publique, utilisée pour s’y connecter en RDP

Décochez l’arrêt automatique de la machine virtuelle dans l’onglet suivant

Vérifiez une dernière fois les champs et lancez la création de la machine virtuelle

Quelques minutes plus tard, la machine virtuelle est bien créée. Cliquez ici pour rentrer sur la ressource

Démarrer une première connexion RDP sur celle-ci

Renseignez les identifiants indiqués lors de la création de la machine virtuelle

Vérifiez la configuration IP de cette machine locale avec la ligne de commande suivante

Testez le refus de connexion depuis cette machine à sur votre première machine Azure

Retournez sur votre portail Azure et attendez la création de votre passerelle VPN

Un contrôle dans le réseau virtuel Azure affiche bien un nouveau sous-réseau, dédié à notre passerelle VPN

Etape 3 : Préparation du tenant à la connexion VPN

L’opération qui va suivre nécessite un compte administrateur global. Il va falloir en effet donner des permissions spéciales à notre passerelle VPN pour utiliser l’authentification via Azure AD.

Cliquez sur le lien ci-dessous pour lui donner votre consentement :

https://login.microsoftonline.com/common/oauth2/authorize?client_id=41b23e61-6c1e-4545-b367-cd054e0ed4b4&response_type=code&redirect_uri=https://portal.azure.com&nonce=1234&prompt=admin_consent

Authentifiez-vous avec un compte administrateur global de votre tenant

Autorisez l’application Azure VPN

Une fois cette opération terminée, retournez sur le portail Azure AD pour y récolter plusieurs informations. Depuis la page principale, commencez par noter votre tenant ID

Dans la section des applications d’entreprise, localisez la nouvelle application nommée Azure VPN puis cliquez dessus

Notez l’application ID de cette dernière

Etape 4 : Configuration de la connexion Point à Site de la passerelle VPN

Retournez sur la liste des passerelles VPN d’Azure, puis cliquez dessus

Cliquez sur la configuration Point à Site, puis sur Configurer maintenant

Renseignez tous les champs suivants puis cliquez sur Sauvegarder

  • Adressage réseau : pour attribution d’IP aux périphériques, par exemple 172.16.0.0/24
  • Type de d’authentification désirée : Azure Active Directory
  • Tenant : https://login.microsoftonline.com/{AzureAD TenantID}/
  • Audience : ID de l’application « Azure VPN » Azure AD Enterprise App
  • Issuer : https://sts.windows.net/{AzureAD TenantID}/
Ne pas oubliez le / en fin de chacun des 2 arguments.

Une notification Azure vous confirme le succès ou l’échec de votre configuration Point à Site

Raffraîchissez la page web d’Azure pour être en mesure de télécharger la configuration du client VPN sur votre machine virtuelle de test

Copiez et extrayez l’archive ZIP téléchargée sur la machine virtuelle sur laquelle nous allons installer la connexion VPN

Sur cette même machine, ouvrez Microsoft Store pour y télécharger Azure VPN Client

Lancez le téléchargement d’Azure VPN Client

Inutile de vous authentifier pour continuer le téléchargement

Une fois le téléchargement terminé, lancez l’application Azure VPN Client

Importez la configuration de notre VPN créé sur Azure

Cherchez le fichier azurevpnconfig.xml dans l’archive extraite sur le bureau de notre machine de test

Sauvegarder la configuration issue de ce fichier xml

Etape 5 : Test de la connexion Point à Site de la passerelle VPN

Avant de lancer la connexion VPN, retournez sur la fenêtre de commande et lancez la commande PING suivante.

ping 10.0.0.4 -t

Cette commande lance une demande d’écho de manière ininterrompue vers notre première machine Azure

Retournez sur l’application Azure VPN Client et démarrez la connexion

Renseignez les identifiants d’un utilisateur présent dans Azure AD

Décochez la case et cliquez comme ceci

Le status de la connexion VPN devrait alors passer à Connecté

Contrôler le changement de résultat concernant la commande PING

Si cela n’est pas le cas, il vous faudra vous connecter sur la première machine Azure pour autoriser dans Windows Firewall les requêtes d’écho PING

Une fois la connexion réussie, stoppez la connexion VPN

Constatez l’arrêt de succès de la commande PING

Etape 6 : Implémentation de l’accès conditionnel sur la connexion VPN

Comme indiqué au début de cet article, nous voulons une connexion VPN Point à Site couplée à une authentification multifacteur. Le but étant de renforcer par l’exmple l’accès un réseau d’entreprise au moyen d’une authentification supplémentaire.

Voici une vidéo explicative sur l’authentification multifacteur

Voici une seconde vidéo combinant les effets de la MFA et de l’accès conditionnel

La configuration de l’accès conditionnel se fait depuis Azure AD, cliquez sur le menu Sécurité puis Accès Conditionnel

Créez une nouvelle police d’accès conditionnel

Donnez-lui un nom puis cherchez le ou les utilisateurs de test

Restreignez votre police à l’application d’entreprise créée précédemment : Azure VPN

Exigez l’authentification multifacteur et activez votre police en cliquant sur ON puis sauvegardez

Azure demande quelques minutes avant d’appliquer les modifications faites sur les polices d’accès conditionnel.

Quelques minutes plus tard, retourner sur votre seconde machine et relancez la connexion VPN déjà présente dans l’application Azure VPN Client

La MFA devrait rentrer en ligne en compte. Mon compte de test Azure AD étant insuffisamment paramétré, le message suivant apparaît

Terminez au besoin la procédure d’enrôlement de sécurité pour votre utilisateur de test

Retrouvez bien par la suite la demande MFA pour finaliser la connexion VPN

Une fois celle-ci réussie, la connexion VPN s’établit bien

La commande PING retrouve bien l’accès à ma première machine Azure

Conclusion

Par cet article, nous voyons qu’Azure nous apporte toujours plus de sécurité grâce à la combinaison rapide et facile de différentes mesures de protection. Il est toujours important d’aborder la sécurité sous forme de couches hérmétiques entre elles afin de rendre toujours plus difficile les intrusions informatiques.

Comme à chaque fois, pensez également à partager dans les commentaires vos propres expériences ????

Optimisez votre Azure : 1/4 – Les Coûts

Me revoilà après plusieurs semaines d’absence. Pour vous expliquer simplement, la New Commerce Expérience (NCE) de Microsoft, aussi détaillée dans mon blog sur cet article, nous a beaucoup sollicité chez Tech Data. De plus, j’ai eu la bonne idée de me casser des doigts, ce qui ne m’a pas empêché de travailler, mais m’a demandé quelques efforts pour le clavier. Tout ça pour vous dire que ceux ne sont que des petits soucis ????.

Je suis donc très content de commencer l’écriture d’une nouvelle série d’articles, dédiée l’optimisation de votre environnement Cloud. A travers ces derniers, je souhaite vous parler d’optimisations d’architectures Azure déjà en production sur 4 axes :

  • Coûts : Analyse pure et simple des coûts Azure pour comprendre la répartition des sommes dépensées.
  • Sécurité : Sans rentrer dans les détails maintenant, la sécurité reste toujours un axe d’amélioration constant.
  • SLAs : Mis de côté par moment, cet indice doit être pris en compte lors de l’établissement de services auprès des clients finaux ou lors d’appels d’offre.
  • Performances : Travailler avec les outils de monitoring Azure pour traquer les ressources Azure sous-utilisées, et donc inutilement coûteuses. Mais aussi de manière inverse, mettre en lumière le manque de performances pouvant justifier un changement d’approche.

Je me doute qu’il existe encore d’autres axes, manières ou approches pour retravailler une architecture Cloud. Gardez toujours en tête que toutes les solutions Cloud sont des produits en évolutions constantes ????.

Axe 1 : Les coûts

J’ai choisi cet axe dans mon premier article car c’est pour moi une demande récurrente dans beaucoup de projets Cloud sur lesquels je travaille :

Comment faire la même chose pour moins cher ?

Cette question n’a rien d’idiote ou de contre-productive. Gardez toujours l’esprit ouvert sur l’arrivée de nouveaux services Azure, ou sur la création par Microsoft de nouvelles offres aux grilles tarifaires encore plus attrayantes.

Pour rester dans le concret, mon approche repose simplement sur plusieurs questions :

  • Le projet Azure dispose-t-il d’une estimation de tarif pouvant servir de référence ?
  • Le projet Azure a-t-il fait l’objet d’une phase de preuve de concept (POC) ?
  • Ai-je créé les bonnes ressources pour les bons besoins ?
  • L’analyse des coûts est-elle faite de manière périodique ?
  • Ai-je consulté récemment Azure Advisor ?
  • Les ressources Azure en place ont-elles été optimisées contractuellement ?

Le projet Azure dispose-t-il d’une estimation de tarif pouvant servir de référence ?

Pas de mystère, une maison se construit avec un plan et un budget des matériaux nécessaires à sa construction. Microsoft propose l’outil de calcul, Azure Pricing Calculator, pour établir au plus près les coûts d’une infrastructure Azure. Gardons en tête qu’il ne s’agit que d’une estimation de tarif, basée sur les données entrées par l’utilisateur.

Pour rappel, cet outil vous permet de calculer le coûts via la mise à disposition d’un catalogue proposant un grand nombre de ressources Azure, elles-mêmes paramétrables.

Tous les projets sur Azure devraient passer par cette étape. L’idée n’est pas de viser la perfection tarifaire ou encore d’afficher le tarif le plus attractif possible, mais bien d’en faire sortir un ou plusieurs scénarios pour ensuite les comparer à d’autres méthodes d’architecture.

Dans le cas d’une analyse de coûts sur une architecture Azure déjà en place, je trouve pertinent de comparer l’offre initiale faite sur Azure Pricing Calculator avec la réalité de consommation de la souscription Azure.

Le projet Azure a-t-il fait l’objet d’une phase de preuve de concept (POC) ?

Après l’estimation des coûts et avant la mise en production, une phase de preuve de concept vous permet aussi d’aborder l’aspect financier. Le POC est principalement vu comme une étape de validation de faisabilité technique. Mais elle apporte aussi des indices de viabilité économique de l’architecture.

A ce titre, Microsoft recommande vivement cette étape pour l’estimation de certains coûts variables (bande passante sortante, transactions de stockage, volume de stockage ( sauvegardes ou journaux et métriques, …)). Cette étape est donc une composante dans le processus de calibrage financier.

Doit-on forcément dépenser de l’argent pour un POC Azure ?

Pas nécessairement. Microsoft propose plusieurs offres : des crédits Azure ou encore des conseils d’ingénieurs Microsoft Cloud. De nombreux programmes Azure propose une intégration de nouveaux projets Cloud sous différentes formes. Voici quelques exemples :

Microsoft for Startups : conçu pour vous aider à vous développer à votre propre rythme, vous pouvez débloquer jusqu’à 150 000 $ de crédits et du temps supplémentaire pour construire au fur et à mesure de la croissance de votre entreprise.

FastTrack for Azure : programme d’assistance technique qui aide à concevoir et à déployer rapidement et efficacement des solutions cloud. Il comprend des conseils personnalisés d’ingénieurs Azure pour fournir des pratiques éprouvées et des conseils en matière d’architecture.

Je pense aussi au statut partenaire, gold ou silver chez Microsoft. Ce dernier propose lui aussi de disposer de conseils d’ingénieurs avant-ventes pour choisir les bonnes ressources.

A-t-on créé les bonnes ressources pour les bons besoins ?

Cette question est déjà présente durant la phase de POC, mais elle doit être périodiquement reposée pendant toutes les phases de vie de l’architecture :

  • Une ressource créée temporairement est-elle bien systématiquement détruite ?
  • Les opérations de tests sont bien cataloguées comme telles et retirées des services Azure après coup ?
  • La région Azure utilisée est-elle en adéquation avec le projet et aux plus proches des utilisateurs finaux ?

Beaucoup de questions du même genre existent. La solution simple à ces questions est et reste la pratique de l’inventaire périodique des ressources Azure. Au risque d’en décevoir certains, je recommande simplement de dérouler la liste depuis le portail Azure afin de toutes les passer en revue.

Afin rendre cet exercice le plus rapide et efficace possible, le maintien à jour d’une cartographie facilite grandement l’analyse :

L’analyse des coûts est-elle faite de manière périodique ?

Comme l’inventaire des ressources Azure, son intérêt repose également sur sa récurrence. Mettre des alertes de coûts Azure est une bonne chose, mais elles ne sont déclenchées qu’après coup et ont toujours un risque d’être ignorées. Microsoft propose là encore un outil gratuit, intégré et très facile d’utilisation : Azure Cost Management.

Gardez en tête que les consommations réalisées sont affichées avec 24 heures de décalage. Malgré cela, l’outil propose des affichages réalisant des synthèses et des vues granulaires pour comprendre tous les coûts.

L’analyse des mois affiche la linéarité ou non des dépenses.
Comme dans mon exemple, l’utilisation des étiquettes est fort pratique dans cet outil.

Envie d’en savoir plus sur ses fonctionnalités ?

Merci Adam ????.
Rapport hebdomadaire de la consommation Azure reçu par mail.

Ai-je consulté récemment Azure Advisor ?

Voici une définition précise du service :

Azure Advisor est un conseiller personnalisé basé dans le cloud qui décrit les meilleures pratiques à suivre pour optimiser vos déploiements Azure. Il analyse votre télémétrie de configuration et d’utilisation des ressources, puis recommande des solutions qui peuvent vous aider à améliorer la rentabilité, les performances, la fiabilité (anciennement appelée haute disponibilité) et la sécurité de vos ressources Azure.

Microsoft Doc

Azure Advisor est le principal outil disponible sur Azure qui regroupe les axes cités au début de cet article. Pas besoin de connaissances précises pour commencer l’optimisation via cet outil car il analyse l’architecture pour vous !

Un clic dans la partie Coût vous affiche des recommandations actualisées régulièrement :

La seconde ligne de ce tableau nous montre une analyse télémétrique de l’utilisation CPU de la machine virtuelle. Autrement dit, Microsoft lui-même vous conseiller de prendre une taille de machine virtuelle plus petite et donc moins chère vous.

Pourquoi demander à un client de prendre un produit financièrement moins intéressant ?

Pour garantir des revenus stables et sur une plus longue période. Cet outil est disponible dans le menu de gauche des raccourcis Azure et doit être, comme le Cost Management, visité régulièrement.

Les ressources Azure en place ont-elles été optimisées contractuellement ?

Quel est le fond de ma pensée derrière cette phrase ?

Je veux bien sûr parler d’engagement. Saviez-vous qu’il vous est possible de vous engager pour des ressources Azure sur plusieurs années ? Le cloud est souvent perçu comme une dépense IT à la demande (Capex vs Opex) :

Mais Azure propose aussi des formules beaucoup plus avantageuses si l’on envisage la durée de son besoin sur une période plus longue.

Le tableau ci-dessus affiche des instances réservées pour des machines virtuelles. Comment fonctionne une instance réservée ? Il faut simplement voir celle-ci comme une place de parking, louée pour un ou trois ans chez Microsoft :

Comme le montre ce schéma, la taille de l’instance réservée doit être en relation avec la taille de la ressources Azure.

Cet engagement n’est pas uniquement disponible que pour les machines virtuelles. Microsoft propose cette formule pour beaucoup d’autres services Azure. Le rabais de réservation s’applique automatiquement à l’utilisation des ressources qui correspondent aux instances réservées.

L’engagement n’est pas uniquement présent pour les ressources Azure. Par exemple, les licences Microsoft sont aussi optimisables sur Azure. Je pense avant tout à Windows Server ou encore à SQL Server.

Qu’est-ce qu’Azure Hybrid Benefit ?

Azure Hybrid Benefit est un avantage en matière de licences qui vous permet de réduire considérablement les coûts d’exécution de vos charges de travail dans le cloud. Son fonctionnement consiste à vous autoriser à utiliser vos licences Windows Server et SQL Server compatibles sur Azure.

Il est donc possible d’acheter des licences en souscriptions annuelles ou pluriannuelles. Les économies représentent des sommes non négligeables.

Conclusion

Je suis content de vous parler de l’aspect financier des architectures Azure. Cela représente une partie non négligeable de mon travail au quotidien.

Comme je l’ai expliqué dans cet article, l’aspect Coût est systématiquement abordé durant toutes les phases d’un projet IT. Et il n’est pas rare de changer de stratégie en fonction de l’évolution de ce dernier.

Dans mon prochain article de la série Optimisez votre Azure, nous nous intéressons plus aux basiques de la sécurité ????.

Microsoft New Commerce Experience (NCE)

Aujourd’hui, je m’écarte un peu d’Azure pour vous parler d’un changement global chez Microsoft, appelé New Commerce Expérience et impactant la vente de leurs services Cloud. Le but de cet article est de vous rappeler quelques notions clefs et les principaux impacts de NCE.

Microsoft a introduit une nouvelle expérience de commerce pour les clients achetant et gérant leurs licences Cloud dans le cadre de son programme CSP (Cloud Solution Provider). Il s’agit d’une démarche que Microsoft déjà a commencée en 2019, et est toujours en cours en ce début d’année 2022.

Qu’est-ce que le programme CSP ?

Pour faire simple, Microsoft travaille de différentes manières pour vendre leurs produits aux clients finaux. Dans le schéma ci-dessous, on retrouve une liste de programmes existants pour acquérir des droits de licence sur des produits Microsoft :

Le programme CSP est conçu pour permettre aux partenaires de revendre les services Cloud de Microsoft. L’objectif du programme de CSP est donc de créer un modèle de revendeurs pour fournir des services aux petites et moyennes entreprises (PME). Deux modèles sont possibles via le programme CSP : indirect ou indirect.

Les partenaires directs gèrent eux-mêmes tous les aspects de la relation avec le client
Dans le modèle indirect, les fournisseurs indirects soutiennent les revendeurs indirects qui, à leur tour, vendent, et soutiennent les clients.

Qu’est-ce que la New Commerce Experience ?

L’image affichée plus haut met en évidence la complexité et la multitude de scénarios possibles pour acheter des licences de produits Microsoft. Il était donc temps de simplifier cette approche, comme le veut la New Commerce Experience :

Cette simplification d’achat met aussi en avant l’utilisation d’une seule plateforme centrale pour les partenaires Microsoft, le Partner Center :

Pourquoi parler de NCE maintenant ?

Let's simplify the changes in the new commerce experience - US Partner  Community Blog - Microsoft

Comme indiqué dans l’image ci-dessus, Microsoft a commencé le lancement d’offres NCE par Azure, et a rajouté l’achat de licences perpétuelles dans le programme CSP. Dans le cas d’Azure, la bascule vers NCE (appelé aussi Azure Plan) a permis, par exemple, l’activation du Cost Management :

Microsoft s’attaque donc maintenant aux licences associées aux utilisateurs :

  • Microsoft 365
  • Dynamics 365
  • Power Platform
  • Windows 365

Tandis que le bouleversement de la NCE fut mineur pour les utilisateurs d’Azure, cela est moins vrai pour Modern Work Place. En effet les règles du jeu des licences utilisateurs changent grandement avec NCE. Nous en reparlerons un peu plus loin dans cette article.

Quel est le planning NCE pour Modern Work Place ?

Le programme CSP repose donc sur le planning NCE suivant pour 2022. Comme on peut le voir Microsoft concentre ses évolutions sur 3 axes :

  • Mise en place de promotions incitatives NCE jusqu’à juin 2022
  • Renforcement des règles liées à un achat NCE en mars et juillet 2022
  • Réduction des marges arrières pour les souscriptions non transférées sur NCE en 2023

Pourquoi Microsoft augmente ses prix ?

Depuis le lancement de 365, Microsoft a rajouté plus de 24 applications (Microsoft Teams, Power Apps, Power BI, Power Automate, Stream, Planner, Visio, OneDrive, Yammer et Whiteboard …), mais aussi un nombre incalculable de nouvelles fonctionnalités.

Le 1er mars 2022, Microsoft appliquera donc une hausse de prix sur les licences suivantes :

  • Microsoft 365 Business Basic (de 5 à 6 $)
  • Microsoft 365 Business Premium (de 20 à 22 $)
  • Office 365 E1 (de 8 à 10 $)
  • Office 365 E3 (de 20 à 23 $)
  • Office 365 E5 (de 35 à 38 $)
  • Microsoft 365 E3 (de 32 à 36 $)

Nous n’avons pas encore les chiffres précis en Euros ou en CHF, je ne manquerai pas de les rajouter dès que cela sera disponible.

Quelle est la meilleure période pour migrer les licences vers NCE ?

Maintenant ! Aucunement l’idée de vous faire faire un achat précipité, mais plusieurs arguments me permettent d’en arriver à cette conclusion :

  • La promotion NCE sur les différents engagements (mensuel / annuel) s’arrête au 1er juillet 2022
  • Le blocage du prix sur la période d’engagement permet de reporter la hausse de certains produits 365 prévue pour mars 2022
  • Les différents verrous prévus par Microsoft sur les achats en 2022 risque de compliquer la gestion et le renouvellement des licences en fonction de l’évolution des besoins.

Tout est donc rose avec NCE ?

Historiquement :

Dans le cadre du programme CSP, Microsoft offrait aux partenaires une très grande souplesse dans la gestion des licences durant la période d’engagement. Cette flexibilité était très appréciée car le provisionnement des licences utilisateurs suivait alors de près l’évolution des besoins du client.

Avec NCE :

Microsoft laisse une fenêtre de 72 heures après l’achat pour annuler un abonnement NCE. Si l’abonnement n’est pas annulé dans cette fenêtre de 72 heures, le client devra payer le reste de la durée de l’abonnement. Autrement dit : un mois, un an, ou même 3 ans !

Si un client souhaite réduire le nombre de licences, l’abonnement doit être modifié dans les 72 heures de la date d’anniversaire. Si cette fenêtre est dépassée, la modification à la baisse ne sera prise en compte qu’au prochain anniversaire. Autrement dit : le mois prochain, l’année prochaine, ou même dans 3 ans !

En revanche, les clients peuvent toujours augmenter le nombre de sièges et changer la licence pour une autre de niveau supérieur, même après cette période de 72 heures.

On serait alors tenté de prendre toutes les licences sur un abonnement mensuel pour plus de liberté. Ce choix logique est possible, mais le prix pour cet engagement de courte durée est 20% plus cher que pour le même avec un engagement annuel.

Dernière précision, un engagement annuel ou pluriannuel est payable en une seule fois au début de l’engagement, ou tous les mois de ladite période d’engagement.

Peut-on prendre des licences avec engagement mensuel ET annuel ?

C’est aussi possible ! Et cela est même fortement conseillé dans certains secteurs, avec une saisonnalité des besoins informatiques.

Que faut-il retenir sur NCE ?

Voici les principaux points à garder en tête pour bien comprendre les enjeux de NCE :

  • Ce nouveau mode d’achat licence est déjà en place depuis le 10 janvier de cette année
  • La bascule des licences vers NCE est transparente pour les utilisateurs car ce changement n’impacte pas l’assignation
  • La durée d’engagement est un maintenant point majeur dans la décision d’achat. Tant pour le client, que pour le partenaire qui fournit le service
  • Toute baisse du nombre ou changement de licences NCE n’est possible qu’aux dates anniversaires
  • Les partenaires restent redevables des licences NCE prises auprès de Microsoft, même si leurs clients ne sont plus en capacité d’honorer les paiements
  • Les licences mensuelles sont fortement conseillées pour les besoins ponctuels
  • La fenêtre de 72 heures est la SEULE porte de sortie d’un engagement NCE avant le terme d’engagement

Conclusion

Pas de panique ! Bien que ce changement bouleverse nos habitudes d’achat chez Microsoft, il ne pas oublier que cela est déjà la norme dans le monde des licences par abonnement.

Mon dernier conseil : en tant que partenaire, assurez-vous de communiquer le plus en amont possible avec vos clients, pour que ces derniers considèrent les meilleures options possibles.

Robotisez vos tâches grâce à Power Automate

Depuis quelques temps, je souhaitais écrire un article sur Power Automate. Un récent besoin m’a permis de me remettre sur le sujet, et donc de vous préparer quelque chose. Pour rappel, Power Automate fait partie de la grande famille Power Platform.

Dans cet article, nous allons nous focaliser sur l’automatiseur et faire un essai, étape par étape, de la création d’un flux de travail (workflow) simple.

Qu’est-ce que Power Automate ?

Nous avons tous un ou plusieurs systèmes informatiques pour stocker de la donnée. Dans certains cas, cette donnée ne transite pas de manière automatisée (API, Port d’écoute, …) entre les systèmes. Pour y parvenir, elle nécessite donc un petit coup de pouce grâce à des actions humaines. L’exemple simple est la mise à jour dans de fichiers ou encore le classement de pièces jointes.

Rationalisez les tâches répétitives et les processus sans papier avec Microsoft Power Automate – afin de pouvoir concentrer votre attention là où elle est la plus nécessaire.

Voici le crédo pour utiliser de l’automatiseur par : Microsoft

La raison avancée par Microsoft démontre bien le principal objectif de l’outil : réduire les traitements manuels répétitifs à faible valeur ajoutée.

On s’écarte d’Azure ? Pas tant que ça …

Aucun risque, Power Automate est basé sur Azure Logic Apps. Tous les deux sont des outils d’automatisation de flux :

  • Power Automate offre une expérience conviviale et ciblée au sein d’Office 365, qui permet aux utilisateurs finaux de se lancer facilement une fois qu’une licence appropriée leur a été attribuée.
  • Azure Logic Apps offre la même surface de conception conviviale que Power Automate, avec la possibilité de créer des solutions d’intégration complexes, d’utiliser des outils de développement avancés, DevOps et la surveillance, si nécessaire.

On retrouve donc approximativement les mêmes fonctionnalités. Cela s’explique par le fait que Power Automate est un dérivé d’Azure Logic Apps. Autrement dit, le choix entre les deux outils va se faire selon son orientation métier (utilisateurs / développeur) et le modèle de facturation.

Faut-il être développeur pour Power Automate ?

Comme il est dit juste avant, il n’est pas nécessaire d’être développeur pour commencer à créer son flux sous Power Automate. Eventuellement pour certaines actions très techniques où il faudra effectivement disposer de compétences poussées, ou si un connecteur custom s’avère nécessaire.

Passé ce constat, Microsoft oriente donc son outil Power Automate pour qu’il soit utilisé par des utilisateurs finaux. Autrement dit, les personnes en contact direct avec le besoin et sachant comment y répondre des plus facilement.

Le schéma ci-dessous montre la création d’un flux d’automatisation simple. Sans en rentrer dans les détails, la représentation graphique des évènements facilite grandement l’adoption de l’outil et sa prise en main rapide par une large communauté :

Qu’est qu’un connecteur Power Automate ?

Pour travailler, Power Automate a besoin de connecteurs pour interagir avec la donnée. Power Automate dispose donc à ce jour de plusieurs centaines de connecteurs.

Comme l’indique la documentation Microsoft, un connecteur est un proxy autour d’une API. Concrètement, Power Automate utilise le connecteur pour travailler la donnée ( Lecture / Ecriture / Modification / Suppression) sur un support de stockage éventuellement protégé par une authentification.

Prenons l’exemple de SharePoint Online :

Si je souhaite que mon flux Power Automate accède à de la donnée stockée sur un de mes site SharePoint Online, je vais utiliser le connecteur SharePoint Online mis à disposition :

Pour que la connexion se mette en place, il est nécessaire de s’authentifier avec un compte disposant des droits nécessaires sur le site SharePoint cible. Dans le cadre d’un service Cloud Microsoft, j’utilise donc mon compte Office 365 :

Cette connexion va être utilisée à mon flux pour accéder à la donnée disponible sur SharePoint Online.

Toutes les connexion précédement utilisées dans Power Automate sont aussi recensées ici :

Cela apporte une rapidité et une régularité supplémentaire dans la conception de nouveaux flux Power Automate.

Evidemment, il ne faut pas oublier que ces connexions peuvent aussi rencontrer des blocages en fonction des évolutions de mon environnement Office 365 :

Ce message m’invite à rectifier la connexion à Microsoft Forms, suite à un changement de mot de passe.

Combien coûte Power Automate ?

La question qui fâche, ou pas. Les fonctionnalités de Power Automate font l’objet de plusieurs licences possibles. Pour faire simple :

  • Des fonctionnalités limitées de Power Automate incluses dans les licences Power Apps, Office 365 et Dynamics 365
  • Des fonctionnalités étendues de Power Automate via différentes licences autonomes
Microsoft met aussi à disposition cette FAQ pour aider à choisir la licence correspondant le mieux à vos besoins.

Power Automate via Office 365 :

L’utilisation de Power Automate dans Office 365 est limitée tant pour les déclencheurs que pour les actions. Si le flux n’est pas dans le contexte Office 365 ou s’il doit se connecter à une source de données premium, une licences Power Automate autonome sera alors nécessaire.

Par exemple, si un flux nécessite d’utiliser un connecteur Premium, il sera intéressant d’envisager une des licences Power Automate suivantes :

J’avais trouvé il y a quelques années cet arbre de décision concernant le choix des licences de Power Apps / Power Automate, et qui est pour moi, toujours valable :

Comment créer son premier flux ?

Après toute cette théorie, place à la pratique. Nous allons créer ensemble un flux simple ayant pour but de sauvegarder les pièces reçues par mail sur un compte OneDrive ????.

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 Power Automate :

  • Un tenant Microsoft (Azure AD)
  • Une licence utilisateur active et comprenant les services Power Automate for Office 365, OneDrive et Outlook

Pour ma part, je suis parti sur une licence d’essai Microsoft 365 Business Premium comprenant Power Automate for Office 365 :

Merci Aaron pour ton aide ????.

Rendez-vous ensuite sur la page de Power Automate et cliquez sur Créer :

La page de création vous propose de partir depuis un template préconstruit ou depuis une feuille blanche en sélectionnant un déclencheur de départ. Vous commencez à le comprendre, un flux a besoin de départ pour s’exécuter :

  • Flux automatisé : démarre automatiquement en s’appuyant un évènement concernant le Cloud Office 365
  • Flux instantané : principalement utilisé dans le cas d’un déclenchement manuel
  • Flux programmé : s’exécute tout seul et à horaires fixes
  • Flux desktop : permet de créer depuis un poste une automatisation robotique (RPA). Par exemple, une ancienne application installée en local et sur laquelle l’utilisateur effectue des actions souris / clavier

Cliquez sur Email pour trouver celui qui nous intéresse dans les templates, puis cliquez dessus :

Etape I : Configuration des connecteurs

Ce clic vous affiche directement la page des connecteurs liés à ce template. Comme il s’agit peut-être de votre premier essai sur Power Automate, ces derniers seront alors vides :

Renseignez des identifiants avant de passer à l’étape suivante.

La création du flux sera possible une fois que les deux connecteurs auront des identifiants valides. Cliquez sur chacun d’eux pour vous authentifier :

Vous n’êtes pas obligé d’utiliser systématiquement la même identité dans tout votre flux.
Ce choix doit dépendre des autorisations nécessaires et de la sécurité de votre environnement.

Une fois les authentifications passées, cliquez sur Continuer :

Etape II : Configuration du flux

Cela vous affiche alors une représentation graphique et très visuelle de votre nouveau flux. Des de choses restent encore à faire pour que votre flux fonctionne :

Comme annoncé plus haut, un flux Power Automate commence par UN seul déclencheur. Ce dernier se trouve généralement en haut du schéma cartographique :

Notre déclencheur est bien l’arrivée d’un nouveau message électronique sur la boite de réception.

Affichez les options de votre déclencheur pour constater la prise en compte des emails comportant une ou des pièces jointes :

Pas besoin de modifier votre déclencheur. Descendez plus bas dans votre flux pour constater l’étape suivante.

Comme souvent, les choses peuvent évoluer différemment selon certains critères. C’est pour cela que Power Automate propose cette étape intermédiaire, appelée Condition :

Tout simplement, le résultat de cette condition peut être POSITIF ou NEGATIF. En conséquence, deux ensemble SI-OUI et SI-NON sont présents en dessous :

Chacun pourra comporter des actions spécifiques.
Il est possible de réunifier ces deux branches par la suite.

Question : Quelle branche prendra la totalité des emails reçus, si la condition ci-dessus reste à vide ?

Réponse : Le chemin SI-OUI (une condition vide est une condition toujours POSITIVE)

Cliquez sur le chemin de SI-NON pour renseigner un dossier présent dans OneDrive :

Cliquez sur la flèche pour voir le contenu du dossier :

Choisissez le dossier de votre choix en cliquant dessus :

Pensez à créer des dossiers dans OneDrive si besoin.

Faites de même pour la branche SI-OUI :

Etape III : Sauvegarde et test du flux

Et c’est tout pour le moment ! Pensez à Sauvegarder votre flux :

La sauvegarde d’un flux le rend immédiatement opérationnel.
Il est possible de le désactiver sur la page du flux.

Le bouton Contrôle vous permet de vérifier que le flux ne comporte aucune erreur ou paramétrage incomplet.

Le bouton Test vous permet de tester votre flux avant sa mise en production. Cela s’avère très utile pour ne pas dépendre de certains facteurs, comme le temps.

Prenons l’exemple de votre déclencheur, basé la messagerie électronique Outlook Online. Les nouveaux mails vont être pris en compte pour la récupération de pièces jointes. Seulement il y aura toujours un délai ou cycle d’attente entre chaque opération.

Cliquez sur le bouton Test puis sur Manuellement pour démarrer cette phase :

Cela met le déclencheur de votre flux en phase d’écoute active.

Envoyez un mail avec une pièce jointe vers l’adresse mail paramétrée sur le connecteur Outlook.

Une fois le mail reçu, voici ce que vous devriez avoir :

Les ronds verts vous indiquent le chemin parcouru par votre test.

Cliquez sur le bloc Condition pour déplier celui-ci :

Certaines étapes affichent des résultats ou des entrées / sorties.
Informations très pratiques pour comprendre et corriger les étapes du flux.

Retournez sur OneDrive et constatez la présence du fichier joint à votre email dans le dossier SI-OUI :

Etape IV : Modification du flux

Retournez sur votre flux et modifiez votre condition :

Sauvegardez votre flux, relancez une séquence de test, puis renvoyez un nouvel email.

Cette fois-ci et sauf si votre adresse email contient toto, le chemin pris par le flux de test devrait être différent :

Un second tour dans l’autre dossier OneDrive apporte une vérification supplémentaire sur le fonctionnement de votre flux :

Etape V : Ajout d’une nouvelle étape

Afin d’aller plus loin dans la création d’un flux, retournez sur celui-ci, éditez-le puis ajoutez une nouvelle et dernière étape :

Un écran des opérations s’affiche. le formulaire de recherche est d’une grande aide ici. Tapez mail puis sélectionnez Move email (V2) dans la liste des résultats :

Un nouveau bloc apparaît avec des champs obligatoires à remplir :

Cliquez sur le champ Message Id et constatez l’apparition d’une fenêtre latérale :

Cette fenêtre est très précieuse car elle rappelle automatiquement les variables ou les propriétés des objets précédement invoqués. Saisissez id dans la barre de recherche et cliquez sur Message Id :

Cliquez sur Dossier et choisissez le dossier de votre choix :

Sauvegardez votre flux, relancez une séquence de test, puis renvoyez un troisième email.

Constatez la présence de la pastille verte sur cette nouvelle étape :

Retournez sur votre boite électronique et vérifiez l’absence de mail dans la boite de réception, mais confirmez aussi sa présence dans le dossier choisi dans votre flux :

Vérifiez également la présence du fichier attaché dans OneDrive :

Note : Nous aurions pu rajouter une étape pour marquer comme lu le message électronique déplacé ????

Retournez sur la page principale de votre flux pour constater l’historique des lancements :

Conclusion

En seulement quelques minutes, nous avons réussi à automatiser une tâche qui vous prenez potentiellement 15 minutes tous les jours de votre vie ! Cela mérite un bon café ???? J’espère avoir réussi à vous démontrer la simplicité et l’efficacité de l’outil.

Evidemment, l’exemple est simple mais cela prouve que Power Automate est accessible à des non-développeurs et que ses possibilités sont presque aussi grandes que votre imagination !

Envie d’aller plus loin sur le sujet ? Cette vidéo est pour vous :

AZ-801 – Configuration des services avancés de Windows Server Hybrid

Premier article de cette nouvelle année ! Je profite donc de ce billet pour vous souhaiter mes meilleurs vœux pour 2022 ????????????????. J’avais terminé l’année précédente avec un article sur l’examen AZ-800, disponible ici. Dans la continuité de la certification d’Administrateur Windows Server Hybrid, cet article est donc dédié au second examen : AZ-801 – Configuration des services avancés de Windows Server Hybrid.

Petit rappel qui ne fait pas de mal : la certification Microsoft, Administrateur de Windows Server Hybrid Associé, est apparue dans le Poster Microsoft à la rentrée 2021 et est toujours en version BETA à l’heure où ces lignes sont écrites :

Comme sur l’article précédent, je vous remets donc la vidéo animée par Orin Thomas sur cette nouvelle certification :

Avant de rentrer dans le contenu de ce second examen, je souhaitais vous rappeler quelques points sur les examens BETA de Microsoft.

Qu’est-ce qu’un examen BETA ?

Selon ITProToday, L’examen bêta est la mise au point finale d’un examen avant sa disposition à l’ensemble du public. Les examens BETA sont généralement disponibles pendant une courte période pour un groupe limité.

Lorsque vous passez l’examen, vous ne recevez aucune information sur votre réussite ou votre échec avant parfois plusieurs semaines / mois.

Qu’est-ce qu’un examen BETA pour Microsoft ?

Lorsque vous effectuez un examen sous sa forme BETA, vous nous fournissez des informations utiles pour évaluer la qualité de l’examen et de ses questions. Une fois que le processus est terminé et que nous avons intégré les modifications pertinentes, nous pouvons l’utiliser pour certifier des personnes dans des rôles et des spécialisations professionnelles basés sur le cloud.

Les examens BETA Microsoft

Autrement dit, les beta testeurs valident le contenu d’un examen et apporte à Microsoft l’assurance que l’obtention de la certification associée correspond à des postes ou des missions issus du marché de l’informatique.

Combien coûte un examen BETA ?

Régulièrement et quel que soit l’éditeur, la phase BETA est donc possiblement à un tarif réduit. J’en profite pour vous rappeler qu’un statut MCT chez Microsoft vous permet de profiter de bons d’examen entièrement gratuits pour leurs certifications BETA !

Ces offres sont toujours annoncées dans les jours qui suivent l’ouverture de la BETA, sur le forum des certifications, accessible depuis le MCT Central. Un nombre limité de bons d’examen disponibles et ils ont une durée de validité généralement assez courte.

Pour les non-MCT, vous pouvez toujours profiter d’une autre offre Microsoft, elle aussi limitée dans le temps :

Profitez de l’offre d’examen bêta à prix réduit pour une durée limitée. Pour chaque examen, les 300 premières personnes qui passeront l’examen au plus tard le 10 janvier 2022 pourront bénéficier d’une réduction de 80 % sur le prix final. Cette offre s’applique à l’examen AZ-800 (BETA) et à l’examen AZ-801 (BETA), soit un total de 600 places à prix réduit.

Retrouvez ici ces réductions sur le blog de Microsoft Learn. Voici par exemple le lien vers la page des examens AZ-800 et AZ-801.

Comment préparer son examen BETA ?

En règle générale, il est fortement conseillé de travailler 3 axes pour réussir à coup sûr une certification :

  • Etudier la documentation officielle
  • Pratiquer des labs
  • Profitez de son expérience professionnelle

La documentation

Par le biais de la page d’examen Microsoft, vous pouvez avoir accès à :

  • La page de l’examen » : Enumération des compétences évaluées lors de l’examen
  • Le chemin d’apprentissage : Ensemble de liens vers la documentation Microsoft, en relation avec les sujets abordés. Ces pages sont utiles car elles peuvent aussi contenir des exercices, des QCM ou encore environnements de test Azure

Envi de commencer votre préparation ? Microsoft a justement créé cette page pour vous : Comment préparer des examens bêta sans documents de préparation ?!?

Les labs

Un bon moyen de progresser d’un point de vue technique est d’utiliser les labs en association avec l’examen désiré. Plusieurs plateformes proposent ce type de formule adapté. Malheureusement, les certifications BETA ne disposent pas toujours de labs au moment où vous préparez votre examen.

J’ai pour habitude de travailler avec les plateforme suivantes. De plus, un accès aux labs Microsoft est gratuit pour les MCT :

Quand reçoit-on résultats d’examen BETA ?

Comme indiqué plus haut, cela peut prendre plusieurs semaines / mois avant d’obtenir vos résultats. À la fin d’un examen BETA, vous ne recevez pas immédiatement de résultat positif ou négatif, car le barème de notation de l’examen n’est pas encore finalisé.

La mise à disposition de vos résultats d’examen BETA chez Microsoft va dépendre de la date de disponibilité générale. Comptez environ une dizaine de jours après cette date pour retrouver vos résultats BETA.

Edit : une toute nouvelle vidéo forte utile pour comprendre un peu mieux la certification Microsoft ????

AZ-801 – Configuration des services avancés de Windows Server Hybride

Rentrons maintenant dans le vif du sujet concernant cet examen AZ-801. Comme pour chaque examen que je vous présente, voici les liens utiles pour préparer ce petit dernier :

Chapitres de la certification AZ-801

Comme toujours, Microsoft détaille les différents thèmes abordés avec des pourcentages. Voici donc la liste pour cet examen AZ-801 :

Afin d’éviter de produire une répétition du chemin d’apprentissage Microsoft, très complet, j’ai souhaité vous partager dans cet article plusieurs vidéos YouTube sur des sujets précis. Gardez en tête que le chemin d’apprentissage Microsoft est le point de départ de toutes les questions.

Chapitre I : Sécuriser les infrastructures Windows Server sur site et hybrides

Dans la même logique que l’examen AZ-800, la partie sécurité de Windows Server reste la plus importante, aussi bien pour une architecture sur site que dans le Cloud Azure. Il vous faut aussi déterminer si les ressources présentent des failles de sécurité et savoir comment y remédier.

Ici, le but est de vérifier vos connaissances sur les différents modules augmentant la sécurité de Windows Server, tout en sachant les différencier leurs fonctions :

Cet examen apporte aussi son lot de questions sur Active Directory. Par exemple, la connaissance des utilisateurs protégés ou comment fonctionne la corbeille AD pour restaurer des utilisateurs doit être maîtrisée :

Attendez-vous toujours à des questions relatives à Azure. Ici, le point intéressant sur ce sujet va concerner le monitoring des machines virtuelles. Les principaux outils aidant à la sécurisation de ces machines seront Microsoft Defender for Cloud (anciennement Azure Security Center) et Azure Sentinel :

Toujours dans le même chapitre, les réseaux et le stockage sont aussi des sujets relevés dans cet examen. On peut prendre en exemple BitLocker et son champ d’application possible sur Windows Server :

Chapitre II : Implémenter et gérer la haute disponibilité de Windows Server

Ce chapitre est plus court mais concerne un sujet majeur : le failover sur Windows Server. Cette notion est critique dans un environnement IT, et est compatible avec un grand nombre rôles de Windows Server. Il est donc indispensable de les tester pour en comprendre les bases et être en confiance sur les questions de l’examen.

Par exemple, prenons en détail la notion de quorum dynamique :

Dans mon précédent article, j’avais déjà relevé la forte mise en avant de Windows Admin Center dans l’examen AZ-800, prenez donc le temps de tester l’outil pour chaque partie / fonctionnalité :

Toujours sur ce chapitre, le chemin d’apprentissage consacre un timide passage à Storage Space Direct. Il est malgré tout important de bien comprendre son principe :

Chapitre III : Mise en œuvre de la reprise après sinistre

Ce chapitre teste vos connaissances sur la fourniture d’une solution de continuité des activités et de reprise après un sinistre. Il vous faut également démontrer comment mettre en œuvre Azure Site Recovery pour les architectures sur site, mais aussi déjà présentes dans Azure.

Beaucoup de services dans Azure facilite grandement la mise en place de BCDR :

Vous pouvez utiliser Hyper-V Replica pour implémenter une solution BCDR abordable pour un environnement virtuel :

  • Le réplica Hyper-V peut vous protéger contre la perte de données en cas de panne de site en copiant une machine virtuelle en temps réel en tant que machine virtuelle de réplication d’un emplacement à un autre. Si le site qui contient la machine virtuelle principale n’est plus disponible, la machine virtuelle de réplication est disponible pour maintenir les charges de travail disponibles
  • Si nécessaire, vous pouvez utiliser le réplica Hyper-V pour étendre la réplication de la copie hors connexion à un troisième emplacement
  • Si votre organisation ne dispose que d’un seul emplacement disponible, vous pouvez toujours utiliser la réplication Hyper-V pour répliquer des machines virtuelles vers une organisation partenaire à un autre emplacement, à un fournisseur d’hébergement ou à Microsoft Azure

Chapitre IV : Migrer des serveurs et des charges de travail

Microsoft souhaite ici mettre l’accent sur la migration d’une charge de travail dans Windows Server vers une machine virtuelle (VM) Azure, grâce aux outils de migration de Windows Server ou par le biais du service de migration de stockage.

Chapitre V : Surveillance et dépannage des environnements Windows Server

Dans ce chapitre, Microsoft parle de l’utilisation des outils de monitoring et de dépannage, les processus et les meilleures pratiques pour rationaliser les performances et la disponibilité de votre environnement Windows Server et de vos VMs Azure.

Conclusion

Comme pour mon examen AZ-800, cet examen ne fut pas non plus évident. Et comme à chaque examen BETA, il faut attendre plusieurs semaines / mois pour avoir les résultats. Encore une fois, les connaissances acquises ces dernières semaines via le chemin d’apprentissage m’ont beaucoup aidé, mais elles ne compensent pas toujours le manque d’expérience.

Aucun souci si Windows Server est votre quotidien ou si vous avez conservé de beaux restes ! Pensez malgré tout à disposer de connaissances sur Azure pour réussir votre examen. Comme à chaque fois, les vidéos explicatives c’est très bien, mais la pratique c’est indispensable.

Bon examen ????

AZ-800 – Administration de l’infrastructure de base de Windows Server Hybrid

Dernier article avant cette fin d’année 2021, je profite pour vous souhaiter de très bonnes fêtes ????????????????.

Rentrons dans le vif du sujet avec une nouvelle certification Microsoft, Administrateur de Windows Server Hybrid Associé, apparue dans le Poster Microsoft à la rentrée 2021 et disponible depuis début décembre en version BETA.

Pour rappel, cette certification, de niveau Associé, se décompose en deux examens (AZ-800 et AZ-801), comme c’est le cas avec la certification d’Architecte Cloud, de niveau Expert :

Merci à Orin pour cette première introduction????.

Ces deux examens sont donc nécessaires pour obtenir ce nouveau badge. Dans cet article, nous allons de parler uniquement de l’examen AZ-800, dédié à l’administration de Windows Server dans ses fonctionnalités principales. Je referai un second article, début 2022, sur le second examen AZ-801, encore en BETA lui aussi.

Examen AZ-800 : Administration de l’infrastructure de base de Windows Server Hybrid

Avant de parler de mon ressenti personnel, je tenais à vous redonner ici quelques liens utiles pour préparer cet AZ-800 :

Malheureusement à l’heure où ces lignes sont écrites, aucune grande plate-forme de labs ne propose encore de cursus dédié à l’AZ-800. Le mieux est donc de disposer d’une souscription Azure pour faire ses essais in situ.

Et voici une seconde vidéo, dédiée uniquement à l’AZ-800, toujours préparée par Orin.

Chapitres de la certification AZ-800

Comme pour chaque examen, Microsoft détaille avec des pourcentages les différents thèmes abordés. Voici la liste pour cet examen AZ-800 :

  • Chapitre I : Déployer et gérer les services de domaine Active Directory (AD DS) dans des environnements sur site / cloud (30-35 %)
  • Chapitre II : Gestion des serveurs Windows et des charges de travail dans un environnement hybride (10-15%)
  • Chapitre III : Gestion des machines virtuelles et des conteneurs (15-20%)
  • Chapitre IV : Mettre en œuvre et gérer une infrastructure réseau sur site et hybride (15-20%)
  • Chapitre V : Gestion des services de stockage et de fichiers (15-20%)

Chapitre I : Déployer et gérer les services de domaine Active Directory (AD DS) dans des environnements sur site / Cloud

Aucun suspense, la gestion d’un domaine Active Directory est de loin la principale partie sanctionnée par cet examen. Le but ici est de mesurer vos connaissances sur les composantes d’un domaine. Autant dire que la maîtrise de ces derniers est fortement attendue. Pas de mystère ici, la pratique par l’expérience et ou l’apprentissage intensif peut vous sortir de là.

En plus de savoir déployer les multiples rôles serveurs possibles, gardez en tête que une certification de niveau Associé comportent toujours des questions techniques précises :

  • La connaissance des relations forêts / domaines / sites
Les composants logiques AD DS sont des structures que vous utilisez pour mettre en œuvre une conception AD DS adaptée à une organisation.
Les composants physiques dans AD DS sont les objets qui sont tangibles, ou qui décrivent des composants tangibles dans le monde réel.
  • La connaissance des rôles et leurs autorisations agissant sur les forêts / domaines
  • La connaissance des différents types de groupe (Sécurité / Distribution) et leurs impacts au travers des forêts / domaines

Les groupes de sécurité sont utilisés pour attribuer des autorisations à diverses ressources. Les applications de messagerie utilisent généralement des groupes de distribution, qui ne sont pas compatibles avec la sécurité.

  • La connaissance des composants techniques se cachant derrière un domaine, les FSMO.
The 5 FSMO Roles in Active Directory: What They Are and What They Do

La sécurité est un point présent dans toutes les certifications Microsoft. Par exemple ici, l’utilisation groupe de comptes de service managés comme principal de sécurité pour vous être demandé :

Add-KdsRootKey –EffectiveImmediately

D’autre part, cet examen fait aussi la part belle à Azure. Vous vous en doutez donc, attendez-vous à des questions portant sur les outils de synchronisation entre AD et Azure AD : Azure AD Connect / Azure AD Cloud Sync. Vous devez connaître la configuration de ces derniers et les options qu’ils proposent en sus.

Gardez en tête que cette certification porte la mention AZ dans son titre. Les références aux services Azure, Azure AD ou encore Azure AD DS sont hautement probables.

Comment mettre en place une liste de mots de passe bannis.

Sans oublier un autre sujet à maîtriser : nos bonnes amies les GPOs ????

Chapitre II : Gestion des serveurs Windows et des charges de travail dans un environnement hybride

Ayant suivi le chemin d’apprentissage associé à la certification AZ-800, Orin met clairement en avant dans les vidéos de démonstration Windows Admin Center (WAC), l’outil complet de gestion à distance :

Prenez le temps de tester la solution : Installez l’outil sur une machine proxy et d’enrôlez des serveurs dessus :

Qu'est-ce que Windows Admin Center ? | Microsoft Docs
Port 6515 par défaut ????.

On continue ? Qu’est qu’Azure Arc ?

Voilà ici une bien belle question, à laquelle des questions peuvent tomber ????.

Cet examen apporte aussi une approche technique pour les environnements hybride. Il est donc nécessaire de comprendre le bénéfice à utiliser Azure Arc pour intégrer et gérer des machines physiques.

A closer look at Azure Arc enabled servers - Microsoft Tech Community
Gestion possible des updates Windows via un enrôlement Azure Arc.

Chapitre III : Gérer les machines virtuelles et les conteneurs

Ce chapitre n’est pas le plus valorisé de cet examen, mais il aborde des sujets importants (Hyper-V, conteneurs, machines virtuelles sur Azure)

Concernant Hyper-V, j’ai trouvé que le chemin d’apprentissage de l’AZ-800 est assez bien fait :

Ensuite vient la partie des conteneurs sur Windows Server. Beurk ????. Je sais que je ne devrais pas dire ça, mais c’est une partie qui ne m’a jamais encore attiré. Aussi je préfère laisser parler Marc :

Enfin n’oubliez jamais les références directe à Azure. Soyez certain d’avoir des questions portant sur la création et la gestion des machines virtuelles sur Azure. Cela implique aussi tous les composants annexes à celles-ci, telles que les parties réseau ou stockage.

Si vous êtes déjà habitués à la partie IaaS sur Azure, les questions ne devraient pas vous poser de souci ????.

Chapitre IV : Mettre en œuvre et gérer une infrastructure réseau sur site et hybride

Ce chapitre est de poids égal au précédent. La partie DNS est intéressante car c’est encore un service que nous retrouvons aussi bien dans Windows Server que dans Azure :

Par exemple, il est possible de combiner à une architecture on premise, les besoins DNS de machines virtuelles hébergées sur Azure. Dans le cas, il faut toute de suite penser transfert conditionnel pour y arriver :

Les composants DNS sur Azure sont aussi présent dans le cursus de cet examen :

En plus de la partie DNS, prenez le temps de bien vous intéresser au rôle DHCP, disponible sur Windows Server :

D’autres rôles peuvent aussi faire partie des questions. Je pense par exemple à :

Installation d’un proxy d’application Web Azure AD.

Chapitre V : Gérer les services de stockage et de fichiers

Dernier chapitre de l’examen AZ-800, à ne pas négliger ! Le stockage est un élément majeur de toute infrastructure IT, car la data représente LA valeur à conserver, protéger, …

Il faut donc prendre le temps de s’intéresser à certains services, comme :

Conclusion

Pour ma part, cet examen ne fut pas une mince affaire. Comme à chaque fois pour les examens BETA, il faut attendre plusieurs semaines / mois pour avoir nos résultats. Les connaissances acquises ces dernières semaines via le chemin d’apprentissage m’ont beaucoup aidé, mais elles ne compensent pas la manque d’expérience sur des postes tels qu’administrateur système.

Aucun souci si les domaines sont votre quotidien ou si vous avez conservé de beaux restes ! Pensez malgré tout à aussi disposer de connaissances sur Azure pour réussir votre examen. Comme à chaque fois, les vidéos explicatives c’est très bien, mais la pratique est pour moi indispensable.

Windows Server 2022 Download (ISO, VHD, Azure)

Profitez aussi de cette période de fêtes pour souffler un peu et passer du temps avec vos proches. On se retrouve l’année prochaine ????.

Testez MSIX App Attach dans votre AVD

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 les commandes PowerShell suivantes :

Schtasks /Change /Tn "\Microsoft\Windows\WindowsUpdate\Scheduled Start" /Disable
reg add HKLM\Software\Policies\Microsoft\WindowsStore /v AutoDownload /t REG_DWORD /d 0 /f
reg add HKCU\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager /v PreInstalledAppsEnabled /t REG_DWORD /d 0 /f
reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager\Debug /v ContentDeliveryAllowedOverride /t REG_DWORD /d 0x2 /f
reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA /t REG_DWORD /d 0 /f
reg add HKLM\Software\Microsoft\RDInfraAgent\MSIXAppAttach /v PackageListCheckIntervalMinutes /t REG_DWORD /d 1 /f

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 :

New-SelfSignedCertificate -Type Custom -Subject "CN=Jloudev" -KeyUsage DigitalSignature -KeyAlgorithm RSA -KeyLength 2048 -CertStoreLocation "cert:\LocalMachine\My

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 :

$avdhosts = 'avd-vm-0','avd-vm-1'
$cleartextPassword = 'Demo!pass123'
$securePassword = ConvertTo-SecureString $cleartextPassword -AsPlainText -Force
$localPath = 'C:\MSIX'
ForEach ($avdhost in $avdhosts){
  $remotePath = "\\$avdhost\C$\MSIX\"
  New-Item -ItemType Directory -Path $remotePath -Force
  Copy-Item -Path "$localPath\jloudev.tk.pfx" -Destination $remotePath -Force
  Invoke-Command -ComputerName $avdhost -ScriptBlock {
     Import-PFXCertificate -CertStoreLocation Cert:\LocalMachine\TrustedPeople -FilePath 'C:\MSIX\jloudev.tk.pfx' -Password $using:securePassword
  } 
}

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 :

$serviceName = 'wsearch'
Set-Service -Name $serviceName -StartupType Disabled
Stop-Service -Name $serviceName

Profitez-en également pour créer cette nouvelle arborescence :

New-Item -ItemType Directory -Path 'C:\MSIX\Firefox' -Force

Exécutez la commande PowerShell suivante pour supprimer le Zone.Identifier des fichiers d’installation téléchargés depuis Internet :

Get-ChildItem -Path 'C:\MSIX' -Recurse -File | Unblock-File

Etape VI : Création du package applicatif

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 :

$avdhosts = 'avd-vm-0','avd-vm-1'
ForEach ($avdhost in $avdhosts){
  Invoke-Command -ComputerName $avdhost -ScriptBlock {
     Schtasks /Change /Tn "\Microsoft\Windows\WindowsUpdate\Scheduled Start" /Disable
     reg add HKLM\Software\Policies\Microsoft\WindowsStore /v AutoDownload /t REG_DWORD /d 0 /f
     reg add HKCU\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager /v PreInstalledAppsEnabled /t REG_DWORD /d 0 /f
     reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager\Debug /v ContentDeliveryAllowedOverride /t REG_DWORD /d 0x2 /f
     reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA /t REG_DWORD /d 0 /f
     reg add HKLM\Software\Microsoft\RDInfraAgent\MSIXAppAttach /v PackageListCheckIntervalMinutes /t REG_DWORD /d 1 /f
     Set-Service -Name wuauserv -StartupType Disabled
  }
}

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 :

$avdhosts = 'avd-vm-0','avd-vm-1'
ForEach ($avdhost in $avdhosts){
  Invoke-Command -ComputerName $avdhost -ScriptBlock {
     Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All
  }
}

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 :

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All

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 :

New-Item -ItemType Directory -Path 'C:\MSIX\MSIXVhds' -Force
New-VHD -SizeBytes 256MB -Path 'C:\MSIX\MSIXVhds\Firefox.vhd' -Dynamic -Confirm:$false

Exécutez le script PowerShell suivant depuis votre fenêtre Windows PowerShell IS, en mode administrateur , pour monter le fichier VHD nouvellement créé :

$vhdObject = Mount-VHD -Path 'C:\MSIX\MSIXVhds\Firefox.vhd' -Passthru

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 :

$disk = Initialize-Disk -Passthru -Number $vhdObject.Number
$partition = New-Partition -AssignDriveLetter -UseMaximumSize -DiskNumber $disk.Number
Format-Volume -FileSystem NTFS -Confirm:$false -DriveLetter $partition.DriveLetter -Force

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 :

$appName = 'Firefox'
New-Item -ItemType Directory -Path "$($partition.DriveLetter):\Apps" -Force
Set-Location -Path 'C:\MSIX'
.\x64\msixmgr.exe -Unpack -packagePath .\$appName.msix -destination "$($partition.DriveLetter):\Apps" -applyacls

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 :

Dismount-VHD -Path "C:\MSIX\MSIXVhds\$appName.vhd" -Confirm:$false

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 :

$ouPath = "OU=AVD-Devices,DC=jloudev,DC=tk"
New-ADGroup -Name 'avd-hosts' -GroupScope 'Global' -GroupCategory Security -Path $ouPath

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 :

Get-ADGroup -Identity 'avd-hosts' | Add-AdGroupMember -Members 'avd-vm-0$','avd-vm-1$'

Exécutez le script PowerShell suivant depuis votre fenêtre Windows PowerShell ISE, en mode administrateur, pour redémarrer les VMs AVD :

$hosts = (Get-ADGroup -Identity 'avd-hosts' | Get-ADGroupMember | Select-Object Name).Name
$hosts | Restart-Computer

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 :

OptionValeur
RôleStorage File Data SMB Share Elevated Contributor
Assign access toGroup
Selectavd-admins
OptionValeur
Rôle Storage File Data SMB Share Elevated Contributor
Assign access toGroup
Selectavd-hosts
OptionValeur
Rôle Storage File Data SMB Share Reader
Assign access toGroup
Selectavd-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 :

icacls Z:\ /grant JLOUDEV\avd-hosts:(OI)(CI)(RX) /T
icacls Z:\ /grant JLOUDEV\avd-group:(OI)(CI)(RX) /T
icacls Z:\ /grant JLOUDEV\avd-admins:(OI)(CI)(F) /T

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 :

New-Item -ItemType Directory -Path 'Z:\packages' 
Copy-Item -Path 'C:\MSIX\MSIXVhds\Firefox.vhd' -Destination 'Z:\packages' -Force

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é :

\\jlosto.file.core.windows.net\msixvhds\packages\Firefox.vhd

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 ????

Associez FSLogix avec Azure AD

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.

Documentation Microsoft

Quel est donc l’intérêt ?

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) :
  • Des utilisateurs AVD présents dans AD DS et synchronisés avec Azure AD :
  • Un environnement Azure Virtual Desktop déployé et lié à votre domaine AD DS :
  • Des machines virtuelles AVD jointes é la fois à votre AD DS et enrôlées dans votre Azure AD :

Une fois cela en place, déroulez les prochaines étapes d’installation depuis votre contrôleur de domaine.

Etape I : Création d’un nouveau compte de stockage

Sur votre portail Azure, commencez par créer votre nouveau compte de stockage :

Une fois créé, stockez l’ID de la souscription Azure, le nom du groupe de ressources et le nom du compte de stockage dans les variables suivantes :

$resourceGroupName = "<MyResourceGroup>"
$storageAccountName = "<MyStorageAccount>"
$Subscription = "<MySubscriptionID>"

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 :

Install-Module -Name Az.Storage -AllowClobber
Install-Module -Name AzureAD -AllowClobber

Validez les messages d’avertissement si besoin :

L’activation de l’authentification via Azure AD passe elle aussi par une commande PowerShell :

Connect-AzAccount
$ApiVersion = '2021-04-01'

$Uri = ('https://management.azure.com/subscriptions/{0}/resourceGroups/{1}/providers/Microsoft.Storage/storageAccounts/{2}?api-version={3}' -f $Subscription, $ResourceGroupName, $StorageAccountName, $ApiVersion);

$json = 
   @{properties=@{azureFilesIdentityBasedAuthentication=@{directoryServiceOptions="AADKERB"}}};
$json = $json | ConvertTo-Json -Depth 99

$token = $(Get-AzAccessToken).Token
$headers = @{ Authorization="Bearer $token" }

try {
    Invoke-RestMethod -Uri $Uri -ContentType 'application/json' -Method PATCH -Headers $Headers -Body $json;
} catch {
    Write-Host $_.Exception.ToString()
    Write-Error -Message "Caught exception setting Storage Account directoryServiceOptions=AADKERB: $_" -ErrorAction Stop
}

Le lancement du script PowerShell vous demandera de vous authentifier en utilisant un compte propriétaire de la souscription Azure :

Le lancement réussi du script devrait vous donner le résultat suivant :

Constatez l’activation de la fonctionnalité en préview, directement sur le compte de stockage :

Il ne reste en plus qu’à générer une nouvelle clef pour le protocole Kerberos :

Set-azcontext -Subscription $Subscription
New-AzStorageAccountKey -ResourceGroupName $resourceGroupName -Name $storageAccountName -KeyName kerb1 -ErrorAction Stop

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 :

$kerbKey1 = Get-AzStorageAccountKey -ResourceGroupName $resourceGroupName -Name $storageAccountName -ListKerbKey | Where-Object { $_.KeyName -like "kerb1" }
$aadPasswordBuffer = [System.Linq.Enumerable]::Take([System.Convert]::FromBase64String($kerbKey1.Value), 32);
$password = "kk:" + [System.Convert]::ToBase64String($aadPasswordBuffer);

Lors d’une étape précédente, vous vous êtes déjà connecté à Azure. Connectez-vous maintenant à Azure AD :

Connect-AzureAD
$azureAdTenantDetail = Get-AzureADTenantDetail;
$azureAdTenantId = $azureAdTenantDetail.ObjectId
$azureAdPrimaryDomain = ($azureAdTenantDetail.VerifiedDomains | Where-Object {$_._Default -eq $true}).Name

Utilisez ici un compte administrateur global du tenant :

Préparer la génération du principal de sécurité :

$servicePrincipalNames = New-Object string[] 3
$servicePrincipalNames[0] = 'HTTP/{0}.file.core.windows.net' -f $storageAccountName
$servicePrincipalNames[1] = 'CIFS/{0}.file.core.windows.net' -f $storageAccountName
$servicePrincipalNames[2] = 'HOST/{0}.file.core.windows.net' -f $storageAccountName

Créez et chargez dans une variable les éléments nécessaires à la future Enregistrement d’applications :

$application = New-AzureADApplication -DisplayName $storageAccountName -IdentifierUris $servicePrincipalNames -GroupMembershipClaims "All";

Générez alors le principal de sécurité :

$servicePrincipal = New-AzureADServicePrincipal -AccountEnabled $true -AppId $application.AppId -ServicePrincipalType "Application";

Configurez le mot de passe stocké précédement pour celui-ci :

$Token = ([Microsoft.Open.Azure.AD.CommonLibrary.AzureSession]::AccessTokens['AccessToken']).AccessToken
$apiVersion = '1.6'
$Uri = ('https://graph.windows.net/{0}/{1}/{2}?api-version={3}' -f $azureAdPrimaryDomain, 'servicePrincipals', $servicePrincipal.ObjectId, $apiVersion)
$json = @'
{
  "passwordCredentials": [
  {
    "customKeyIdentifier": null,
    "endDate": "<STORAGEACCOUNTENDDATE>",
    "value": "<STORAGEACCOUNTPASSWORD>",
    "startDate": "<STORAGEACCOUNTSTARTDATE>"
  }]
}
'@
$now = [DateTime]::UtcNow
$json = $json -replace "<STORAGEACCOUNTSTARTDATE>", $now.AddDays(-1).ToString("s")
  $json = $json -replace "<STORAGEACCOUNTENDDATE>", $now.AddMonths(12).ToString("s")
$json = $json -replace "<STORAGEACCOUNTPASSWORD>", $password
$Headers = @{'authorization' = "Bearer $($Token)"}
try {
  Invoke-RestMethod -Uri $Uri -ContentType 'application/json' -Method Patch -Headers $Headers -Body $json 
  Write-Host "Success: Password is set for $storageAccountName"
} catch {
  Write-Host $_.Exception.ToString()
  Write-Host "StatusCode: " $_.Exception.Response.StatusCode.value
  Write-Host "StatusDescription: " $_.Exception.Response.StatusDescription
}

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 :

Get-ChildItem -Path C:\AzFilesHybrid -File -Recurse | Unblock-File

Toujours en PowerShell, connectez-vous à Azure :

Connect-AzAccount

Lancez alors le script suivant en modifiant les paramètres, selon votre configuration :

.\CopyToPSPath.ps1
Import-Module -Name AzFilesHybrid
Join-AzStorageAccountForAuth `
  -ResourceGroupName 'aadjoin-rg' `
  -StorageAccountName 'jloaadjoin2' `
  -DomainAccountType 'ComputerAccount' `
  -OrganizationalUnitDistinguishedName 'OU=AVDJOIN-Devices,DC=jloudev,DC=ml'

Constatez le retour de commande suivant :

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 :

function Set-StorageAccountAadKerberosADProperties {
    [CmdletBinding()]
    param(
        [Parameter(Mandatory=$true, Position=0)]
        [string]$ResourceGroupName,

        [Parameter(Mandatory=$true, Position=1)]
        [string]$StorageAccountName,

        [Parameter(Mandatory=$false, Position=2)]
        [string]$Domain
    )  

    $AzContext = Get-AzContext;
    if ($null -eq $AzContext) {
        Write-Error "No Azure context found.  Please run Connect-AzAccount and then retry." -ErrorAction Stop;
    }

    $AdModule = Get-Module ActiveDirectory;
     if ($null -eq $AdModule) {
        Write-Error "Please install and/or import the ActiveDirectory PowerShell module." -ErrorAction Stop;
    }	

    if ([System.String]::IsNullOrEmpty($Domain)) {
        $domainInformation = Get-ADDomain
        $Domain = $domainInformation.DnsRoot
    } else {
        $domainInformation = Get-ADDomain -Server $Domain
    }

    $domainGuid = $domainInformation.ObjectGUID.ToString()
    $domainName = $domainInformation.DnsRoot
    $domainSid = $domainInformation.DomainSID.Value
    $forestName = $domainInformation.Forest
    $netBiosDomainName = $domainInformation.DnsRoot
    $azureStorageSid = $domainSid + "-123454321";

    Write-Verbose "Setting AD properties on $StorageAccountName in $ResourceGroupName : `
        EnableActiveDirectoryDomainServicesForFile=$true, ActiveDirectoryDomainName=$domainName, `
        ActiveDirectoryNetBiosDomainName=$netBiosDomainName, ActiveDirectoryForestName=$($domainInformation.Forest) `
        ActiveDirectoryDomainGuid=$domainGuid, ActiveDirectoryDomainSid=$domainSid, `
        ActiveDirectoryAzureStorageSid=$azureStorageSid"

    $Subscription =  $AzContext.Subscription.Id;
    $ApiVersion = '2021-04-01'

    $Uri = ('https://management.azure.com/subscriptions/{0}/resourceGroups/{1}/providers/Microsoft.Storage/storageAccounts/{2}?api-version={3}' `
        -f $Subscription, $ResourceGroupName, $StorageAccountName, $ApiVersion);

    $json=
        @{
            properties=
                @{azureFilesIdentityBasedAuthentication=
                    @{directoryServiceOptions="AADKERB";
                        activeDirectoryProperties=@{domainName="$($domainName)";
                                                    netBiosDomainName="$($netBiosDomainName)";
                                                    forestName="$($forestName)";
                                                    domainGuid="$($domainGuid)";
                                                    domainSid="$($domainSid)";
                                                    azureStorageSid="$($azureStorageSid)"}
                                                    }
                    }
        };  

    $json = $json | ConvertTo-Json -Depth 99

    $token = $(Get-AzAccessToken).Token
    $headers = @{ Authorization="Bearer $token" }

    try {
        Invoke-RestMethod -Uri $Uri -ContentType 'application/json' -Method PATCH -Headers $Headers -Body $json
    } catch {
        Write-Host $_.Exception.ToString()
        Write-Host "Error setting Storage Account AD properties.  StatusCode:" $_.Exception.Response.StatusCode.value__ 
        Write-Host "Error setting Storage Account AD properties.  StatusDescription:" $_.Exception.Response.StatusDescription
        Write-Error -Message "Caught exception setting Storage Account AD properties: $_" -ErrorAction Stop
    }
}

Lancez alors la fonction précédente grâce à cette commande :

Connect-AzAccount
Set-StorageAccountAadKerberosADProperties -ResourceGroupName $resourceGroupName -StorageAccountName $storageAccountName

Cette commande fait alors rebasculer le statut Active Directory sur compte de stockage comme ceci :

Etape VIII : Création de la GPO

Toujours sur votre contrôleur de domaine, ouvrez le gestionnaire des polices :

Sous votre OU des postes AVD, créez une nouvelle police et éditez là :

Activer la police suivante :

Administrative Templates\System\Kerberos\Allow retrieving the Azure AD Kerberos Ticket Granting Ticket during logon

Ajoutez également une règle de registre sur cette même police :

reg add HKLM\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters /v CloudKerberosTicketRetrievalEnabled /t REG_DWORD /d 1

Redémarrez les VMs Azure Virtual Desktop pour la bonne prise en compte de la GPO :

Connectez-vous à une session Azure Virtual Desktop grâce à Windows Remote Desktop :

Utilisez un compte utilisateur d’AVD.

Une fois la session AVD ouverte, ouvrez une ligne de commande et tapez le code suivant :

dsregcmd /RefreshPrt

Verrouillez votre session AVD, puis déverrouillez-là :

Saisissez les deux lignes de commande suivantes :

klist purge
klist get krbtgt

Constatez la présence de :

krbtgt/KERBEROS.MICROSOFTONLINE.COM @ KERBEROS.MICROSOFTONLINE.COM

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.

#Variables
$storageAccountName = "jloaadjoin2"
$filesharename = "avdfileshare"

#Create Directories
$LabFilesDirectory = "C:\LabFiles"

if(!(Test-path -Path "$LabFilesDirectory")){
New-Item -Path $LabFilesDirectory -ItemType Directory |Out-Null
}
if(!(Test-path -Path "$LabFilesDirectory\FSLogix")){
New-Item -Path "$LabFilesDirectory\FSLogix" -ItemType Directory |Out-Null
}

 #Download FSLogix Installation bundle
  if(!(Test-path -Path "$LabFilesDirectory\FSLogix_Apps_Installation.zip")){
       Invoke-WebRequest -Uri "https://experienceazure.blob.core.windows.net/templates/wvd/FSLogix_Apps_Installation.zip" -OutFile     "$LabFilesDirectory\FSLogix_Apps_Installation.zip"

 #Extract the downloaded FSLogix bundle
 function Expand-ZIPFile($file, $destination){
     $shell = new-object -com shell.application
     $zip = $shell.NameSpace($file)
     foreach($item in $zip.items()){
     $shell.Namespace($destination).copyhere($item)
     }
 }

 Expand-ZIPFile -File "$LabFilesDirectory\FSLogix_Apps_Installation.zip" -Destination "$LabFilesDirectory\FSLogix"

}
   #Install FSLogix
   if(!(Get-WmiObject -Class Win32_Product | where vendor -eq "FSLogix, Inc." | select Name, Version)){
       $pathvargs = {C:\LabFiles\FSLogix\x64\Release\FSLogixAppsSetup.exe /quiet /install }
       Invoke-Command -ScriptBlock $pathvargs
   }
   #Create registry key 'Profiles' under 'HKLM:\SOFTWARE\FSLogix'
   $registryPath = "HKLM:\SOFTWARE\FSLogix\Profiles"
   if(!(Test-path $registryPath)){
       New-Item -Path $registryPath -Force | Out-Null
   }

   #Add registry values to enable FSLogix profiles, add VHD Locations, Delete local profile and FlipFlop Directory name
   New-ItemProperty -Path $registryPath -Name "VHDLocations" -Value "\\$storageAccountName.file.core.windows.net\$filesharename" -PropertyType String -Force | Out-Null
   New-ItemProperty -Path $registryPath -Name "Enabled" -Value 1 -PropertyType DWord -Force | Out-Null
   New-ItemProperty -Path $registryPath -Name "DeleteLocalProfileWhenVHDShouldApply" -Value 1 -PropertyType DWord -Force | Out-Null
   New-ItemProperty -Path $registryPath -Name "FlipFlopProfileDirectoryName" -Value 1 -PropertyType DWord -Force | Out-Null
    
    reg add HKLM\Software\Policies\Microsoft\AzureADAccount /v LoadCredKeyFromProfile /t REG_DWORD /d 1

   #Display script completion in console
Write-Host "Script Executed successfully"

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 ????

WordPress sur Azure

Une fois n’est pas coutume, je vais vous parler d’Azure ????????

J’ai commencé ce blog il y a maintenant plusieurs mois, et je prends toujours du plaisir à écrire des articles sur Azure. Depuis quelques semaines, je rencontre des problèmes de performances rendant l’accès au site très variable, surtout en matinée. OVH n’a pu résoudre mon souci malgré mon changement de formule. ????

J’ai donc décidé de franchir le pas en rapatriant mon blog sur Azure. Si vous souhaitez aussi créer des ressources Azure sans forcément dépenser un centime, sachez que plusieurs méthodes sont possibles.

Dans mon cas, le statut MCT m’apporte un grand nombre d’avantages de la part de Microsoft, dont justement des crédits Azure, directement disponibles sur la page Visual Studio :

Etape I : Création des ressources Azure

Une fois l’activation des crédits Azure sur un tenant nouveau ou existant, commencez la création de votre site WordPress directement depuis le portail Azure :

Une recherche de WordPress vous affiche un grand nombre de résultats. Il est en effet possible de mettre en place un site web via différents types de service Azure (IaaS, PaaS, …) :

Dans cet article, nous allons nous intéresser au service Azure App Service. Celui-ci crée, déploie et met à l’échelle rapidement des applications Web, mobiles et API de niveau entreprise s’exécutant sur n’importe quelle plate-forme.

Voici une démo assez complète du service :

Merci Adam ????.

Choisissez donc l’article édité par WordPress :

La création des ressources Azure via ce template WordPress est assez simple et rapide et peu de champs sont à remplir :

  • Souscription Azure : « ligne de crédit » utilisée pour positionner la ressource
  • Groupe de ressources : conteneur logique pour l’organiser les ressources
  • Région : Localisation physique de vos données
  • Nom de l’instance : nom de l’application web, mais aussi URL de base du site créé WordPress créé par Azure

Une fois les champs validés, la synthèse avant création est affichée sur le dernier onglet :

Lancez la création des ressources Azure en cliquant sur Créer.

Moins de 10 minutes plus tard, Azure a fini. Cliquez ici pour afficher votre application web :

Vous retrouvez à droite l’URL de votre site web. Cliquez dessus pour ouvrir un nouvel onglet :

Les habitués reconnaitront tout de suite la page d’installation de WordPress. Finalement, quelques clics seulement suffisent pour installer WordPress sur Azure :

On a déjà terminé la lecture de cet article ? Pas encore ????

En faisant un tour sur le groupe de ressources, voici ce que le template a créé pour vous :

Les deux premiers sont des éléments de base pour faire fonctionner une application web sur Azure. Le template WordPress a donc aussi créé une base MySQL Database, pour y stocker le contenu de votre site.

C’est assez logique, MySQL est un des choix possibles pour faire fonctionner WordPress. Voici d’ailleurs un exemple des tables contenues dans WordPress :

En ouvrant la ressource MySQL Database, on peut y voir que la configuration attribuée par défaut via ce template n’est pas des moins chères !

Un tour dans les modèles de prix nous permet d’avoir une meilleure idée de son coût mensuel :

Evidemment, la baisse du nombre de cœurs pour MySQL n’ira pas en dessous de 2. De plus il est impossible de repasser sur une édition Basique ????:

Un petite tour nous permet alors de nous faire une idée du coût de l’ensemble :

  • App Service Plan : P1V2 (Windows) : 35.09 € / mois
  • MySQL : 4 vCore / 100GB (General Purpose) : 263.63 € / mois

Dans mon cas, le besoin n’est pas encore présent pour justifier une telle architecture. Mais comment faire pour partir sur des SKUs MySQL plus petits ?

Pour cela, nans allons réutiliser le template déployé juste avant, le modifier et le relancer pour un nouveau déploiement Azure.

Etape II : Suppression des ressources Azure

Retournez sur le groupe de ressources et cliquez ici :

Cet écran vous affiche l’historique des précédents déploiements passés, réussis ou échoués :

Avant d’en relancer un nouveau, supprimez les ressources existantes créées par ce template WordPress. Validez la suppression des ressources Azure comme ceci :

Note : relancer un template sur des ressources existantes ne posent pas de souci en soi. Les ressources existantes sont alors « modifiées » selon le nouveau template.

Etape III : Relancez le déploiement du template

Une fois les ressources Azure supprimées, retournez sur l’écran précédent et cliquez sur le déploiement :

Cliquez sur Redéployer :

Vous retrouvez alors ici toutes les informations SKUs des ressources créées :

Dans mon cas, je n’ai modifié que les informations de la base de données MySQL. Pour cela, j’ai donc rectifié les valeurs suivantes :

  • vmName : B_Gen5_1
  • serverEdition : Basic
  • vCores : 1

Voici donc le bas de page de ma configuration :

Cliquez pour valider le template et lancer le déploiement :

Quelques minutes plus tard, vous retrouvez toutes les ressources Azure dont toujours une base de données MySQL, mais avec un SKU bien moins cher ???? :

Etape IV : Configuration WordPress

Retournez alors sur votre application web afin de terminer l’installation de WordPress. Choisissez la langue qui vous convient puis cliquez sur Continuer :

Terminez en renseignant les derniers champs pour finaliser l’installation :

Une fois authentifié avec votre nouveau compte administrateur, vous voici sur votre console d’administration WordPress :

Etape V : Ajout d’un nom de domaine personnalisé

Toujours en rapport avec Azure, il me parait important d’ajouter un nom de domaine personnalisé et de sécuriser les connexions. Pour cela, retournez sur votre application web Azure, puis cliquez ici :

Vous ne pouvez acheter des domaines directement depuis Azure. Des sites comme GoDaddy ou encore Domain.com proposent ce type de service. Pour ma part, j’utilise régulièrement le site Freenom pour acheter des domaines gratuits dans le but de tests.

Une fois le domaine acheté, pensez à ajouter le domaine sur votre application web Azure pour ensuite ajoutez les enregistrements DNS nécessaires :

Les informations ci-dessus sont nécessaires pour configurer les enregistrements DNS sur mon nouveau domaine. Quelques minutes d’attente et une validation plus tard, le nouveau domaine passe au vert. Finalisez l’ajout de ce dernier :

Etape VI : Ajout d’un certificat TLS

Ce nouveau domaine ne dispose pas encore de certificat TLS comme l’indique la copie d’écran ci-dessous. Cliquez sur les paramétrages TLS/SSL pour corriger cela :

Cliquez alors sur la seconde section, puis sur Créer un certificat managé et choisissez le domaine ajouté puis cliquez sur Créer :

Ce processus prend plusieurs minutes. Une fois terminé, retournez dans vos Domaines personnalisés, puis cliquez ici :

Sélectionnez les éléments dans la liste pour les associer entre eux. Le choix du type pourra se faire selon cet article Microsoft. Cliquez ici pour valider le lien :

Votre nouveau domaine gère bien maintenant la sécurité TLS. Profitez-en alors pour activer cette option :

Autant rester sur le sujet TLS/SSL en activant aussi cette exigence sur votre base de données MySQL :

En retournant sur l’application web, on remarque que l’URL présente sur la page principale reprend maintenant le domaine personnalisé avec le protocole HTTPS. Une fois sur votre site, consultez les détails du certificat généré par GeoTrust :

Etape VI : Activation d’Azure Backup

Toujours dans la configuration, profitez-en pour activer la sauvegarde via Azure Backup :

La sauvegarde de vos données va alors se faire sur une compte de stockage Blob :

Vous pouvez le créer directement ici si nécessaire en cliquant ici. Le nom de celui-ci doit être unique sur Azure :

Sélectionnez ce nouveau compte de stockage pour créer après coup un nouveau conteneur, puis validez :

Définissez votre police de sauvegarde, puis validez là :

Vous pouvez cliquer dès à présent ici pour effectuer votre première sauvegarde manuelle. Les autres suivront automatiquement, en fonction de votre police de sauvegarde :

Allez dans le compte de stockage pour constater l’apparition des fichiers de sauvegarde :

L’architecture est maintenant en place, il ne vous reste plus qu’à utiliser votre console WordPress ????

Conclusion

Cette mise en œuvre d’un site WordPress sur Azure n’est pas des plus compliquée. Microsoft vous simplifie grandement le travail. D’autres articles vont suivre sur le sujet car je souhaite aussi aborder la migration des données ou encore l’optimisation de l’architecture et la mise en place d’autres métriques.