J’ai loupé ma Landing Zone … ! je fais quoi maintenant 1/2 ?

Niveau : ★★★★☆

Voilà un point qui pose question et inquiétude. Il y a beaucoup à dire sur ce sujet, l’article suivant présente quelques points importants, quelques pistes de réflexion qui permettront de réaligner son environnement sur le CAF (Cloud Adoption Framework).
Très loin d’être exhaustif, mais plutôt destiné à mettre en appétit et à dédramatiser ce sujet.

J’ai déjà déployé mes ressources et mes charges de travail sur Azure et je l’ai fait sans respecter / connaitre / appliquer le CAF. Et je suis maintenant bien ennuyé pour gouverner correctement mes ressources.

Parce que le constat est rapide, pas de LZ (Landing Zone) cohérente, c’est une charge supplémentaire dans toutes les actions de gouvernance que je veux mener. Quelques exemples évidents :

  • Positionner des Azure policy ? C’est abonnement par abonnement
  • Positionner des RBAC, c’est abonnement par abonnement …Etc.

Faut-il jeter l’éponge ? Je ne pense pas. Il y a toujours moyen de rattraper ce manque, même post déploiement.

Ce que l’on trouve en général, et je dirais que c’est presque la meilleure des situations, ce sont des abonnements à la racine du management groupe par défaut nomme Tenant Root Group. Mais ce groupe ne doit pas servir à l’administration. Et les subscriptions à plats ne sont pas la solution.

C’est une premier constat, ça ne s’inscrit pas dans le CAF et ça ne facilite pas la gouvernance. Ce que l’on retrouve également beaucoup, c’est un positionnement de MG (Management groups) pour améliorer la lisibilité, un peu comme une arborescence de répertoires. Cela ne correspond pas non plus à un besoin de gouvernance.
On gagne en lisibilité dans la console, c’est propre, mais rien d’autre.

Finalement, peu importe ce qui est en place hors du CAF, ce qui est important c’est comment réaligner au mieux l’existant.

Il y a aussi avant / pendant cette phase un point essentiel, c’est de convaincre les équipes en place et expliquer pourquoi ces actions sont nécessaires.
Et en tout premier lieu, expliquer qu’il n’y a pas de coûts liés aux MG et aux subscriptions. Ce ne sont que des conteneurs organisationnels !
Des boites vides sur lesquelles on va pouvoir positionner des stratégies et des équipes d’exploitation.
Pour convaincre, je m’appuie souvent sur l’exemple ci-dessous. Comment il va être possible de passer de 4 attachements RBAC 4 attachements d’Azure Policy à 1 seul en s’appuyant sur les MG et l’héritage. Ce n’est pas une architecture cible, mais c’est un schéma simple et parlant pour commencer à expliquer les avantages et la granularité que vont amener les managements groups.

Pour moi, c’est à éviter et ce n’est pas une bonne pratique. Il faut largement préférer le MG intermédiaire, qui porte dans la majorité des cas le nom de l’entreprise ou de l’organisation.

Mener ce changement, c’est créer des MG sur le modèle du CAF. C’est un prérequis au déplacement des subscriptions et des ressources.

On passe donc de l’ancienne version à gauche à la nouvelle à droite.

Seconde tâche, avant de basculer les ressources, décider de ce que seront les RBAC et les Policy Azure. C’est à dire vérifier que les policy existantes (s’il elles existent) sont reconduites. Par exemple, si il y a des policy liées aux contraintes légales sur les subscriptions existantes, il faut que le passage de la source à la cible s’accompagne des mêmes attachements de policy. Si j’ai choisi de déployer mes ressources en France uniquement, je dois porter ce choix sur ma nouvelle arborescence.

Je dois ainsi attacher cette stratégie mais sur un scope différent. Ici également, la présence de MG me donne plus de facilités.
Comme ce choix est une stratégie d’entreprise qui doit être appliquée sur toutes les subscriptions, je la positionne au + haut niveau, le MG intermédiaire, plutôt que de positionner sur chacune des subscriptions.

Cette remarque est également valable pour les RBAC, je dois conduire la même réflexion sur le sujet des droits.

Troisième tâche, poursuivre l’identification et contrôler si les premiers piliers du CAF sont en place. C’est à dire (et oui …), le naming et le tagging. Je pense que la refonte de l’arborescence doit OBLIGATOIREMENT s’accompagner d’une réflexion approfondie sur le sujet naming / tagging.

Il faut avoir les idées claires sur les ressources. Trois pistes de travail :

