Sauvegarde des disques de VM via Runbook/Snapshot

Sauvegarder ou ne pas sauvegarder ? Telle est la question ! Évidemment, la sauvegarde n’est pas un choix mais bien une nécessité ! Dans cet article, nous allons prendre le temps de nous intéresser aux sauvegardes de machines virtuelles dans un cas très particulier.

Cet article n’a pas pour but de vous parler de la sauvegarde native des machines virtuelles sous Azure, via le service Azure Recovery Service Vault. Cette fonctionnalité est à la portée de tous et fonctionne sans souci.

Mais il arrive dans certains cas que ce service ne fonctionne pas pour certaines machines virtuelles… Voici par exemple le déploiement d’un firewall Fortigate, disponible sur la marketplace d’Azure

Une fois cette machine virtuelle déployée, j’ai rajouté des disques de données supplémentaires à cette dernière

J’ai ensuite créé un Recovery Service Vault pour mettre en place une sauvegarde habituelle

J’ai continué avec la configuration de la police de sauvegarde avec ma machine virtuelle

Seulement l’activation de la sauvegarde Azure me pose quelques soucis

Voici le détail du message d’erreur

{
    "status": "Failed",
    "error": {
        "code": "UserErrorUnSupportedDistribution",
        "message": "Unsupported OS version for virtual machine backup."
    }
}

Ce problème est visiblement connu sur la toile depuis plusieurs années, mais pour l’instant aucune alternative n’a été proposée par Microsoft. Inutile de penser aux agents MARS ou MABS…

Que faire dans ce cas ?

Il est bien possible de faire des snapshots réguliers … à la main !

En quête d’automatisation, je suis tombé sur plusieurs articles intéressants, assez proche sur la solution apportée :

Qu’est-ce qu’Azure Automation ?

Azure Automation est un service d’automatisation et de configuration basé sur le cloud qui prend en charge la gestion cohérente de vos environnements Azure et non-Azure. Il comprend l’automatisation des processus, la gestion des configurations, la gestion des mises à jour, les capacités partagées et les fonctionnalités hétérogènes. L’automatisation vous donne un contrôle total pendant le déploiement, l’exploitation et la mise hors service des charges de travail et des ressources.

Yst@IT
Merci Travis !

Dans notre déploiement, nous allons utiliser un compte Azure Automation pour stocker et lancer notre script PowerShell. Ce script prend en compte les disques rattachés à la machine virtuelle afin d’en faire des snapshots pour chacun d’eux.

Etape 0 : Rappel des prérequis

Passé cette rapide explication, nous allons créer différentes ressources sur Azure pour y parvenir. Comme toujours, des prérequis sont nécessaires pour réaliser cette démonstration :

  • Un tenant Microsoft
  • Une souscription Azure valide
  • Une machine virtuelle déployée

Etape I : Affectation d’un tag sur la machine virtuelle

Le script va effectuer une recherche sur les machines virtuelles à sauvegarder. Il est nécessaire de marquer celles qui nous intéresse. Rendez-vous sur la machine virtuelle concernée et ajoutez-y le tag suivant :

  • Nom : Snapshot
  • Valeur : True

Etape II : Création du compte Azure Automation

Tout commence par la création d’un compte Azure Automation pour héberger notre script PowerShell. Utilisez la barre de recherche du portail Azure pour commencer éa création

Renseignez les éléments de base sur le premier onglet du compte puis lancez directement la création de celui-ci :

Cherchez la section Paramétrages du compte, puis cliquez sur Identité et enfin assignez les rôles Azure

Ajoutez le rôle de Contributeur sur le groupe de ressources contenant la machine virtuelle, puis sauvegardez

Quelques minutes plus tard, constatez la présence de ce dernier dans le tableau précédent

Etape III : Création du Runbook

Continuez avec la création de votre runbook

Renseignez les champs pour valider sa création

La création vous ouvre ensuite l’éditeur de code

Collez le script suivant dans l’éditeur, ou également disponible sur mon GitHub

# Use Managed Identity
Connect-AzAccount -Identity

# Get VMs with snapshot tag
$tagResList = Get-AzResource -TagName "Snapshot" -TagValue "True" | foreach {
Get-AzResource -ResourceId $_.resourceid
}