1 / Le naming n’existe pas, alors il va falloir en mode « dégradé » s’appuyer sur des tags pour compléter l’absence de convention de nommage. Il est difficile ou impossible de renommer une ressource, la meilleur des solutions est de venir ajouter des informations normalement présentes dans la convention de nommage par des paire clefs / valeurs dans les tags.

2 / Le naming et Ok mais tagging est absent, c’est également à compléter. Mais c’est un peu plus facile

3 / Naming et Tagging sont Ok, c’est une bonne situation, il est possible de passer à la suite.

Voir à ce sujet cette série d’articles : https://thierrybtblog.wordpress.com/2022/03/01/gouvernance-azure-pas-si-facile/

Une bonne pratique est également de traiter les tâches 2 et 3 en parallèle. Elles sont intimement liées, les Azure Policy utilisent avec bonheur le contenu des tags pour améliorer encore la gouvernance. Ce qui est présenté ici avec Philippe sur son (excellent) chaine Youtube.
https://www.youtube.com/watch?v=-KvzxuwEVic&list=PLxf9spw2semQssko_pwji9lpqgUDGHxlB&index=13

Voilà pour quelques uns des points les plus importants, c’est à traiter à minima pour réussir sa transition d’environnement non gouverné ou difficile à gouverner vers le Cloud Adoption Framework, le nec + ultra ;).

Mais … il manque quelque chose.
Puisqu’il est important de respecter le CAF, alors autant le faire jusqu’au bout et appliquer une des bonnes pratiques en terme de management groups. C’est à dire créer un %G spécifique qui va accueillir les subscriptions à décommissionner une fois tous les environnements basculés. Cette partie à droite, normalement coincée entre la Sanbox et la LZ.

Voilà, cette fois, tout est Ok, dans le respect du Cloud Adoption Framework ! Alors, tentées / tentés par l’aventure ?

Dans la partie 2/2, le sujet sera revu mais traité avec une approche différente appelée Brownfield. C’est une transition par duplication qui va sécurisé au maximum la bascule.

Si ce sujet vous inspire et que vous avez des remarques, ajouts, points contraires, n’hésitez pas à commenter et à partager vos expériences sur ce sujet de l’architecture conceptuelle.

Architecture conceptuelle qui mène à la Landing Zone, quid des briques Data et IA 2/2 ?

Niveau : ★★★★☆

Seconde partie pour cet article dédié aux Landing Zones et plus particulièrement à la Landing Zone Data et la Landing Zone IA. La première partie (Data) est à retrouver sur ce lien : https://thierrybtblog.wordpress.com/2024/01/02/architecture-conceptuelle-qui-mene-a-la-landing-zone-quid-des-briques-data-et-ia-1-2/