foreach($tagRes in $tagResList) {
if($tagRes.ResourceId -match "Microsoft.Compute")
{
$vm = Get-AzVM -ResourceGroupName $tagRes.ResourceId.Split("//")[4] -Name $tagRes.ResourceId.Split("//")[8]
#Set local variables
$location = $vm.Location
$resourceGroupName = $vm.ResourceGroupName
$vmname = $vm.Name

# Generate OS snapshot configuration
$snapshotName = $vm.StorageProfile.OsDisk.Name + $(get-date -Format 'yyyy-MM-dd-m')
$snapshot =  New-AzSnapshotConfig `
-SourceUri $vm.StorageProfile.OsDisk.ManagedDisk.Id `
-Location $location `
-CreateOption copy

# Create OS snapshot
New-AzSnapshot `
-Snapshot $snapshot `
-SnapshotName $snapshotName `
-ResourceGroupName $resourceGroupName

# Add SnapshotTags
$tags = (Get-AzResource -ResourceGroupName $resourceGroupName -Name $snapshotName).Tags
$tags += @{Location="$location"; Vm="$vmname"; SnapshotDate="$(get-date -Format 'yyyy-MM-dd-m')"; Script="JLOScript"}
Set-AzResource `
-ResourceGroupName $resourceGroupName `
-Name $snapshotName `
-ResourceType "Microsoft.Compute/snapshots" `
-Tag $tags `
-Force

# Generate DATA snapshot configuration
if($vm.StorageProfile.DataDisks.Count -ge 1){

#Condition with more than one data disks
for($i=0; $i -le $vm.StorageProfile.DataDisks.Count - 1; $i++){

# Generate snapshot configuration
$snapshotName = $vm.StorageProfile.DataDisks[$i].Name + $(get-date -Format 'yyyy-MM-dd-m')
$snapshot =  New-AzSnapshotConfig `
-SourceUri $vm.StorageProfile.DataDisks[$i].ManagedDisk.Id `
-Location $location `
-CreateOption copy

# Create snapshot
New-AzSnapshot `
-Snapshot $snapshot `
-SnapshotName $snapshotName `
-ResourceGroupName $resourceGroupName

# Add SnapshotTags
$tags = (Get-AzResource -ResourceGroupName $resourceGroupName -Name $snapshotName).Tags
$tags += @{Location="$location"; Vm="$vmname"; SnapshotDate="$(get-date -Format 'yyyy-MM-dd-m')"; Script="JLOScript"}
Set-AzResource `
-ResourceGroupName $resourceGroupName `
-Name $snapshotName `
-ResourceType "Microsoft.Compute/snapshots" `
-Tag $tags `
-Force
}
}

else{
Write-Host $vmInfo.Name + " doesn't have any additional data disk."
}
}

else{
$tagRes.ResourceId + " is not a compute instance"
}
}

Etape IV : Test du Runbook

Sauvegardez votre code et lancez un test

Cliquez sur le bouton ci-dessous pour démarrer le test

Attendez un peu

Constatez le succès ou l’échec de votre runbook

Retournez sur le groupe de ressources pour y voir apparaître les snapshots des disques

Cliquez sur l’un d’eux et constatez les tags

Etape V : Mise en place de l’automatisation

Une fois constaté le succès de votre script, il ne vous reste qu’à le publier et à le programmer périodiquement. Retournez sur votre runbook et cliquez sur Publier

Ajoutez une programmation périodique sur votre runbook

Cliquez sur le premier lien

Cliquez sur ajouter une programmation

Renseignez les champs selon votre besoin

Confirmez la bonne création de votre programmation

Contrôlez au prochain lancement de la programmation dans le groupe de ressources

Contrôlez également l’historique des lancements du runbook

Conclusion

Et voilà ! Une tâche manuelle de moins… Cette petite opération nous a permis de bien comprendre l’utilité et la puissance des automatismes possibles sur Azure. Celui-ci est bien évidemment très simple, d’autres sont sans doute très intéressants à mettre en oeuvre ????.

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

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.

Haute disponibilité Azure en Suisse

La haute disponibilité consiste à éliminer les points de défaillance, ce qui implique donc de mettre en place de la redondance. En contrepartie, la reprise après sinistre prend le relais là où la haute disponibilité a échoué. Ce second sujet avait déjà été abordé dans l’article Mettre en place un Disaster Recovery sur Suisse Ouest.

Dans cet article, je souhaite vous parler des zones de disponibilité, déjà présentes dans plusieurs régions Azure, permettant de simplifier les architectures demandant une haute disponibilité. Avant d’aller plus loin, voici un rappel de plusieurs définitions Azure :

Assurer la continuité des activités et la récupération d'urgence à l'aide  des régions jumelées Azure | Microsoft Docs
Schéma expliquant l’architecture locale d’Azure.

Qu’est-ce qu’une zone géographique ?

Une zone géographique Azure désigne une zone du monde contenant au moins une région Azure. Les zones géographiques définissent un marché discret, qui contient généralement deux régions ou plus qui préservent la résidence des données et les limites de conformité.

Source : Microsoft doc

Qu’est-ce qu’une région Azure ?

En termes simples, une région Azure est un ensemble de centres de données reliés par un réseau dédié à faible latence. Combien de datacenters une région contient-elle ? Eh bien, nous n’avons pas de nombre fixe. Il varie. Il existe des régions de différentes tailles. Une région peut être composée d’un seul ou de plusieurs centres de données. Le fait est qu’une région Azure est un groupe d’un ou plusieurs centres de données Azure.

Source : pragimtech.com

Qu’est-ce qu’une zone de disponibilité ?

Les zones de disponibilité sont des emplacements physiquement séparés au sein de chaque région Azure qui tolèrent les défaillances locales. Les défaillances sont aussi bien des défaillances logicielles et matérielles que des événements de type tremblements de terre, inondations et incendies. La tolérance aux défaillances est obtenue grâce à la redondance et à l’isolation logique des services Azure. Pour garantir la résilience, au moins trois zones de disponibilité distinctes sont présentes dans toutes les régions qui ont des zones de disponibilité.

Source : Microsoft docs
Azure est composé de plus de 200 centres de données physiques, organisés en régions et liés par l’un des plus grands réseaux interconnectés du monde.

Comment faire de la haute disponibilité sur Azure ?

Sur Azure, la redondance des services est possible grâce à la multiplication des centres de données à travers le monde. Pour les données stockées sur le Cloud, elles sont systématiquement copiées au minimum 3 fois (Il ne s’agit pas ici des sauvegardes utilisateurs).

Certains services Azure apporte donc une haute disponibilité en étant réparti sur plusieurs régions, zones de disponibilité ou même groupes de disponibilité. A ne pas confondre avec d’autres services (ex. Azure AD) fonctionnant de manière globale ou régionale (ex. réseaux virtuels), où la haut disponibilité est automatiquement assurée par Microsoft. Un lien par service est disponible ici.

Peut-on faire de la haute disponibilité avec de la récupération d’urgence ?

Deux sujets connexes, mais souvent confondus, entrent en jeu dans l’architecture des systèmes qui atténuent les risques de défaillance : la haute disponibilité (HA) et la reprise après sinistre (DR) :

  • La haute disponibilité consiste à éliminer les points de défaillance uniques
  • La reprise après sinistre est le processus consistant à remettre un système dans un état opérationnel lorsqu’il est rendu inopérant

La vidéo ci-dessous vous permet de bien comprendre les différents scénarios possibles pour envisager une récupération d’urgence sur Azure en fonction de deux objectifs très précis :

Objectif de temps de rétablissement (RTO) : durée maximale pendant laquelle un système peut être hors service avant d’être rétabli dans un état opérationnel. Pour certains systèmes, cet objectif de temps de récupération peut être mesuré en heures, voire en jours, mais pour les systèmes plus critiques, les objectifs de temps de récupération sont généralement mesurés en secondes.

Objectif de point de récupération (RPO) : quantité de perte de données, mesurée en temps, qui est tolérable en cas de catastrophe. Pour certains systèmes, la perte d’une journée de données peut être acceptable, tandis que pour d’autres, elle peut se limiter à quelques minutes ou secondes.

Les durées RTO et RPO ont de grand impacts sur la manière dont les plans de reprise après sinistre sont mis en œuvre :

Merci à John pour cette vidéo ????.

Et la Suisse dans tout ça ?

Actuellement : Annoncées en 2019 , deux régions Azure fonctionnent en mode jumelé sur le territoire helvétique :

  • Suisse Nord (Région de Zurich)
  • Suisse Ouest (Région de Genève)