Avec l’arrivée en force des services IA en entreprise et la volonté (très claire, voir https://news.microsoft.com/ignite-2023/?WT.mc_id=AZ-MVP-5003759) de Microsoft d’accompagner l’adoption, il faut maintenant penser à déployer ces services dans les règles de l’art. C’est à dire dans une infrastructure conceptuelle classique avec l’ajout d’une Landing Zone dédiée IA.

On trouve quelques pistes de démarrage dans cet article récent, et c’est une très bonne base de départ.
https://techcommunity.microsoft.com/t5/azure-architecture-blog/azure-openai-landing-zone-reference-architecture/ba-p/3882102

Mais également sur cette vidéo : https://learn.microsoft.com/en-us/shows/azure-enablement/integrating-openai-into-your-azure-landing-zone

Voilà tout ce dont il est question en termes de services pour déployer cette LZ. La liste est complète et (peut-être) exhaustive.

-Azure API Management (APIM)
-Azure Web Apps
-Azure AI services
-Azure Managed Identities
-Azure Application Gateway
-Azure Private DNS Zones
-Azure Private DNS Resolver
-Azure Key Vault
-Azure Virtual Network (VNet)
-Azure Private Endpoints
-Azure Private Link
-Azure Network Security Groups (NSGs)
-Azure Application Gateway and Web Application Firewall
-Azure AI services and Network Security

Pas de surprise, ce sont des composants communs, que l’on retrouve dans de nombreuses architecture Azure et auxquels sont ajoutés les services propres à l’IA.

Pour une vue plus globale, tous les scénarios proposent une même image avec une subscription + une interconnexion VNet (peering) comme sur l’image suivante :

Une subscription de services IA (spoke) interconnectée avec la subscription de connectivité, le Hub. Là aussi, c’est une architecture assez classique, les services partagés du hub sont consommés par le spoke : https://learn.microsoft.com/fr-fr/azure/architecture/reference-architectures/hybrid-networking/hub-spoke?tabs=cli/?WT.mc_id=AZ-MVP-5003759

Il manque pourtant une information importante puisque AUCUN LIEN n’est proposé vers les managements groups. Et bien entendu, une subscription ne peut rester « orpheline », il faut donc lui trouver un management groups de rattachement ou créer pour ce besoin IA une nouvelle arborescence.

Solution 1 : Une nouvelle arborescence (depuis Contoso, mon MG intermédiaire).

Pourquoi pas. Ce n’est pas complètement à écarter. Un peu sur le modèle de la LZ Data avec l’ajout d’une branche dans l’arborescence puis éventuellement de sous branches. Un peu comme sur le schéma ci-dessous (voir l’article 1 pour l’intégralité du schéma)..

Un MG (Management groups), c’est un conteneur de RBAC / Stratégies Azure. La question à se poser avant de valider cette nous arborescence est : Ai-je besoin de gouverner l’IA de façon très différente du reste de mes subscriptions ? Si oui, alors il peut être intéressant de positionner un nouveau MG, si non, il est préférable d’utiliser l’arborescence existante. Si pour la Data (voir article 1/2), je considère qu’il y a pas mal de spécifiques, je ne pense pas que ce soit le cas pour l’IA. C’est un choix.

Solution 2 : Une nouvelle sous-arborescence depuis ma LZ applicative.

Ma LZ applicative, c’est cette partie en jaune.

Et une solution envisageable est d’ajouter une sous-arborescence sous le MG Landing Zone et un MG IA.

Pour ma part, je trouve que cette solution est là plus cohérente. C’est ajouter une possibilité de gouvernance supplémentaire, sans trop alourdir l’arborescence.

Ce sont les 2 solutions qui me paraissent les plus évidentes, les plus cohérentes. Avec la possibilité éventuelle de déployer à l’intérieur d’autres MG comme par exemple une IA Offline et une IA Online, sur le modèle d’une LZ traditionnelle.

Reste encore pas mal de travail pour exploiter et sécurisé au mieux cette nouvelle arborescence. Avec quelques stratégies par exemple. Il n’existe pas (encore ?) de policy ou d’initiative dédiées IA, mais on peut déjà trouver des sujets liés comme les services cognitifs.

Du pain sur la planche ! 🙂

Pour en terminer avec ce sujet, le lien vers le Git IA : https://github.com/FreddyAyala/AzureAIServicesLandingZone/tree/main/Workload/AI

On y trouve des informations complémentaires et quelques schémas de mise en œuvre comme celui de l’accès public.

Sujet passionnant que ces LANDING ZONE !

Si ce sujet vous inspire et que vous avez des remarques, ajouts, points contraires, n’hésitez pas à commenter et à partager vos expériences sur ce sujet de l’architecture conceptuelle.

Architecture conceptuelle qui mène à la Landing Zone, quid des briques Data et IA 1/2 ?

Niveau : ★★★★☆

Le sujet de l’architecture conceptuelle qui mène à la Landing Zone et assez vaste mais très documenté. Les références proposées par l’éditeur sont nombreuses et peuvent être dans la majorité des cas adoptées moyennant quelques adaptations.

Adapter, c’est respecter une partie de la référence du CAF (Cloud Adoption Framework) Microsoft en intégrant le spécifique du client. C’est à dire assez souvent en simplifiant l’arborescence proposée ci dessous …

Ce qui fait l’arborescence c’est en fait la partie centrale, pilier de la gouvernance avec la découpe en management group, puis en abonnement. Ce sont des conteneurs sur lesquels il va être obligatoire d’attacher des RBAC (Azure role-based access control) et des policy Azure. Plus simple à lire sous cette forme :

En blanc, les management group, en jaune, les subscriptions.
Avant de penser à positionner des ressources dans ces subscriptions, on va lier des droits d’administrations, les fameux RBAC et des « contraintes », les Policy.
Contraintes entre guillemets, c’est assez réducteur d’en parler uniquement sous cette forme, même si effectivement, lorsque l’on positionne dans l’arborescence une policy comme Deny network interfaces having a public IP associated, on peut parler de contrainte (utile). Ce qui n’est plus le cas par exemple lorsque l’on positionne une policy comme Deploy-Resource-Diag. Là, on comprend bien que c’est une aide à la conformité de l’architecture conceptuelle, un déploiement auto qui va permettre de s’assurer que tous les diag optionnels sont automatiquement déployés sur les ressources.

Pour en finir avec cette rapide présentation, les conteneurs sont donc utilisés pour y attacher policy et RBAC, et un mécanisme d’héritage va « descendre » les attachements du haut de l’arborescence sur tout ce qui se trouve plus bas dans l’arborescence.

Par exemple, une stratégie d’entreprise placée à haut niveau (Contoso dans l’exemple ci dessus) comme l’obligation de déployer les ressources en France uniquement est un stratégie du haut de l’arborescence qui va être appliquée par héritage sur la totalité des management group et des subscriptions (hors Tenant root group qui est un cas particulier).

Voilà le pourquoi de cette hiérarchie.
Et comme il a été expliqué plus haut, on adapte pour les besoins du client avec par exemple la suppression du management group SAP, la fusion Management / Connectivity, l’ajout d’un MG (management group) NonProd sous la Landing Zones…etc.
Ce sont des cas assez courants et plutôt faciles à traiter.

D’autres le sont moins et donnent lieu à interprétation. La Data (sujet de ce premier article) et l’IA (sujet d’une seconde partie qui fera l’objet d’un autre article dédié).
Ou placer les suscriptions ? Besoin de créer d’autres MG ?
Voici quelques pistes pour placer efficacement ces deux cas particuliers. Première réflexion, Plaform ou Landing Zones ou des MG dédiés ?

Attention, ce sont des choix discutables, des pistes de réflexion.

Se pencher sur le CAF Data, c’est… une aventure. Mais attention, pas une aventurette, une aventure, une VRAIE !

Ce que dit le CAF n’est pas très très clair. Mais comme la doc est très conséquente, je suis peut-être passé à côté d’un point de la doc (?!).

Ce que l’on peut comprendre ici, c’est le besoin d’avoir 2 LZ supplémentaires à minima. 1 Data Management et une ou plusieurs Data Landing Zones.
C’est ce qui est dit dans la doc éditeur :
Vous pouvez commencer avec une seule zone d’atterrissage et évoluer vers plusieurs zones d’atterrissage, puis les gouverner toutes à partir de la zone d’atterrissage de gestion des données.

Bien pour cette partie.
Reste à savoir comment intégrer ces deux Landing Zone dans l’arborescence de référence.

Se baser sur ce schéma de la doc c’est comprendre que ? Ce n’est pas comprendre grand chose.
On trouve 5 subscriptions dans cette vue. Identity, Management et Connectivity qui sont classiquement les 3 subscriptions à la racine 3 MG du MG de Platform…

Pour les 2 subscriptions restantes, interprétation libre.

Solution 1, pour moi, la plus cohérente.
Un nouveau MG Data, au même niveau que Platform sous lequel on trouve un nouveau MG Data Management d’un côté et un second MG Data Landing Zone de l’autre. Le MG Data Management héberge la Sub Data Management et le MG Data landing Zone LES Sub Data 1, data 2 …etc.
Le MG chapeau Data est utile pour attacher RBAC et policy communes au deux MG Data Management et Data landing Zone.

Si l’on essaye de projeter cette organisation en terme de management group uniquement, voilà ce que cela peut donner. Pas très lisible, mais l’essentiel est là. Intégration d’un MG chapeau Data au même niveau que le modèle de référence Platform et Landing Zones.

Complexe ? Je ne pense pas. Il ne faut jamais oublier que les Management group sont des conteneurs d’organisation, pas des ressources à part entière. Il ne faut pas se priver et l’ajout d’un peu plus de granularité est à mon sens une bonne chose.
A terme, c’est faciliter la gouvernance de l’ensemble.

Solution 2, qui ne sera pas mon choix.
Mais qui peut être interprétée de cette manière dans la schéma (il me semble). Intégration de Data ou du contenu de Data sous Platform. J’aime beaucoup moins cette solution, les MG Data Management et Data landing Zone héritent des policy et RBAC de Platform, ce qui n’est pas franchement cohérent. La solution 1 est plus granulaire et pour moi plus adaptée.

D’autres modèles sont à mon avis possibles. Mais je pense que la solution 1 est un bon point de départ.
Si ce sujet vous inspire et que vous avez des remarques, ajouts, points contraires, n’hésitez pas à commenter et à partager vos expériences sur ce sujet de l’architecture conceptuelle.
Dans la seconde partie du sujet, il sera question de l’ajout de l’IA dans cette infrastructure.