Qu’est-ce qu’une paire de régions Azure ?

Une paire régionale est constituée de deux régions au sein de la même zone géographique. Azure sérialise les mises à jour de plateforme (maintenance planifiée) à travers les paires régionales, garantissant ainsi qu’une seule région de chaque paire est mise à jour à la fois. Si une panne touche plusieurs régions, au moins l’une des régions de chaque paire est prioritaire pour la récupération.

Source : Microsoft Doc
Microsoft Suisse - Nouvelles régions disponibles en 2019 | 3T | TTT

La région Suisse Ouest n’a pas vocation à être accessible à tous les scénarios. Comme l’indique la copie d’écran ci-dessous, la région est encore restreinte aux scénarios de récupération d’urgence :

Comment s’y prendre ?

Dans la configuration actuelle sur Suisse, il est malgré tout possible de faire la haute disponibilité via du multi régions. Les schémas ci-dessous montrent plusieurs architectures Azure, dont un AKS à haute disponibilité grâce au mode actif/actif :

https://docs.microsoft.com/fr-ch/azure/architecture/reference-architectures/n-tier/multi-region-sql-server

Et si je souhaite malgré tout envisager une récupération d’urgence ?

Certains services, comme Azure Site Recovery, apportent des solutions de réplications des données et des ressources. Par exemple, le lien suivant donne la marche à suivre pour activer cette fonctionnalité sur une machine virtuelle Azure.

Cette solution est efficace mais présentes quelques désavantages :

  • Cela n’est pas une solution HA, mais un DR
  • Le fonctionnement d’un DR est généralement Actif / Passif
  • La réplication des données est asynchrone
  • Le coût Azure en sera probablement supérieur (services + transfert des données)

Avant fin 2021 : Microsoft a profité de l’Ignite 2021, organisé en mars dernier, pour nous annoncer l’arrivée des zones de disponibilité (availability zones) pour l’ensemble des zones géographiques Azure :

La bonne nouvelle annoncée pour la Suisse est, selon Microsoft, toujours dans les cartons de 2021. On s’attend à ce que les zones de disponibilités pour Suisse Nord arrivent pour cette fin d’année.

Une fois ces zones ouvertes au public, nous pourrons alors déployer des services Azure sur ces dernières et ainsi accroître certaines SLAs :

Azure Availability Zones - First Look | Nicholas Romyn's Blog
Exemple d’architecture

Pour illustrer mon propos, voici en détail les SLA en vigueur pour les machines virtuelles Azure :

Pour toutes les machines virtuelles dont deux ou plusieurs instances sont déployées dans deux ou plusieurs zones de disponibilité de la même région Azure, nous garantissons que la connectivité de la machine virtuelle à au moins une instance sera assurée au moins 99,99 % du temps.


Pour toutes les machines virtuelles dont deux instances ou plus sont déployées dans le même set de disponibilité ou dans le même groupe d’hôtes dédiés, nous garantissons que vous aurez la connectivité de la machine virtuelle à au moins une instance au moins 99,95 % du temps.


Pour toute machine virtuelle à instance unique utilisant des disques SSD Premium ou Ultra Disk pour tous les disques du système d’exploitation et les disques de données, nous garantissons une connectivité de la machine virtuelle d’au moins 99,9 %.


Pour toute machine virtuelle à instance unique utilisant des disques gérés SSD standard pour les disques du système d’exploitation et les disques de données, nous garantissons une connectivité de la machine virtuelle d’au moins 99,5 %.


Pour toute machine virtuelle à instance unique utilisant des disques gérés HDD standard pour les disques du système d’exploitation et les disques de données, nous garantissons une connectivité de la machine virtuelle d’au moins 95 %.

Source : Azure doc

Conclusion

Les zones de disponibilités sur Suisse apporteront donc plusieurs bénéfices directs :

  • Augmentation de la résilience des applications et la disponibilité prises en charge par le contrat SLA (ex. 99,99 % pour les machines virtuelles)
  • Simplification des schémas d’architecture à haute disponibilité
  • Respect d’exigences réglementaires et de conformité pour les applications critiques.
  • Non compromission de la résidence des donnée

Je manquerai donc pas de revenir vers vous dès la disponibilité du service ????