<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Clément Guillemare, Auteur</title>
	<atom:link href="https://www.riskinsight-wavestone.com/author/clement-guillemare/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.riskinsight-wavestone.com/author/clement-guillemare/</link>
	<description>Le blog cybersécurité des consultants Wavestone</description>
	<lastBuildDate>Fri, 04 Jul 2025 08:21:57 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://www.riskinsight-wavestone.com/wp-content/uploads/2024/02/Blogs-2024_RI-39x39.png</url>
	<title>Clément Guillemare, Auteur</title>
	<link>https://www.riskinsight-wavestone.com/author/clement-guillemare/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Résilience Entra ID</title>
		<link>https://www.riskinsight-wavestone.com/2025/07/resilience-entra-id/</link>
					<comments>https://www.riskinsight-wavestone.com/2025/07/resilience-entra-id/#respond</comments>
		
		<dc:creator><![CDATA[Clément Guillemare]]></dc:creator>
		<pubDate>Thu, 03 Jul 2025 13:54:39 +0000</pubDate>
				<category><![CDATA[Cybersecurity & Digital Trust]]></category>
		<category><![CDATA[Eclairage]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Resilience]]></category>
		<category><![CDATA[Risk management]]></category>
		<guid isPermaLink="false">https://www.riskinsight-wavestone.com/?p=26512</guid>

					<description><![CDATA[<p>Entra ID (anciennement Azure AD) est une solution de gestion des identités et des accès. Celle-ci permet d’administrer le cycle de vie des différentes identités, allant d’utilisateurs à des appareils en passant par des applications. Contrairement à Microsoft Active Directory,...</p>
<p>Cet article <a href="https://www.riskinsight-wavestone.com/2025/07/resilience-entra-id/">Résilience Entra ID</a> est apparu en premier sur <a href="https://www.riskinsight-wavestone.com">RiskInsight</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p style="text-align: justify;"><span data-contrast="auto">Entra ID (anciennement Azure AD) est une solution de gestion des identités et des accès. Celle-ci permet d’administrer le cycle de vie des différentes identités, allant d’utilisateurs à des appareils en passant par des applications. Contrairement à Microsoft Active Directory, Entra ID étend ses capacités d&rsquo;authentification et d&rsquo;autorisation au-delà du réseau de l&rsquo;entreprise pour couvrir les applications SaaS, les workloads on-premises et Cloud utilisant des appareils appartenant à l&rsquo;entreprise ou BYOD. Ces nouvelles fonctionnalités et connexions sont obtenues grâce à des protocoles basés sur le web comme SAML et une structure d&rsquo;identité simplifiée (forêt AD vs locataire Entra ID).</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> </span></p>
<p style="text-align: justify;"><span data-contrast="auto">Dans cet article, nous mettrons en lumière le défi de la cyber-résilience d&rsquo;Entra ID, expliquerons pourquoi les fonctionnalités natives sont des solutions incomplètes et présenterons le résultat d&rsquo;un PoC mené sur un outil open-source, Microsoft 365 DSC, pour sauvegarder et récupérer les données d&rsquo;Entra ID.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> </span></p>
<p> </p>
<h2 style="text-align: justify;" aria-level="2"><b><span data-contrast="none">La résilience cyber dans les services Cloud managés</span></b><span data-ccp-props="{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559738&quot;:160,&quot;335559739&quot;:80}"> </span></h2>
<p> </p>
<p style="text-align: justify;"><span data-contrast="auto">Avec Entra ID, la stratégie de gestion des répertoires est conforme au paradigme de l&rsquo;informatique dématérialisée. Cela signifie que les différentes couches de réseau, de stockage, de calcul, de système d&rsquo;exploitation et d&rsquo;application sont gérées par Microsoft, ce qui permet au client de se concentrer uniquement sur ses données d&rsquo;identité.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> </span></p>
<p><img fetchpriority="high" decoding="async" class="aligncenter wp-image-26526 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2025/07/Diapositive1.jpg" alt="Different technologies managed diffrently" width="1280" height="720" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2025/07/Diapositive1.jpg 1280w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/07/Diapositive1-340x191.jpg 340w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/07/Diapositive1-69x39.jpg 69w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/07/Diapositive1-768x432.jpg 768w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/07/Diapositive1-800x450.jpg 800w" sizes="(max-width: 1280px) 100vw, 1280px" /></p>
<p style="text-align: justify;"><span data-contrast="auto">Cette différence fondamentale a un impact sur la résilience du service. En effet, la création de snapshots pour sauvegarder l&rsquo;intégralité du système, qui est une pratique courante sur l’Active Directory (AD), n&rsquo;est pas native sur un service managé tel qu&rsquo;Entra ID. Ainsi, pour faire face à un scénario de reprise après sinistre lié à des activités malveillantes, nous ne pouvons compter que sur les fonctionnalités natives de Microsoft : le modèle de cycle de vie de l&rsquo;identité, le modèle d&rsquo;administration RBAC et les capacités d&rsquo;importation/exportation.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> </span></p>
<p> </p>
<h2 style="text-align: justify;" aria-level="2"><b><span data-contrast="none">Le modèle incomplet de soft deletion</span></b><span data-ccp-props="{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559738&quot;:160,&quot;335559739&quot;:80}"> </span></h2>
<p> </p>
<p style="text-align: justify;"><span data-contrast="auto">Pour garantir la résilience, les services Cloud utilisent largement un mécanisme de soft delete, ou suppression logique. Son objectif principal est de pouvoir récupérer les données en cas de suppression accidentelle. Par exemple, dans le coffre-fort d&rsquo;Azure Recovery Service, la suppression logique est la dernière mesure de protection en cas de suppression intentionnelle ou non intentionnelle du coffre-fort. Combiné aux paramètres d&rsquo;immuabilité, le coffre-fort ne peut pas être effacé, quelles que soient les autorisations de l&rsquo;administrateur.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> </span></p>
<p style="text-align: justify;"><span data-contrast="auto">Dans Entra ID, le concept de suppression logique existe mais est insuffisant pour assurer la résilience des données pour deux raisons. D&rsquo;une part, il n&rsquo;y a pas de distinction de rôle entre la suppression logique et la suppression définitive, ni de rôle de récupération, c&rsquo;est-à-dire que les autorisations requises pour supprimer un objet sont suffisantes pour permettre une suppression permanente. D&rsquo;autre part, le cycle de vie des objets dans Entra ID (créer, gérer, supprimer) est régi par le même rôle :</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> </span></p>
<ul style="text-align: justify;">
<li><span data-contrast="auto">Le rôle d&rsquo;administrateur utilisateurs permet de créer et de supprimer un utilisateur.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> </span></li>
<li><span data-contrast="auto">Le rôle d&rsquo;administrateur applicatif en nuage permet d&rsquo;enregistrer une application, de configurer tous les aspects de l&rsquo;application et de supprimer définitivement l&rsquo;application.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> </span></li>
<li><span data-contrast="auto">Le rôle d&rsquo;administrateur Cloud Device permet d&rsquo;ajouter un appareil, d’en configurer tous les aspects et de le désenregistrer.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> </span></li>
</ul>
<h2 aria-level="2"> </h2>
<h2 style="text-align: justify;" aria-level="2"><b><span data-contrast="none">L’impact d’une suppression sur Entra ID</span></b><span data-ccp-props="{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559738&quot;:160,&quot;335559739&quot;:80}"> </span></h2>
<p> </p>
<p style="text-align: justify;"><span data-contrast="auto">La conception actuelle d&rsquo;Entra ID rend les rôles d&rsquo;administrateur utilisateurs, d&rsquo;authentification privilégiée, d&rsquo;application (on-premises ou Cloud), Intune et Windows 365 d&rsquo;autant plus critiques, car leur compromission peut entraîner la perte permanente des données d&rsquo;identité. L&rsquo;impact d&rsquo;une telle suppression peut être une perte d&rsquo;accès aux applications et aux données, une perte de permissions et une incapacité à administrer.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> </span></p>
<p style="text-align: justify;"><span data-contrast="auto">Bien que la suppression des utilisateurs hybrides synchronisés avec un AD on-premises soit réversible, des informations telles que l&rsquo;attribution de rôles seront perdues, ce qui menace le modèle de droits et d&rsquo;accès. Ce n&rsquo;est pas le cas pour les identités dans le Cloud, qui font généralement partie du plan de contrôle. Dans le cadre du modèle d&rsquo;accès de l&rsquo;entreprise, le plan de contrôle comprend les accès les plus sensibles, ce qui peut entraîner la compromission globale d&rsquo;un système d&rsquo;information.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> </span></p>
<p style="text-align: justify;"><span data-contrast="auto">Dans un scénario de reprise après sinistre, certains actifs sont plus critiques que d&rsquo;autres et doivent être sauvegardés en priorité. Il s&rsquo;agit notamment des éléments suivants :</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> </span></p>
<ul style="text-align: justify;">
<li><span data-contrast="auto">Utilisateurs du Plan de contrôle, groupes and roles assignés</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> </span></li>
<li><span data-contrast="auto">Applications d&rsquo;entreprise (service principal) avec des autorisations critiques sur Azure ou Microsoft 365</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> </span></li>
<li><span data-contrast="auto">Postes de travail</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> </span></li>
</ul>
<h2 aria-level="2"> </h2>
<h2 style="text-align: justify;" aria-level="2"><b><span data-contrast="none">Comparaison des méthodes de sauvegarde open-source</span></b><span data-ccp-props="{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559738&quot;:160,&quot;335559739&quot;:80}"> </span></h2>
<p> </p>
<p style="text-align: justify;"><span data-contrast="auto">Afin de réduire la probabilité d&rsquo;un risque de perte de données Entra ID à des fins malveillantes, la mise en place d&rsquo;une solution de sauvegarde semble indispensable, au moins pour le plan de contrôle afin de garder le contrôle sur le système d&rsquo;Information et le reconstruire. Nous avons donc analysé 3 méthodes open-source permettant d&rsquo;assurer la sauvegarde des données :</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> </span></p>
<ul style="text-align: justify;">
<li><b><span data-contrast="none">Microsoft Graph PowerShell</span></b><span data-contrast="auto"> : une bibliothèque PowerShell pour les API Microsoft Graph. Vous pouvez créer vos propres scripts pour exporter et importer les attributs des objets Entra ID qui correspondent aux besoins de votre organisation.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> </span></li>
<li><b><span data-contrast="none">Microsoft Entra Exporter </span></b><span data-contrast="auto">: un module PowerShell qui exporte une copie locale de certains attributs Entra ID (utilisateurs, applications, applications d’entreprise, rôles, etc.) dans un fichier JSON.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> </span></li>
<li><b><span data-contrast="none">Microsoft 365 Desired State Configuration (DSC)</span></b><span data-contrast="auto"> : un module PowerShell pour la configuration déclarative, le déploiement et la gestion des services Microsoft 365.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> </span></li>
</ul>
<h2> </h2>
<h2 style="text-align: justify;"><b><span data-contrast="none">Sauvegarde des objets Entra ID avec Microsoft 365 DSC</span></b><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> </span></h2>
<p> </p>
<p style="text-align: justify;"><span data-contrast="auto">Dans cette partie, nous allons expliquer comment nous avons testé la solution open source Microsoft 365 DSC et partager les résultats et conclusions obtenus.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> </span></p>
<p> </p>
<h3 style="text-align: justify;"><b><span data-contrast="none">Notre PoC</span></b><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> </span></h3>
<p style="text-align: justify;"><span data-contrast="auto">Microsoft 365 DSC permet de gérer la configuration et l’état des services Microsoft 365 selon une approche déclarative. En définissant l’état souhaité plutôt que les étapes spécifiques, il simplifie la gestion de configurations cloud complexes et assure la cohérence de l’environnement.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> </span></p>
<p style="text-align: justify;"><span data-contrast="auto">Dans le cadre d’un PoC, la population test déployée dans notre tenant est la suivante :</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> </span></p>
<ul style="text-align: justify;">
<li><span data-contrast="auto">30 utilisateurs Cloud Only (générés aléatoirement par Microsoft lors de la création du tenant de test)</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> </span></li>
<li><span data-contrast="auto">10 groupes de sécurité (attribués aléatoirement aux utilisateurs)</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> </span></li>
</ul>
<p style="text-align: justify;"><span data-contrast="auto">L’objectif de ce PoC est d’identifier les avantages et les limites de la solution à travers une série de cas d’usage testés et documentés :</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> </span></p>
<table>
<tbody>
<tr>
<td style="text-align: center;" colspan="3" width="623">
<p><strong>Utilisateurs</strong></p>
</td>
</tr>
<tr>
<td style="text-align: center;" colspan="2" width="365">
<p><strong>Cas d’usage</strong></p>
</td>
<td style="text-align: center;" width="257">
<p><strong>Résultats</strong></p>
</td>
</tr>
<tr>
<td width="161">
<p><strong>Que se passe-t-il si l’on supprime un utilisateur puis que l’on restaure une sauvegarde ?</strong></p>
</td>
<td width="204">
<p>L’utilisateur revient-il avec toutes ses données ?<br />Son mot de passe est-il restauré ou remplacé ?<br />Ses informations reviennent-elles ?</p>
</td>
<td width="257">
<p>Tous les attributs liés aux utilisateurs supprimés ne sont pas restaurés. Toutefois, leur mot de passe est remplacé par un mot de passe par défaut. En cas d’incohérence, une erreur non-bloquante est générée dans le script, empêchant l’attribution d’attributs pointant vers des objets inexistants.<br />Si l’attribut “Ensure” de l’utilisateur est défini sur “Absent”, alors il ne sera pas restauré.</p>
</td>
</tr>
<tr>
<td width="161">
<p><strong>Que se passe-t-il si un utilisateur est désactivé alors qu’il est actif dans la sauvegarde ?</strong></p>
</td>
<td width="204">
<p>Est-il réactivé?</p>
</td>
<td rowspan="2" width="257">
<p>Il n’est pas possible de connaître l’état (actif ou désactivé) d’un utilisateur depuis la sauvegarde.<br />Selon le besoin, on peut définir le paramètre “Ensure” sur “Absent” ou “Present” pour assurer la cohérence entre l’état du tenant et l’export.</p>
<p><br />« Absent” : l’utilisateur est considéré comme désactivé et ne sera pas déployé à la restauration.<br /><br /></p>
<p>“Présent” : l’utilisateur est considéré comme actif et sera déployé.<br />Si l’on tente de restaurer un utilisateur marqué “Absent” qui n’existe pas dans Entra ID, une simple confirmation de non-existence est renvoyée.</p>
</td>
</tr>
<tr>
<td width="161">
<p><strong>Que se passe-t-il si un utilisateur est actif mais qu’il est désactivé dans la sauvegarde ?</strong></p>
</td>
<td width="204">
<p>Est-il désactivé ?</p>
</td>
</tr>
<tr>
<td width="161">
<p><strong>Que se passe-t-il si un utilisateur est ajouté, mais non présent dans la sauvegarde ?</strong></p>
</td>
<td width="204">
<p>Est-il supprimé ?</p>
<p>Ses données sont-elles conservées ?</p>
</td>
<td width="257">
<p>Aucun impact observé sur le nouvel utilisateur.</p>
</td>
</tr>
<tr>
<td width="161">
<p><strong>Que se passe-t-il si on effectue une sauvegarde sans modifier l’utilisateur ?</strong></p>
</td>
<td width="204">
<p>Si rien ne change, que se passe-t-il ?</p>
<p>Si seul un attribut (ex. un groupe) est supprimé, que se passe-t-il ?</p>
<p>Si un attribut est ajouté ?</p>
<p>Si un attribut est modifié (mot de passe) ?</p>
<p>Si un groupe auquel l’utilisateur appartenait est supprimé ?</p>
<p>Qu’en est-il des licences assignées si la sauvegarde est faite avant modification ?</p>
<p>Que se passe-t-il si le rôle de l’utilisateur est modifié avant la sauvegarde ?</p>
</td>
<td width="257">
<p>Le nom d’utilisateur sert à associer les attributs : s’il change, l’utilisateur ne peut plus être retrouvé dans la sauvegarde (sauf si modifié aussi dans celle-ci).</p>
<p>Les attributs présents dans la sauvegarde écrasent ceux existants. Le reste sera inchangé. Ainsi, tout attribut non inclus dans la sauvegarde reste inchangé.</p>
</td>
</tr>
</tbody>
</table>
<p> </p>
<table>
<tbody>
<tr>
<td style="text-align: center;" colspan="3" width="623">
<p><strong>Groupes</strong></p>
</td>
</tr>
<tr>
<td style="text-align: center;" colspan="2" width="365">
<p><strong>Cas d’usage</strong></p>
</td>
<td style="text-align: center;" width="257">
<p><strong>Résultats</strong></p>
</td>
</tr>
<tr>
<td width="161">
<p><strong>Que se passe-t-il si je supprime un groupe puis restaure une sauvegarde ?</strong></p>
</td>
<td width="204">
<p>Le groupe est-il restauré avec toutes ses données ?</p>
<p>Les membres sont-ils réintégrés ?</p>
<p>La sauvegarde contient-elle les liens membres/groupe ?</p>
<p>Tous les groupes sont-ils sauvegardés ?</p>
<p>Les droits internes au groupe sont-ils conservés ?</p>
</td>
<td width="257">
<p>Seuls les groupes de sécurité et les groupes Microsoft 365 avec le bon label de confidentialité sont sauvegardés.</p>
<p>La sauvegarde contient les membres et le propriétaire, mais pas les droits internes au groupe.</p>
<p>Il faut refaire la sauvegarde car le groupe recréé n’aura pas le même ID. La sauvegarde considère alors que le groupe n’existe pas.</p>
</td>
</tr>
<tr>
<td width="161">
<p><strong>Que se passe-t-il si je sauvegarde un groupe déjà existant mais dont certains attributs ont été modifiés ?</strong></p>
</td>
<td width="204">
<p>Que se passe-t-il si le nom a changé ?</p>
<p>Si un utilisateur a quitté le groupe après la sauvegarde ?</p>
<p>Si de nouveaux utilisateurs ont été ajoutés ?</p>
</td>
<td width="257">
<p>La sauvegarde écrase les anciens attributs à l’exception du nom.</p>
</td>
</tr>
<tr>
<td width="161">
<p><strong>Que se passe-t-il si un groupe existe dans le tenant mais pas dans la sauvegarde ?</strong></p>
</td>
<td width="204">
<p>Est-il supprimé ou impacté lors de la restauration ?        </p>
</td>
<td width="257">
<p>Aucun impact observé, hormis pour les informations définies dans le fichier de configuration.</p>
</td>
</tr>
</tbody>
</table>
<p style="text-align: justify;"><span data-contrast="auto">Le processus a nécessité la configuration d’un compte de service avec les autorisations appropriées (User.ReadWrite.All, Group.ReadWrite.All) sur Entra ID afin d’interagir avec l’API Microsoft Graph pour l’export et l’import des données.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559738&quot;:240}"> </span></p>
<p style="text-align: justify;"><span data-contrast="auto">Ces autorisations ont permis au compte de service de récupérer les configurations et données nécessaires depuis Entra ID et de les réimporter.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559738&quot;:240}"> </span></p>
<p> </p>
<h2 style="text-align: justify;"><b><span data-contrast="none">RÉSULTATS DU POC MICROSOFT 365 DSC</span></b><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> </span></h2>
<p> </p>
<p style="text-align: justify;"><span data-contrast="auto">À l’issue des tests, nous avons pu rassembler des informations sur les atouts et les limites de la solution.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> </span></p>
<h3 style="text-align: justify;"><b><span data-contrast="auto">Points positifs :</span></b><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:120}"> </span></h3>
<ul style="text-align: justify;">
<li><b><span data-contrast="none">Sélection granulaire des configurations</span></b><span data-contrast="none"> : </span><span data-contrast="auto">La solution permet de cibler précisément les configurations à sauvegarder.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:120}"> </span></li>
<li><b><span data-contrast="none">Restauration sans suppression</span></b><span data-contrast="none"> : </span><span data-contrast="auto">Les utilisateurs et groupes actuels sont conservés lors de la restauration, évitant les suppressions accidentelles.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:120}"> </span></li>
<li><b><span data-contrast="none">Écrasement des attributs obsolètes</span></b><span data-contrast="none"> :</span><span data-contrast="auto"> Les attributs sauvegardés remplacent les anciens.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:120}"> </span></li>
<li><b><span data-contrast="none">Format de stockage des données</span></b><span data-contrast="none"> : </span><span data-contrast="auto">Les données sont enregistrées en JSON, ce qui facilite leur manipulation.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:120}"> </span></li>
<li><b><span data-contrast="none">Automatisation possible</span></b><span data-contrast="none"> : </span><span data-contrast="auto">Une fois les outils installés, la solution est facilement automatisable.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:120}"> </span></li>
<li><b><span data-contrast="none">Supervision et alertes</span></b><span data-contrast="none"> : </span><span data-contrast="auto">Microsoft 365 DSC permet de surveiller la cohérence des données et de déclencher des alertes en cas de changements suspects.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:120}"> </span></li>
<li><b><span data-contrast="none">Gestion des versions de snapshots</span></b><span data-contrast="none"> : </span><span data-contrast="auto">Il est possible de gérer plusieurs versions de snapshots de manière simple.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:120}"> </span></li>
<li><b><span data-contrast="none">Journalisation détaillée</span></b><span data-contrast="none"> : </span><span data-contrast="auto">La solution permet de générer des journaux très détaillés, facilitant l’audit et le suivi.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:120}"> </span></li>
</ul>
<h3> </h3>
<h3 style="text-align: justify;"><b><span data-contrast="auto">Limites identifiées :</span></b><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:120}"> </span></h3>
<ul style="text-align: justify;">
<li><b><span data-contrast="none">Données incomplètes dans la sauvegarde</span></b><span data-contrast="none"> : </span><span data-contrast="auto">Tous les attributs ne sont pas capturés, entraînant une possible perte d’informations.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:120}"> </span></li>
<li><b><span data-contrast="none">Limite de taille de sauvegarde</span></b><span data-contrast="none"> : </span><span data-contrast="auto">La taille est limitée à 11 Mo, ce qui peut être insuffisant pour des environnements plus vastes.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:120}"> </span></li>
<li><b><span data-contrast="none">État de désactivation non enregistré</span></b><span data-contrast="none"> : </span><span data-contrast="auto">Les statuts de désactivation ne sont pas sauvegardés, pouvant entraîner la réactivation d’utilisateurs désactivés.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:120}"> </span></li>
<li><b><span data-contrast="none">Données et identifiants non chiffrés</span></b><span data-contrast="none"> : </span><span data-contrast="auto">Les fichiers de sauvegarde contiennent des données sensibles non chiffrées.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:120}"> </span></li>
<li><b><span data-contrast="none">Perte des IDs objets</span></b><span data-contrast="none"> : </span><span data-contrast="auto">Lors de l’import, les IDs sont perdus, ce qui peut générer des doublons lors d’imports ultérieurs.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:120}"> </span></li>
<li><b><span data-contrast="none">Service Principal privilégié</span></b><span data-contrast="none"> : </span><span data-contrast="auto">Le service principal utilisé possède des droits étendus, ce qui peut poser des risques de sécurité si mal géré</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:120}"> </span></li>
</ul>
<p style="text-align: justify;"><span data-contrast="auto">Il est important de noter que cet outil ne permet pas véritablement une “restauration” : il est possible de recréer les objets, mais pas de restaurer les services associés. En effet, les liens entre les nouveaux objets ID et les applications ne sont pas restaurables, ce qui constitue une limitation propre à Entra ID.</span><b><span data-contrast="auto"> </span></b><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559738&quot;:240,&quot;335559739&quot;:120}"> </span></p>
<p> </p>
<h2 style="text-align: justify;"><b><span data-contrast="none">NOTRE AVIS SUR MICROSOFT 365 DSC </span></b><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> </span></h2>
<p> </p>
<p style="text-align: justify;"><span data-contrast="auto">Microsoft 365 DSC est un excellent outil pour des usages de base et pour la documentation, grâce à sa simplicité de prise en main et de déploiement dans des environnements de test. Il est également efficace comme outil de supervision grâce à sa gestion de version et ses journaux détaillés.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> </span></p>
<p style="text-align: justify;"><span data-contrast="auto">Cependant, il n’est pas adapté aux environnements de grande taille, en raison de ses limitations en termes de scalabilité, d’expérience utilisateur et de sécurité (notamment pour les configurations et les identifiants). Il peut également générer des incohérences ou des duplications, car les IDs objets, qui peuvent être référencés ailleurs, sont irrécupérables.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> </span></p>
<p style="text-align: justify;"><span data-contrast="auto">Des solutions complémentaires peuvent s’avérer nécessaires, comme des scripts pour le traitement des fichiers de configuration et pour garantir la cohérence des modifications, ainsi que des processus clairs de chiffrement et de sauvegarde.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> </span></p>
<p style="text-align: justify;"><span data-contrast="auto">Nous recommandons donc de toujours évaluer précisément les besoins, de planifier les développements complémentaires nécessaires, et d’utiliser principalement la solution à des fins de supervision et de tests.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> </span></p>
<p style="text-align: justify;"><span data-contrast="auto">Compte tenu des limites des outils open source de Microsoft, il peut être pertinent d’examiner les offres de fournisseurs tiers, tels que Semperis ou Quest, spécialistes du domaine. Ces alternatives pourraient répondre aux défis de scalabilité, de fiabilité et de sécurité, et offrir des options mieux adaptées à des environnements complexes. Il est important de rester ouvert à ces solutions et de les évaluer selon les besoins spécifiques de votre organisation.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> </span></p>
<p>Cet article <a href="https://www.riskinsight-wavestone.com/2025/07/resilience-entra-id/">Résilience Entra ID</a> est apparu en premier sur <a href="https://www.riskinsight-wavestone.com">RiskInsight</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.riskinsight-wavestone.com/2025/07/resilience-entra-id/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Enterprise Access Model (2/2) : Quelles solutions pour sécuriser un Control Plane ? </title>
		<link>https://www.riskinsight-wavestone.com/2025/01/enterprise-access-model-2-2-quelles-solutions-pour-securiser-un-control-plane/</link>
					<comments>https://www.riskinsight-wavestone.com/2025/01/enterprise-access-model-2-2-quelles-solutions-pour-securiser-un-control-plane/#respond</comments>
		
		<dc:creator><![CDATA[Clément Guillemare]]></dc:creator>
		<pubDate>Fri, 31 Jan 2025 15:07:04 +0000</pubDate>
				<category><![CDATA[Eclairage]]></category>
		<category><![CDATA[CICD]]></category>
		<category><![CDATA[Cloud security]]></category>
		<category><![CDATA[compromission]]></category>
		<category><![CDATA[control plane]]></category>
		<guid isPermaLink="false">https://www.riskinsight-wavestone.com/?p=25217</guid>

					<description><![CDATA[<p>Dans le premier article de cette série, nous avons étudié les fondements de l’Enterprise Access Model (EAM) de Microsoft, en nous concentrant sur la définition de la portée du Control Plane pour protéger l&#8217;administration du cloud. Face à l&#8217;évolution de...</p>
<p>Cet article <a href="https://www.riskinsight-wavestone.com/2025/01/enterprise-access-model-2-2-quelles-solutions-pour-securiser-un-control-plane/">Enterprise Access Model (2/2) : Quelles solutions pour sécuriser un Control Plane ? </a> est apparu en premier sur <a href="https://www.riskinsight-wavestone.com">RiskInsight</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p style="text-align: justify;"><span data-contrast="auto">Dans le premier article de cette série, nous avons étudié les fondements de l’Enterprise Access Model (EAM) de Microsoft, en nous concentrant sur la définition de la portée du Control Plane pour protéger l&rsquo;administration du cloud. Face à l&rsquo;évolution de la sécurité, le modèle traditionnel AD 3-tiers n&rsquo;est plus suffisant pour les complexités et les dépendances des environnements cloud. Le passage au cloud a introduit de nouveaux risques, notamment la compromission globale provenant d&rsquo;un point faible unique du Control Plane. Nous avons ensuite souligné l&rsquo;importance d&rsquo;identifier et d&rsquo;isoler les composants clés dont la compromission pourrait entraîner une compromission globale de l&rsquo;Entra ID.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> </span></p>
<p style="text-align: justify;"><span data-contrast="auto">Dans ce deuxième article, nous analyserons des scénarios d&rsquo;attaque pratiques qui menacent le Control Plane, et fournirons des recommandations concrètes pour atténuer ces risques. Plus précisément, nous explorerons trois scénarios d&rsquo;attaque courants qui menacent significativement le Control Plane : la compromission du support IT, du poste de travail de l&rsquo;administrateur du Control Plane et du CI/CD. En comprenant ces vecteurs d&rsquo;attaque et en mettant en œuvre des mesures de sécurité robustes, il est possible d’améliorer considérablement la résilience de son environnement cloud contre les compromissions potentielles.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> </span></p>
<p style="text-align: justify;"><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> </span></p>
<h2><b><span data-contrast="auto">La compromission du support IT </span></b><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> </span></h2>
<p style="text-align: justify;"><span data-contrast="auto">Prenons un scénario où le compte d&rsquo;un membre du support IT est compromis. Cela peut découler d’une attaque par hameçonnage, d&rsquo;une opération d&rsquo;ingénierie sociale ou même d&rsquo;une tentative d&rsquo;usurpation d&rsquo;identité. Ces comptes peuvent souvent réinitialiser des mots de passe, y compris ceux des utilisateurs ayant des privilèges très élevés, tels que l&rsquo;administrateur d&rsquo;application ou le </span><i><span data-contrast="auto">Owner</span></i><span data-contrast="auto"> Azure au niveau </span><i><span data-contrast="auto">root</span></i><span data-contrast="auto">, obtenant ainsi un accès non autorisé à des ressources critiques, allant de l&rsquo;Entra ID au cloud, en passant par les environnements sur site et les services SaaS.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> </span></p>
<p style="text-align: justify;"><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> <img decoding="async" class="aligncenter size-full wp-image-25219" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2025/01/1-IT-support-compromise-scenario.jpg" alt="1-IT-support-compromise-scenario" width="930" height="417" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2025/01/1-IT-support-compromise-scenario.jpg 930w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/01/1-IT-support-compromise-scenario-426x191.jpg 426w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/01/1-IT-support-compromise-scenario-71x32.jpg 71w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/01/1-IT-support-compromise-scenario-768x344.jpg 768w" sizes="(max-width: 930px) 100vw, 930px" /></span></p>
<p style="text-align: justify;"><span data-contrast="auto">Ce type d&rsquo;attaque illustre un point crucial que nous avons abordé dans le premier article : la nécessité de délimiter et d&rsquo;isoler efficacement le Control Plane. Le service d&rsquo;assistance, bien qu&rsquo;essentiel pour les opérations quotidiennes, doit être rigoureusement séparé des fonctions administratives à haut privilège. L&rsquo;absence d&rsquo;une telle séparation peut permettre à un attaquant de passer d&rsquo;un compte de service d&rsquo;assistance compromis à un rôle d&rsquo;administrateur global.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> </span></p>
<p style="text-align: justify;"><span data-contrast="auto">Pour réduire ce risque, les organisations doivent mettre en œuvre une série de défenses stratégiques : </span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> </span></p>
<ul style="text-align: justify;">
<li data-leveltext="-" data-font="Calibri" data-listid="2" data-list-defn-props="{&quot;335551671&quot;:0,&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Calibri&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;-&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" aria-setsize="-1" data-aria-posinset="0" data-aria-level="1"><span data-contrast="auto">Dans un premier temps, isoler les comptes du Control Plane de ceux gérés par le support IT est essentiel. De cette façon, même si un compte du service d’assistance est compromis, il ne pourra pas accéder ou manipuler des comptes à haut privilège. Ainsi, la compromission d’un compte de service d’assistance ne permettrait pas d’accéder à des comptes à privilèges élevés ou de les manipuler.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> </span></li>
<li data-leveltext="-" data-font="Calibri" data-listid="2" data-list-defn-props="{&quot;335551671&quot;:0,&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Calibri&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;-&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" aria-setsize="-1" data-aria-posinset="0" data-aria-level="1"><span data-contrast="auto">Dans un second temps, utiliser exclusivement des comptes cloud dédiés aux tâches du Control Plane réduit la probabilité d’exploitation des systèmes hérités comme point d’entrée. </span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> </span></li>
<li data-leveltext="-" data-font="Calibri" data-listid="2" data-list-defn-props="{&quot;335551671&quot;:0,&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Calibri&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;-&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" aria-setsize="-1" data-aria-posinset="0" data-aria-level="1"><span data-contrast="auto">Finalement, associer ces comptes à une authentification multi-facteurs (MFA) résistante au phishing, à une administration Just-In-Time (JIT), à une gouvernance d’identité robuste et à des politiques d’accès conditionnel, ainsi qu’à une conformité stricte des postes de travail, crée une défense en couches qui diminue considérablement le risque d’une telle attaque.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> </span></li>
</ul>
<p style="text-align: justify;"><span data-contrast="auto">Ce scénario souligne l’importance de considérer chaque compte comme un vecteur de menace potentiel. Mettre en place une isolation stricte et des contrôles rigoureux permet de garantir la sécurité de votre Control Plane en cas de compromission d’un compte de niveau inférieur.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> </span></p>
<p style="text-align: justify;"><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> </span></p>
<h2><b><span data-contrast="auto">Compromission d’un poste administrateur du Control Plane </span></b><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> </span></h2>
<p style="text-align: justify;"><span data-contrast="auto">Considérons maintenant une situation où un attaquant parvient à compromettre le compte administrateur de l’Intune Mobile Device Manager (MDM). Avec cet accès, l&rsquo;attaquant obtient le contrôle du portail d&rsquo;administration d&rsquo;Intune, lui permettant de manipuler le poste de travail d&rsquo;un administrateur du Control Plane. Il peut déployer des configurations malveillantes, installer des portes dérobées ou se connecter directement à l&rsquo;ordinateur de l&rsquo;administrateur (Remote help. Cet accès transforme le poste de l&rsquo;administrateur en un outil puissant pour une exploitation ultérieure, offrant à l&rsquo;attaquant la capacité d&rsquo;exécuter des commandes, d&rsquo;exfiltrer des données sensibles et de manipuler des ressources cloud sans recourir à des techniques de piratage supplémentaires.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> </span></p>
<p style="text-align: justify;"><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> <img decoding="async" class="aligncenter size-full wp-image-25221" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2025/01/2-Control-plane-administration-workstation-compromise-scenario.jpg" alt="2-Control-plane-administration-workstation-compromise-scenario." width="925" height="414" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2025/01/2-Control-plane-administration-workstation-compromise-scenario.jpg 925w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/01/2-Control-plane-administration-workstation-compromise-scenario-427x191.jpg 427w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/01/2-Control-plane-administration-workstation-compromise-scenario-71x32.jpg 71w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/01/2-Control-plane-administration-workstation-compromise-scenario-768x344.jpg 768w" sizes="(max-width: 925px) 100vw, 925px" /></span></p>
<p style="text-align: justify;"><span data-contrast="auto">Ce scénario nous rappelle un principe clé du premier article : la sécurité du cloud doit être abordée de manière holistique. Il ne s&rsquo;agit pas seulement de sécuriser les identités, mais aussi de garantir que les appareils utilisés pour accéder au Control Plane sont sécurisés. Dans ce cas, le poste de l&rsquo;administrateur du Control Plane devient un atout critique qui, s&rsquo;il est compromis, pourrait compromettre les défenses cloud les plus sophistiquées.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> </span></p>
<p style="text-align: justify;"><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> </span></p>
<h2><b><span data-contrast="auto">Compromission du CI/CD</span></b><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> </span></h2>
<p style="text-align: justify;"><span data-contrast="auto">Les environnements Cloud reposant fortement sur l’automatisation, les pipelines CI/CD pour la gestion de l&rsquo;infrastructure deviennent des cibles privilégiées pour les attaquants. Imaginons un scénario où un attaquant parvient à accéder au compte d&rsquo;un ingénieur DevOps par le biais d&rsquo;une attaque de phishing ou d&rsquo;un vol d&rsquo;identifiants. Avec cet accès, il introduit un changement malveillant d&rsquo;Infrastructure as Code (IaC) dans un dépôt Git, sachant que cela déclenchera un pipeline Azure automatisé. Le pipeline valide, planifie et déploie l&rsquo;infrastructure sur Azure, entraînant la destruction ou l&rsquo;altération de ressources clés d&rsquo;Azure, c&rsquo;est-à-dire les fondations de la </span><i><span data-contrast="auto">Landing Zone</span></i><span data-contrast="auto">. De plus, l&rsquo;attaquant modifie la configuration YAML du pipeline Azure. Ce faisant, il provoque la fuite d&rsquo;un secret </span><i><span data-contrast="auto">Service Principal </span></i><span data-contrast="auto">dans les journaux ou la console de débogage, qui est ensuite utilisé pour effectuer des appels non autorisés à l&rsquo;API Graph. En exploitant cette identité sur-privilégiée, l&rsquo;attaquant peut escalader ses privilèges, compromettant ainsi les identités Entra ID ou les comptes Office 365.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> </span></p>
<p style="text-align: justify;"><span data-contrast="auto">Les </span><i><span data-contrast="auto">runners</span></i><span data-contrast="auto"> jouent également un rôle crucial dans le pipeline CI/CD. Ces agents sont responsables de l&rsquo;exécution des tâches dans le pipeline et peuvent être hébergés et maintenus par le fournisseur cloud ou sur site. Comme pour tout serveur, leur compromission peut être utilisée comme point de pivot pour rebondir vers la </span><i><span data-contrast="auto">Landing Zone</span></i><span data-contrast="auto"> (par exemple : vol de </span><i><span data-contrast="auto">token</span></i><span data-contrast="auto">) ou d&rsquo;autres services associés.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> </span></p>
<p style="text-align: justify;"><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> <img loading="lazy" decoding="async" class="aligncenter size-full wp-image-25223" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2025/01/3-CICD-compromise-scenario.jpg" alt="3-CICD-compromise-scenario." width="932" height="387" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2025/01/3-CICD-compromise-scenario.jpg 932w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/01/3-CICD-compromise-scenario-437x181.jpg 437w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/01/3-CICD-compromise-scenario-71x29.jpg 71w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/01/3-CICD-compromise-scenario-768x319.jpg 768w" sizes="auto, (max-width: 932px) 100vw, 932px" /></span></p>
<p style="text-align: justify;"><span data-contrast="auto">Ce scénario illustre l&rsquo;interconnexion de la sécurité du cloud. Le pipeline CI/CD, souvent perçu comme une fonction de back-office, est en réalité profondément intégré au Control Plane. Sa compromission peut entraîner des conséquences dévastatrices et généralisées pour les fondations mêmes de vos opérations cloud.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> </span></p>
<p style="text-align: justify;"><span data-contrast="auto">Pour se protéger contre une telle menace, il est crucial d&rsquo;isoler le pipeline du Control Plane, dont le but est de construire la </span><i><span data-contrast="auto">Landing Zone</span></i><span data-contrast="auto">, des pipelines de projet. Ensuite, il convient d&rsquo;appliquer le principe du moindre privilège, en veillant à ce que les comptes et les </span><i><span data-contrast="auto">runners</span></i><span data-contrast="auto"> au sein du pipeline n&rsquo;aient que les permissions nécessaires pour accomplir leurs tâches. Par exemple, pour limiter les permissions des </span><i><span data-contrast="auto">runners</span></i><span data-contrast="auto">, nous pouvons utiliser l&rsquo;identité fédérée et demander des </span><i><span data-contrast="auto">token</span></i><span data-contrast="auto"> OpenID Connect (OIDC), qui fournissent un accès limité et temporaire aux services cloud comme Azure. De plus, l&rsquo;adoption de pratiques de sécurité automatisées telles que </span><i><span data-contrast="auto">Configuration as Code</span></i><span data-contrast="auto"> (CaC) ou </span><i><span data-contrast="auto">Policy as Code</span></i><span data-contrast="auto"> (PaC) peut aider à réduire les erreurs humaines et à garantir une sécurité cohérente dans vos déploiements.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> </span></p>
<p style="text-align: justify;"><span data-contrast="auto">En matière de sécurité cloud, chaque processus et chaque outil doit être considéré sous l&rsquo;angle du risque. Le pipeline CI/CD ne fait pas exception. En sécurisant ce composant critique, vous protégez non seulement votre Control Plane, mais vous assurez également la stabilité et la sécurité de l&rsquo;ensemble de votre infrastructure cloud. Cette approche holistique de la sécurité du cloud est ce qui permettra finalement à vos opérations de fonctionner correctement, même face à des attaques sophistiquées.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> </span></p>
<p style="text-align: justify;"><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> </span></p>
<h2>Synthèse</h2>
<p style="text-align: justify;"><span data-contrast="auto">Dans cet article, nous avons examiné trois scénarios d&rsquo;attaque qui menacent la sécurité du Control Plane dans les environnements cloud : la compromission du support IT, la compromission du poste de travail de l&rsquo;administrateur du Control Plane et la compromission du pipeline CI/CD.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> </span></p>
<p style="text-align: justify;"><span data-contrast="auto">Chacun de ces scénarios met en évidence l&rsquo;importance d&rsquo;une approche de sécurité à plusieurs niveaux, incluant des mesures techniques et organisationnelles. Nous proposons une stratégie en quatre étapes pour concevoir votre Control Plane et le sécuriser contre les attaques potentielles :</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> </span></p>
<ul style="text-align: justify;">
<li data-leveltext="" data-font="Symbol" data-listid="3" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"><b><span data-contrast="auto">Étape 1 : Définir ce qui est systémique pour votre infrastructure</span></b><span data-contrast="auto"> : identifier les composants et comptes critiques au sein de votre Control Plane qui, s&rsquo;ils sont compromis, pourraient entraîner une perturbation globale.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> </span></li>
<li data-leveltext="" data-font="Symbol" data-listid="3" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"><b><span data-contrast="auto">Étape 2 : Evaluer votre risque actuel avec un audit de sécurité</span></b><span data-contrast="auto"> : réaliser des audits de sécurité réguliers pour évaluer l&rsquo;état actuel de la sécurité de votre Control Plane. Cela vous aidera à identifier les vulnérabilités et à prioriser les efforts de remédiation.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> </span></li>
<li data-leveltext="" data-font="Symbol" data-listid="3" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"><b><span data-contrast="auto">Étape 3 : Définir une feuille de route pour isoler et sécuriser les actifs les plus à risque</span></b><span data-contrast="auto"> : sur la base des résultats de votre audit, élaborer une feuille de route claire pour sécuriser les actifs les plus critiques. Cela devrait inclure des échéanciers, l&rsquo;allocation des ressources et des actions spécifiques pour atténuer les risques identifiés.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> </span></li>
<li data-leveltext="" data-font="Symbol" data-listid="3" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"><b><span data-contrast="auto">Étape 4 : Se préparer aux scénarios de suppression du cloud</span></b><span data-contrast="auto"> : envisager les pires scénarios où des sections entières de votre infrastructure cloud pourraient être compromises ou désactivées. Élaborer des plans de contingence et s&rsquo;assurer que les processus de sauvegarde et de reprise après sinistre sont en place.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> </span></li>
</ul>
<p style="text-align: justify;"><span data-contrast="auto">En suivant ces recommandations, vous pouvez construire une défense robuste contre les menaces potentielles à votre Control Plane, garantissant que votre environnement cloud reste sécurisé et résilient.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> </span></p>
<p style="text-align: justify;"><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> </span></p>
<p style="text-align: justify;"><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> </span></p>
<p> </p>
<p>Merci à <strong>Louis CLAVERO</strong> pour sa contribution à cet article.</p>
<p>Cet article <a href="https://www.riskinsight-wavestone.com/2025/01/enterprise-access-model-2-2-quelles-solutions-pour-securiser-un-control-plane/">Enterprise Access Model (2/2) : Quelles solutions pour sécuriser un Control Plane ? </a> est apparu en premier sur <a href="https://www.riskinsight-wavestone.com">RiskInsight</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.riskinsight-wavestone.com/2025/01/enterprise-access-model-2-2-quelles-solutions-pour-securiser-un-control-plane/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Enterprise Access Model (1/2): Comment définir un Control Plane pour sécuriser l’administration Cloud et empêcher une compromission à grande échelle</title>
		<link>https://www.riskinsight-wavestone.com/2025/01/enterprise-access-model-1-2-comment-definir-un-control-plane-pour-securiser-ladministration-cloud-et-empecher-une-compromission-a-grande-echelle/</link>
					<comments>https://www.riskinsight-wavestone.com/2025/01/enterprise-access-model-1-2-comment-definir-un-control-plane-pour-securiser-ladministration-cloud-et-empecher-une-compromission-a-grande-echelle/#respond</comments>
		
		<dc:creator><![CDATA[Clément Guillemare]]></dc:creator>
		<pubDate>Mon, 27 Jan 2025 06:38:34 +0000</pubDate>
				<category><![CDATA[Eclairage]]></category>
		<category><![CDATA[administration cloud]]></category>
		<category><![CDATA[control plane]]></category>
		<category><![CDATA[enterprise access model]]></category>
		<category><![CDATA[sécurité cloud]]></category>
		<guid isPermaLink="false">https://www.riskinsight-wavestone.com/?p=25200</guid>

					<description><![CDATA[<p>Cet article est le premier d’une série de deux, traitant de l’implémentation de l’Enterprise Access Model un modèle d’administration propose par Microsoft pour sécuriser l’administration des environnements Cloud.   Aujourd’hui, la plupart des entreprises utilisent le Cloud public pour héberger de...</p>
<p>Cet article <a href="https://www.riskinsight-wavestone.com/2025/01/enterprise-access-model-1-2-comment-definir-un-control-plane-pour-securiser-ladministration-cloud-et-empecher-une-compromission-a-grande-echelle/">Enterprise Access Model (1/2): Comment définir un Control Plane pour sécuriser l’administration Cloud et empêcher une compromission à grande échelle</a> est apparu en premier sur <a href="https://www.riskinsight-wavestone.com">RiskInsight</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p style="text-align: justify;"><i><span data-contrast="auto">Cet article est le premier d’une série de deux, traitant de l’implémentation de l’Enterprise Access Model un modèle d’administration propose par Microsoft pour sécuriser l’administration des environnements Cloud. </span></i><span data-ccp-props="{}"> </span></p>
<p style="text-align: justify;"><span data-contrast="auto">Aujourd’hui, la plupart des entreprises utilisent le Cloud public pour héberger de nombreuses applications, répondant à tout type de besoin allant du commercial au fonctionnel. Bien que cela apporte des avantages, le Cloud introduit également de nouveaux paradigmes, qui doivent être clairement compris afin d’être sécurisés.</span><span data-ccp-props="{}"> </span></p>
<p style="text-align: justify;"><span data-contrast="auto">Historiquement, les entreprises s’appuient sur un modèle à 3 tiers pour sécuriser les environnements Active Directory. Ce modèle segmente le réseau en trois niveaux distincts : le tiers 0 pour les systèmes et les données les plus sensibles, le tiers 1 pour l’administration des serveurs et le tiers 2 pour les postes de travail et les terminaux utilisateurs. Bien que ce modèle se soit avéré efficace dans les environnements on-premise, le passage à des infrastructures basées sur le Cloud nécessite une réévaluation de son applicabilité.</span><span data-ccp-props="{}"> </span></p>
<p style="text-align: justify;"><span data-contrast="auto">Ce premier article se concentre sur une tendance récente et inquiétante : la compromission globale d’Entra ID, résultant de la compromission d’un compte du support. Une telle attaque peut avoir de graves répercussions, aux impacts finalement plus larges qu’une compromission d’un administrateur de domaine AD. Nous explorerons les mécanismes à l’origine de ces attaques, leurs implications et, surtout comment nous devrions nous protéger contre ce type d’élévation de privilèges et mettre en œuvre un modèle d’administration adapté au Cloud et sécurisé.</span><span data-ccp-props="{}"> </span></p>
<p style="text-align: justify;"><span data-ccp-props="{}"> </span></p>
<h2><b><span data-contrast="auto">Comprendre Entra ID, Active Directory, et les permissions Azure </span></b><span data-ccp-props="{}"> </span></h2>
<p style="text-align: justify;"><span data-contrast="auto">Comme le montre la figure 1, l’Active Directory et Entra ID (anciennement Azure Active Directory) sont deux services d’identité avec des propriétés structurelles et des protocoles IAM différents. Alors qu’Entra ID se concentre sur la gestion des identités et des accès dans les environnements Cloud et on-premise, en fournissant l’authentification et la gestion des utilisateurs, les permissions Azure s’attèlent à la gestion plus large de l’infrastructure et des services Cloud. Comprendre les distinctions et les interconnexions entre ces outils est essentiel pour maintenir une sécurité robuste et un contrôle d’accès efficace dans les environnements actuels d’entreprise.</span><span data-ccp-props="{}"> </span></p>
<p> </p>
<p style="text-align: justify;"><span data-ccp-props="{&quot;134245418&quot;:true}"> <img loading="lazy" decoding="async" class="aligncenter wp-image-25201 size-full" title="Figure 1: Différences clés entre Active Directory et Entra ID. " src="https://www.riskinsight-wavestone.com/wp-content/uploads/2025/01/Figure-1-Differences-cles-entre-Active-Directory-et-Entra-ID.jpg" alt="Figure 1: Différences clés entre Active Directory et Entra ID. " width="538" height="300" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2025/01/Figure-1-Differences-cles-entre-Active-Directory-et-Entra-ID.jpg 538w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/01/Figure-1-Differences-cles-entre-Active-Directory-et-Entra-ID-343x191.jpg 343w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/01/Figure-1-Differences-cles-entre-Active-Directory-et-Entra-ID-71x39.jpg 71w" sizes="auto, (max-width: 538px) 100vw, 538px" /></span></p>
<p style="text-align: center;"><i><span data-contrast="none">Figure </span></i><i><span data-contrast="none">1</span></i><i><span data-contrast="none">: Différences clés entre Active Directory et Entra ID.</span></i><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:200,&quot;335559740&quot;:240}"> </span></p>
<p> </p>
<p style="text-align: justify;"><span data-contrast="auto">Entre Active Directory, Entra ID et Azure, chacun gère son propre modèle de permissions :</span><span data-ccp-props="{}"> </span></p>
<ul style="text-align: justify;">
<li data-leveltext="" data-font="Symbol" data-listid="27" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"><span data-contrast="auto">Active Directory utilise un modèle de permission unifié pour tous ses objets, des utilisateurs aux machines.</span><span data-ccp-props="{}"> </span></li>
<li data-leveltext="" data-font="Symbol" data-listid="27" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"><span data-contrast="auto">Entra ID utilise le contrôle d’accès basé sur des rôles (</span><i><span data-contrast="auto">RBAC : Role-Based Access Control</span></i><span data-contrast="auto">) pour gérer les objets de son tenant (par exemple : les utilisateurs, les appareils, les applications).</span><span data-ccp-props="{}"> </span></li>
<li data-leveltext="" data-font="Symbol" data-listid="27" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"><span data-contrast="auto">Azure Resource Manager (RM) utilise le RBAC pour gérer les ressources Azure</span><span data-ccp-props="{}"> </span></li>
</ul>
<p style="text-align: justify;"><span data-contrast="auto">Cependant, il existe un pont entre Entra ID et Azure RM grâce à la relation unique entre un tenant Entra ID et une organisation Azure : l’utilisateur </span><i><span data-contrast="auto">Global Administrator</span></i><span data-contrast="auto"> d’Entra ID se voit attribuer par défaut le rôle User Access Administrator dans Azure. Par conséquent, il peut dès lors s’attribuer n’importe quelle permission sur le scope Azure. </span><span data-ccp-props="{}"> </span></p>
<p style="text-align: justify;"><span data-contrast="auto">Bien qu’il existe un lien entre Azure et Entra ID, il est important de garder à l’esprit que les rôles dans Entra ID et Azure RM peuvent être attribués indépendamment l’un de l’autre. Par exemple, un utilisateur Entra ID standard avec des autorisations très limitées sur Entra ID peut détenir les privilèges les plus élevés dans Azure, ce qui constitue un point critique de vulnérabilité exploité dans les attaques.</span><span data-ccp-props="{}"> </span></p>
<p style="text-align: justify;"><span data-contrast="auto">L’élévation de privilèges dans Entra ID peut entraîner une compromission importante d’Azure (y compris toutes les ressources et infrastructures), de Microsoft 365, des postes de travail, des serveurs Windows, des réseaux cloud, etc.</span><span data-ccp-props="{}"> </span></p>
<p style="text-align: justify;"><span data-contrast="auto">Les rôles à plus haut privilège dans chacun de ces services sont :</span><span data-ccp-props="{}"> </span></p>
<ul style="text-align: justify;">
<li data-leveltext="" data-font="Symbol" data-listid="24" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"><b><span data-contrast="auto">Entra ID</span></b><span data-contrast="auto">: </span><i><span data-contrast="auto">Global Administrator</span></i><span data-ccp-props="{}"> </span></li>
<li data-leveltext="" data-font="Symbol" data-listid="24" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"><b><span data-contrast="auto">Azure RM</span></b><span data-contrast="auto">: </span><i><span data-contrast="auto">Owner</span></i><span data-contrast="auto"> (qui peut être restreint à un périmètre allant d’un Management Group jusqu’à une ressource)</span><span data-ccp-props="{}"> </span></li>
</ul>
<p style="text-align: justify;"><span data-contrast="auto">Ces différences significatives signifient que les concepts du modèle 3-tiers traditionnel de l’AD ne peuvent pas être appliqués directement aux environnements cloud. Nous devons repenser et adapter ces concepts pour nous assurer qu’ils sont pertinents et efficaces dans les contextes Clouds, notamment en répondant adéquatement aux exigences et aux risques spécifiques associés à ces environnements.</span><span data-ccp-props="{}"> </span></p>
<p style="text-align: justify;"><span data-ccp-props="{&quot;335559685&quot;:1440}"> </span></p>
<h2><b><span data-contrast="auto">Une compromission globale d’Entra ID bien réelle</span></b><span data-ccp-props="{}"> </span></h2>
<p style="text-align: justify;"><span data-contrast="auto">Pour se concentrer sur la compromission et l’élévation de privilèges de l’administration Cloud, quelques hypothèses initiales sont prises :</span><span data-ccp-props="{}"> </span></p>
<ul style="text-align: justify;">
<li data-leveltext="-" data-font="Tahoma" data-listid="18" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Tahoma&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;-&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"><span data-contrast="auto">L’entreprise victime utilise un tenant Entra ID comme fournisseur d’identité (Identity Provider = IdP).</span><span data-ccp-props="{}"> </span></li>
<li data-leveltext="-" data-font="Tahoma" data-listid="18" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Tahoma&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;-&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"><span data-contrast="auto">L’entreprise victime utilise Microsoft Intune pour gérer toute sa flotte de postes de travail.</span><span data-ccp-props="{}"> </span></li>
<li data-leveltext="-" data-font="Tahoma" data-listid="18" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Tahoma&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;-&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"><span data-contrast="auto">L’entreprise victime a un abonnement Azure (</span><i><span data-contrast="auto">Azure subscription</span></i><span data-contrast="auto">) pour supporter ses activités liées aux VDI (Virtual Desktop Infrastructures).</span><span data-ccp-props="{}"> </span></li>
<li data-leveltext="-" data-font="Tahoma" data-listid="18" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Tahoma&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;-&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"><span data-contrast="auto">Un compte du support a été compromis (on ne précise pas la source de l’attaque, mais il est important de noter qu’il s’agit d’un scenario très plausible pouvant être le résultat d’un hameçonnage, d’ingénierie sociale, ou encore d’une compromission du poste de travail, etc.)</span><span data-ccp-props="{}"> </span></li>
</ul>
<p style="text-align: justify;"><span data-ccp-props="{}"> </span></p>
<h3><b><span data-contrast="auto">1 Compromission du compte du support</span></b><span data-ccp-props="{&quot;335559685&quot;:1066,&quot;335559739&quot;:240,&quot;335559991&quot;:709}"> </span></h3>
<ul style="text-align: justify;">
<li data-leveltext="-" data-font="Tahoma" data-listid="18" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Tahoma&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;-&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" aria-setsize="-1" data-aria-posinset="5" data-aria-level="1"><span data-contrast="auto">A la suite de nos hypothèses, nous supposons donc que l’attaquant a pris le contrôle d’un compte du support, ayant la permission de réinitialiser des mots de passe utilisateurs ainsi que des MFA (Multi-Factor Authentication) </span><span data-ccp-props="{}"> </span></li>
</ul>
<h3 style="text-align: justify;"><span data-ccp-props="{&quot;335559685&quot;:720,&quot;335559739&quot;:240}"> 2 </span><b><span data-contrast="auto">Première tentative: Réinitialisation du mot de passe du compte </span></b><b><i><span data-contrast="auto">Global Administrator</span></i></b><span data-ccp-props="{&quot;335559685&quot;:1066,&quot;335559739&quot;:240,&quot;335559991&quot;:709}"> </span></h3>
<ul style="text-align: justify;">
<li data-leveltext="-" data-font="Tahoma" data-listid="21" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Tahoma&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;-&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"><span data-contrast="auto">L’attaquant tente initialement de réinitialiser le compte </span><i><span data-contrast="auto">Global Administrator</span></i><span data-contrast="auto">, en cherchant le chemin le plus rapide pour devenir </span><i><span data-contrast="auto">Global Administrator</span></i><span data-contrast="auto"> d’Entra ID.</span>  </li>
</ul>
<ul style="text-align: justify;">
<li data-leveltext="-" data-font="Tahoma" data-listid="21" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Tahoma&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;-&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" aria-setsize="-1" data-aria-posinset="2" data-aria-level="1"><span data-contrast="auto">Cette action est bloquée par défaut par Microsoft. Le rôle </span><i><span data-contrast="auto">Global Administrator</span></i><span data-contrast="auto"> est un </span><i><span data-contrast="auto">privileged role</span></i><span data-contrast="auto">, et seuls d’autres </span><i><span data-contrast="auto">privileged roles</span></i><span data-contrast="auto"> spécifiques sont autorisés à réinitialiser son mot de passe ou à modifier ses attributs. Microsoft met à jour ici </span><a href="https://learn.microsoft.com/en-us/entra/identity/role-based-access-control/permissions-reference"><span data-contrast="none">sa liste de </span><i><span data-contrast="none">privileged roles</span></i><span data-contrast="none"> natifs à Entra ID</span></a><span data-contrast="auto">.</span><span data-ccp-props="{}"> </span></li>
</ul>
<h3 style="text-align: justify;"><span data-ccp-props="{&quot;335559685&quot;:720}"> 3 </span><b style="color: initial;"><span data-contrast="auto">Seconde tentative: Compromission d’un compte standard Entra ID</span></b><span style="color: initial;" data-ccp-props="{&quot;335559685&quot;:1066,&quot;335559739&quot;:240,&quot;335559991&quot;:709}"> </span></h3>
<ul style="text-align: justify;">
<li data-leveltext="-" data-font="Tahoma" data-listid="21" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Tahoma&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;-&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" aria-setsize="-1" data-aria-posinset="3" data-aria-level="1"><span data-contrast="auto">L’attaquant étant restreint à la réinitialisation de mot de passe pour un utilisateur standard (non </span><i><span data-contrast="auto">privileged</span></i><span data-contrast="auto">), il identifie ensuite un utilisateur appelé « VDI Admin”, qui se trouve être </span><i><span data-contrast="auto">Owner</span></i><span data-contrast="auto"> d’un abonnement Azure, utilisé pour héberger des services d’administration de postes de travail.</span><span data-ccp-props="{}"> </span></li>
<li data-leveltext="-" data-font="Tahoma" data-listid="21" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Tahoma&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;-&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" aria-setsize="-1" data-aria-posinset="3" data-aria-level="1"><span data-contrast="auto">Malgré la double authentification activée, l’attaquant parvient à réinitialiser à la fois le mot de passe et le mécanisme de MFA, gagnant accès à ce compte.</span><span data-ccp-props="{}"> </span></li>
</ul>
<h3><b><span data-contrast="auto">4 Recherche de l’abonnement Azure</span></b><span data-ccp-props="{}"> </span></h3>
<ul style="text-align: justify;">
<li data-leveltext="-" data-font="Tahoma" data-listid="21" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Tahoma&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;-&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" aria-setsize="-1" data-aria-posinset="5" data-aria-level="1"><span data-contrast="auto">Grâce à la compromission du compte « VDI Admin », l’attaquant se connecte en utilisant le mot de passe fraichement réinitialisé, et accède à l’abonnement Azure. </span><span data-ccp-props="{}"> </span></li>
<li data-leveltext="-" data-font="Tahoma" data-listid="21" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Tahoma&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;-&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" aria-setsize="-1" data-aria-posinset="5" data-aria-level="1"><span data-contrast="auto">En faisant un petit peu de reconnaissance, il découvre un </span><i><span data-contrast="auto">Key Vault</span></i><span data-contrast="auto"> contenant des identifiants et mots de passe pour un compte de service.</span><span data-ccp-props="{}"> </span></li>
<li data-leveltext="-" data-font="Tahoma" data-listid="21" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Tahoma&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;-&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" aria-setsize="-1" data-aria-posinset="5" data-aria-level="1"><span data-contrast="auto">L’attaquant vérifie les permissions, et découvre que ce compte de service a le rôle « Intune Administrator » au niveau d’Entra ID.</span><span data-ccp-props="{}"> </span></li>
</ul>
<h3><b><span data-contrast="auto">5 Utilisation des privilèges </span></b><b><i><span data-contrast="auto">Intune Administrator</span></i></b><span data-ccp-props="{}"> </span></h3>
<ul style="text-align: justify;">
<li data-leveltext="-" data-font="Tahoma" data-listid="21" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Tahoma&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;-&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" aria-setsize="-1" data-aria-posinset="8" data-aria-level="1"><span data-contrast="auto">L’attaquant se connecte en tant qu’</span><i><span data-contrast="auto">Intune Administrator</span></i><span data-contrast="auto">, obtenant des permissions liées à l’administration des postes de travail, y compris la possibilité d’exécuter des scripts sur n’importe lequel d’entre eux.</span><span data-ccp-props="{}"> </span></li>
<li data-leveltext="-" data-font="Tahoma" data-listid="21" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Tahoma&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;-&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" aria-setsize="-1" data-aria-posinset="8" data-aria-level="1"><span data-contrast="auto">Ils déploient un script sur le poste de travail du </span><i><span data-contrast="auto">Global Administrator</span></i><span data-contrast="auto"> d’Entra ID, afin ensuite d’extraire les cookies d’authentification de son navigateur, et de pouvoir avoir accès à la console Azure.</span><span data-ccp-props="{}"> </span></li>
</ul>
<h3><b><span data-contrast="auto">6 Compromission du compte </span></b><b><i><span data-contrast="auto">Global Administrator</span></i></b></h3>
<p style="text-align: justify;"><span data-ccp-props="{&quot;335559685&quot;:1068}"> </span></p>
<ul style="text-align: justify;">
<li data-leveltext="-" data-font="Tahoma" data-listid="21" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Tahoma&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;-&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" aria-setsize="-1" data-aria-posinset="10" data-aria-level="1"><span data-contrast="auto">L’attaquant récupère les cookies d’authentification du </span><i><span data-contrast="auto">Global Administrator</span></i><span data-contrast="auto"> et les utilise sur son propre poste de travail pour se faire passer pour ce dernier.</span><span data-ccp-props="{}"> </span></li>
</ul>
<ul style="text-align: justify;">
<li data-leveltext="-" data-font="Tahoma" data-listid="21" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Tahoma&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;-&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" aria-setsize="-1" data-aria-posinset="11" data-aria-level="1"><span data-contrast="auto">Cela permet à l’attaquant de contrôler l’ensemble du tenant Entra ID, ce qui inclut la compromission du tenant Microsoft 365, des environnements Azure RM et de tous les autres outils cloud Microsoft reposant sur Entra ID.</span><span data-ccp-props="{}"> </span></li>
</ul>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-25203 size-full" title="Figure 2: Chemin de compromission globale du Cloud Azure " src="https://www.riskinsight-wavestone.com/wp-content/uploads/2025/01/Figure-2-Chemin-de-compromission-globale-du-Cloud-Azure-.jpg" alt="Figure 2: Chemin de compromission globale du Cloud Azure " width="573" height="358" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2025/01/Figure-2-Chemin-de-compromission-globale-du-Cloud-Azure-.jpg 573w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/01/Figure-2-Chemin-de-compromission-globale-du-Cloud-Azure--306x191.jpg 306w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/01/Figure-2-Chemin-de-compromission-globale-du-Cloud-Azure--62x39.jpg 62w" sizes="auto, (max-width: 573px) 100vw, 573px" /></p>
<p style="text-align: center;"><i><span data-contrast="none">Figure </span></i><i><span data-contrast="none">2</span></i><i><span data-contrast="none">: Chemin de compromission globale du Cloud Azure</span></i><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:200,&quot;335559740&quot;:240}"> </span></p>
<p style="text-align: justify;"><span data-ccp-props="{}"> </span></p>
<p style="text-align: justify;"><span data-contrast="auto">En suivant ces étapes, l’attaquant, au-delà de sa capacité à compromettre l’ensemble de l’infrastructure cloud, peut profondément affecter les activités d’une entreprise par un accès non autorisé aux e-mails et aux documents SharePoint, aux sauvegardes, aux postes de travail et serveurs, et au réseau de l’entreprise. Cette attaque démontre l’importance cruciale de sécuriser les comptes à privilèges élevés qui disposent de permissions susceptibles de conduire à une compromission mondiale.</span><span data-ccp-props="{}"> </span></p>
<p style="text-align: justify;"><span data-ccp-props="{&quot;134245418&quot;:true}"> <img loading="lazy" decoding="async" class="aligncenter size-full wp-image-25205" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2025/01/Figure-3-Impact-dune-compromission-du-Control-Plane-.jpg" alt="Figure 3 Impact d’une compromission du Control Plane " width="599" height="288" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2025/01/Figure-3-Impact-dune-compromission-du-Control-Plane-.jpg 599w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/01/Figure-3-Impact-dune-compromission-du-Control-Plane--397x191.jpg 397w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/01/Figure-3-Impact-dune-compromission-du-Control-Plane--71x34.jpg 71w" sizes="auto, (max-width: 599px) 100vw, 599px" /></span></p>
<p style="text-align: center;"><i><span data-contrast="none">Figure </span></i><i><span data-contrast="none">3</span></i><i><span data-contrast="none"> Impact d’une compromission du Control Plane</span></i><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:200,&quot;335559740&quot;:240}"> </span></p>
<p style="text-align: justify;"><span data-ccp-props="{}"> </span></p>
<h2><b><span data-contrast="auto">Comment prévenir ce type d’attaque: Implémenter </span></b><b><i><span data-contrast="auto">l’Enterprise Access Model</span></i></b><b><span data-contrast="auto">, et restreindre l’accès au </span></b><b><i><span data-contrast="auto">Control Plane</span></i></b><span data-ccp-props="{}"> </span></h2>
<p style="text-align: justify;"><span data-contrast="auto">Comme nous l’avons vu dans la première partie, les annuaires Cloud, en particulier Entra ID, présentent des différences clés par rapport à un Active Directory. Par conséquent, le modèle traditionnel 3-Tiers doit être adapté pour être pleinement efficace dans les environnements cloud. Pour relever ces défis, Microsoft a introduit un nouveau modèle d’administration spécialement conçu pour les environnements cloud : </span><a href="https://learn.microsoft.com/en-us/security/privileged-access-workstations/privileged-access-access-model"><span data-contrast="none">l’</span><i><span data-contrast="none">Enterprise Access Model (EAM)</span></i></a><span data-ccp-props="{}"> </span></p>
<p style="text-align: justify;"><span data-ccp-props="{}"> <img loading="lazy" decoding="async" class="aligncenter size-full wp-image-25207" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2025/01/Figure-4-LEnterprise-Access-Model.jpg" alt="Figure 4: L’Enterprise Access Model " width="600" height="335" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2025/01/Figure-4-LEnterprise-Access-Model.jpg 600w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/01/Figure-4-LEnterprise-Access-Model-342x191.jpg 342w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/01/Figure-4-LEnterprise-Access-Model-71x39.jpg 71w" sizes="auto, (max-width: 600px) 100vw, 600px" /></span></p>
<p style="text-align: center;"><i><span data-contrast="none">Figure </span></i><i><span data-contrast="none">4</span></i><i><span data-contrast="none">: L’Enterprise Access Model</span></i><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:200,&quot;335559740&quot;:240}"> </span></p>
<p style="text-align: justify;"><span data-ccp-props="{}"> </span></p>
<p style="text-align: justify;"><span data-contrast="auto">Bien qu’il y ait quelques modifications, le concept de base reste le même : les ressources sensibles doivent être isolées pour s’assurer qu’une compromission dans d’un plane (anciennement Tiers) n’entraîne pas une compromission d’un autre. Cela nous amène à une question cruciale : comment devrions-nous définir notre </span><i><span data-contrast="auto">Control Plane</span></i><span data-contrast="auto"> au sein de notre système d’information pour l’isoler efficacement et atténuer les risques d’une compromission globale ?</span><span data-ccp-props="{}"> </span></p>
<p style="text-align: justify;"><span data-contrast="auto">La réponse réside dans l’identification des composants systémiques de notre système d’information, c’est-à-dire ceux dont la compromission pourrait conduire à une compromission globale. Perdre un projet d’une entité métier est bien moins critique qu’une compromission globale de l’ensemble du Système d’Information.</span><span data-ccp-props="{}"> </span></p>
<p style="text-align: justify;"><span data-contrast="auto">Dans notre environnement cloud, de nombreux composants interagissent pour supporter les projets, de l’infrastructure CI/CD et des pipelines de déploiement aux différents outils IAM (tels que les fournisseurs d’identité comme l’AD, Entra ID ou Okta, les outils d’IGA, etc.), ainsi que les outils de sécurité transverses (tels que l’EDR, le Bastion et les outils de MDM par exemple). Bien qu’il s’agisse de composants génériques probablement présents dans de nombreux systèmes, il existe également de nombreux composants spécifiques à l’environnement à prendre en compte.</span><span data-ccp-props="{}"> </span></p>
<p style="text-align: justify;"><span data-contrast="auto">Ensuite, Nous devons évaluer l’impact de la compromission des comptes à privilèges élevés au sein de ces composants. Par exemple, si un attaquant prend le contrôle d’un compte à privilèges élevés au sein de l’infrastructure CI/CD, il pourrait potentiellement modifier les processus CI/CD et/ou exécuter un pipeline spécifique pour déployer des modifications non autorisées dans le cloud, ce qui lui permettrait d’obtenir un accès global. Par conséquent, ces comptes CI/CD à privilèges élevés doivent faire partie du </span><i><span data-contrast="auto">Control Plane</span></i><span data-contrast="auto">. De même, considérons la solution EDR : si un administrateur à privilèges élevés peut exécuter des scripts sur tous les postes de travail, potentiellement en volant des cookies d’authentification, en accédant à des données critiques ou en rendant tous les postes de travail inutilisables, alors ce compte à privilèges élevés doit également être inclus dans </span><i><span data-contrast="auto">Control Plane</span></i><span data-contrast="auto">.</span><span data-ccp-props="{}"> </span></p>
<p style="text-align: justify;"><span data-contrast="auto">En définissant et en sécurisant soigneusement notre </span><i><span data-contrast="auto">Control Plane</span></i><span data-contrast="auto">, nous pouvons réduire considérablement le risque d’une compromission globale au sein de notre système d’information.</span><span data-ccp-props="{}"> </span></p>
<p> </p>
<h2 style="text-align: justify;"><b><span data-contrast="auto">Synthèse</span></b><span data-ccp-props="{&quot;335559685&quot;:1068}"> </span></h2>
<p style="text-align: justify;"><span data-contrast="auto">Comme nous l’avons vu, le risque de compromission globale dans un environnement Cloud est important. Si les environnements Clouds offrent une flexibilité, une résilience et une optimisation des coûts accrues, ils introduisent également de nouveaux paradigmes et méthodologies opérationnelles qui doivent être comprises et maîtrisés pour garantir la sécurité.</span><span data-ccp-props="{}"> </span></p>
<p style="text-align: justify;"><span data-contrast="auto">Le modèle traditionnel 3-Tiers des environnements on-premise, en particulier de l’Active Directory, n’est pas adapté à l’organisation de l’administration dans le cloud. Pour remédier à ce problème, Microsoft a introduit l’</span><i><span data-contrast="auto">Enterprise Access Model</span></i><span data-contrast="auto"> (EAM). Ce modèle étend les 3 niveaux en cinq planes distincts, le plus critique étant le </span><i><span data-contrast="auto">Control Plane</span></i><span data-contrast="auto">. Cependant, tout comme pour le modèle 3-Tiers, les mesures d’isolement sont cruciales dans l’EAM, nécessitant l’identification des composants critiques et des comptes à privilèges élevés au sein de votre système d’information. C’est la priorité absolue pour assurer la sécurité globale du cloud.</span><span data-ccp-props="{}"> </span></p>
<p style="text-align: justify;"><span data-contrast="auto">Le prochain article de cette série fournira d’autres exemples concrets de scénarios d’attaque qui peuvent conduire à une compromission globale des environnements cloud. Il comprendra également des recommandations de sécurité pour améliorer l’administration du cloud et éviter que ces risques ne se transforment en incidents de sécurité.</span><span data-ccp-props="{}"> </span></p>
<p> </p>
<p> </p>
<p> </p>
<p>Merci à <strong>Louis CLAVERO</strong> pour sa contribution à cet article.</p>
<p style="text-align: justify;"><span data-ccp-props="{}"> </span></p>
<p>Cet article <a href="https://www.riskinsight-wavestone.com/2025/01/enterprise-access-model-1-2-comment-definir-un-control-plane-pour-securiser-ladministration-cloud-et-empecher-une-compromission-a-grande-echelle/">Enterprise Access Model (1/2): Comment définir un Control Plane pour sécuriser l’administration Cloud et empêcher une compromission à grande échelle</a> est apparu en premier sur <a href="https://www.riskinsight-wavestone.com">RiskInsight</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.riskinsight-wavestone.com/2025/01/enterprise-access-model-1-2-comment-definir-un-control-plane-pour-securiser-ladministration-cloud-et-empecher-une-compromission-a-grande-echelle/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Comment construire un coding game Cloud public étape par étape ? </title>
		<link>https://www.riskinsight-wavestone.com/2024/06/comment-construire-un-coding-game-cloud-public-etape-par-etape/</link>
					<comments>https://www.riskinsight-wavestone.com/2024/06/comment-construire-un-coding-game-cloud-public-etape-par-etape/#respond</comments>
		
		<dc:creator><![CDATA[Clément Guillemare]]></dc:creator>
		<pubDate>Thu, 13 Jun 2024 12:38:59 +0000</pubDate>
				<category><![CDATA[Cybersecurity & Digital Trust]]></category>
		<category><![CDATA[cybersecurity]]></category>
		<category><![CDATA[students]]></category>
		<category><![CDATA[wavegame]]></category>
		<guid isPermaLink="false">https://www.riskinsight-wavestone.com/?p=23285</guid>

					<description><![CDATA[<p>Etape 0 : contexte et objectifs  Le Wavegame est un challenge inter-école créé en 2019 qui vise à promouvoir l’expertise cybersécurité et le métier du conseil. La compétition comporte deux volets, le premier étant réservé aux étudiants en commerce et...</p>
<p>Cet article <a href="https://www.riskinsight-wavestone.com/2024/06/comment-construire-un-coding-game-cloud-public-etape-par-etape/">Comment construire un coding game Cloud public étape par étape ? </a> est apparu en premier sur <a href="https://www.riskinsight-wavestone.com">RiskInsight</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2><b><span data-contrast="none">Etape 0 :</span></b><span data-contrast="none"> contexte et objectifs</span><span data-ccp-props="{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559738&quot;:240,&quot;335559739&quot;:360}"> </span></h2>
<p style="text-align: justify;"><span data-contrast="none">Le Wavegame est un challenge inter-école créé en 2019 qui vise à promouvoir l’expertise cybersécurité et le métier du conseil. La compétition comporte deux volets, le premier étant réservé aux étudiants en commerce et le second aux étudiants en informatique. La partie technique consiste en 2 exercices de qualification et un événement final. Cet article aborde le deuxième exercice où, dans sa saison 2023, 33 équipes se sont affrontées autour de la sécurisation d’une infrastructure Cloud AWS.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559685&quot;:567,&quot;335559739&quot;:120}"> </span></p>
<p style="text-align: justify;"><span data-contrast="none">Sur fond d’une intrigue futuriste, les étudiants devenus consultants ont été mandatés par France Fusion, une entreprise chargée d’exploiter les premières usines à fusion nucléaire du pays. France Fusion souhaitait mettre au point une plateforme de supervision dans le Cloud. Pour ce faire, les données d’équipements industriels collectées, relevant de la propriété intellectuelle de France Fusion, devaient être analysées au travers d’une base de données ElasticSearch. </span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559685&quot;:567,&quot;335559739&quot;:120}"> </span></p>
<p style="text-align: justify;"><span data-contrast="none">Démarré sous la forme d’un Proof of Concept (PoC) en marge des équipes sécurité, une équipe de développeurs est parvenue à déployer une architecture fonctionnelle sur AWS. Les étudiants sont alors amenés à sécuriser l’infrastructure en respectant les politiques Cloud public de France Fusion. Le défi technique était de taille : déployer une infrastructure vulnérable en libre-service sur 33 comptes AWS. Il s&rsquo;agissait également d&rsquo;accorder aux étudiants un accès administrateur et les autorisations nécessaires pour effectuer des modifications directement depuis la console AWS, le tout avec un budget limité compte tenu du nombre de participants. </span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559685&quot;:567,&quot;335559739&quot;:120}"> </span></p>
<p style="text-align: justify;"><span data-contrast="none">Dans cet article, nous allons vous partager la recette qui a permis de faire de ce défi une réalité.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559685&quot;:567,&quot;335559739&quot;:120}"> </span></p>
<p style="text-align: justify;"><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559685&quot;:567,&quot;335559739&quot;:120}"> </span></p>
<h2><b><span data-contrast="none">Etape 1 :</span></b><span data-contrast="none"> Mettre sur le papier une architecture portant une dimension pédagogique</span><span data-ccp-props="{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559685&quot;:851,&quot;335559738&quot;:240,&quot;335559739&quot;:360,&quot;335559991&quot;:851}"> </span></h2>
<p style="text-align: justify;"><span data-contrast="none">Avant de nous lancer dans le développement du </span><i><span data-contrast="none">coding game</span></i><span data-contrast="none">, nous avons pris en compte 4 contraintes : </span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559685&quot;:567,&quot;335559739&quot;:120}"> </span></p>
<ul>
<li data-leveltext="/" data-font="Tempus Sans ITC" data-listid="3" data-list-defn-props="{&quot;335551500&quot;:5255288,&quot;335552541&quot;:1,&quot;335559685&quot;:284,&quot;335559991&quot;:284,&quot;469769226&quot;:&quot;Tempus Sans ITC&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;/&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"><b><span data-contrast="none">La population cible</span></b><span data-contrast="none"> : s’agissant d’étudiants, il est primordial de tenir compte de l’hétérogénéité en matière de connaissances Cloud. Par conséquent, nous nous sommes concentrés sur l&rsquo;utilisation des services essentiels AWS (e.g., S3, EC2, Lambda), car ce sont des ressources bien documentées et parce que les étudiants sont susceptibles de les avoir abordés en classe ou dans le cadre de projets personnels.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:120}"> </span></li>
<li><b><span data-contrast="none">Le thème :</span></b><span data-contrast="none"> c’est un élément crucial pour immerger les étudiants dans un contexte de mission client. Nous avons donc cherché à créer une architecture aussi réaliste que possible. Ainsi, le choix de déployer une suite ELK (Elasticsearch, Logstash, Kibana) sur une instance EC2 nous a paru pertinent pour un PoC lié à de la supervision.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:120}"> </span></li>
<li data-leveltext="/" data-font="Tempus Sans ITC" data-listid="3" data-list-defn-props="{&quot;335551500&quot;:5255288,&quot;335552541&quot;:1,&quot;335559685&quot;:284,&quot;335559991&quot;:284,&quot;469769226&quot;:&quot;Tempus Sans ITC&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;/&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" aria-setsize="-1" data-aria-posinset="3" data-aria-level="1"><b><span data-contrast="none">Les coûts :</span></b><span data-contrast="none"> sachant que l’infrastructure doit être accessible par des étudiants pendant 2 semaines et qu’elle doit être répliquée sur 33 comptes AWS, nous avions tout intérêt à optimiser les coûts. Pour y parvenir, nous avons utilisé le calculateur de tarification AWS pour estimer les coûts, opté pour une région à faible coût et construit l&rsquo;infrastructure autour de services « paiement à l’utilisation » tels que les fonctions Lambda.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:120}"> </span></li>
<li><b><span data-contrast="none">Les échéances : </span></b><span data-contrast="none">pour faire face à un calendrier rapproché, nous avons défini des objectifs et des jalons avec une marge suffisante pour surmonter les éventuelles contraintes techniques. Les principales étapes du projet sont le développement, les tests, la création de comptes et le déploiement.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:120}"> </span></li>
</ul>
<p style="text-align: justify;"><span data-contrast="none">Le schéma d’architecture « vulnérable » ci-dessous reflète ces 4 contraintes (</span><i><span data-contrast="none">Figure 1</span></i><span data-contrast="none">). L’équipement industriel est simulé par une fonction Lambda (Datalake) qui va générer des logs et les envoyer dans un </span><i><span data-contrast="none">bucket</span></i><span data-contrast="none"> S3 (Datalake). Une seconde fonction Lambda (ELK) est alors déclenchée par une notification S3. Elle va récupérer le fichier de logs et l’envoyer dans la base ElasticSearch (image Docker dans une instance EC2). Enfin, l’interface Kibana est accessible depuis Internet pour l’analyse des logs. </span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559685&quot;:567,&quot;335559739&quot;:120}"> </span></p>
<p style="text-align: justify;"><span data-ccp-props="{&quot;134245418&quot;:true,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559685&quot;:567,&quot;335559739&quot;:0}"> <img loading="lazy" decoding="async" class="aligncenter wp-image-23292 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2024/06/1.jpg" alt="" width="1477" height="608" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2024/06/1.jpg 1477w, https://www.riskinsight-wavestone.com/wp-content/uploads/2024/06/1-437x180.jpg 437w, https://www.riskinsight-wavestone.com/wp-content/uploads/2024/06/1-71x29.jpg 71w, https://www.riskinsight-wavestone.com/wp-content/uploads/2024/06/1-768x316.jpg 768w" sizes="auto, (max-width: 1477px) 100vw, 1477px" /></span></p>
<p style="text-align: center;"><i><span data-contrast="none">Figure </span></i><i><span data-contrast="none">1</span></i><i><span data-contrast="none"> :</span></i><i><span data-contrast="none"> schéma d’architecture initiale du Wavegame 2023</span></i><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559685&quot;:851,&quot;335559739&quot;:120,&quot;335559991&quot;:851,&quot;469777462&quot;:[851],&quot;469777927&quot;:[0],&quot;469777928&quot;:[1]}"> </span></p>
<p style="text-align: justify;"><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559685&quot;:567,&quot;335559739&quot;:120}"> </span></p>
<h2><b><span data-contrast="none">Etape 2 :</span></b><span data-contrast="none"> Concevoir une architecture sécurisée basée sur des politiques sécurité du Cloud public</span><span data-ccp-props="{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559738&quot;:240,&quot;335559739&quot;:360}"> </span></h2>
<p style="text-align: justify;"><span data-contrast="none">Maintenant que nous avons notre scénario initial, il s’agit de concevoir des politiques du Cloud public qui vont fixer les exigences sécurité et les critères d’évaluation. Pour cela, nous avons adapté des bonnes pratiques de sécurité mises en œuvre chez nos clients dont voici un extrait :</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559685&quot;:567,&quot;335559739&quot;:120}"> </span></p>
<ul>
<li data-leveltext="/" data-font="Tempus Sans ITC" data-listid="3" data-list-defn-props="{&quot;335551500&quot;:5255288,&quot;335552541&quot;:1,&quot;335559685&quot;:284,&quot;335559991&quot;:284,&quot;469769226&quot;:&quot;Tempus Sans ITC&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;/&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" aria-setsize="-1" data-aria-posinset="5" data-aria-level="1"><span data-contrast="none">AWS-01 : Toutes les ressources AWS doivent utiliser des rôles IAM spécifiques à leurs besoins et respectant le principe du moindre privilège.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:120}"> </span></li>
<li><span data-contrast="none">AWS-02 : Toutes les ressources AWS doivent être connectées et/ou attachées à un réseau privé (VPC).</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:120}"> </span></li>
<li data-leveltext="/" data-font="Tempus Sans ITC" data-listid="3" data-list-defn-props="{&quot;335551500&quot;:5255288,&quot;335552541&quot;:1,&quot;335559685&quot;:284,&quot;335559991&quot;:284,&quot;469769226&quot;:&quot;Tempus Sans ITC&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;/&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" aria-setsize="-1" data-aria-posinset="7" data-aria-level="1"><span data-contrast="none">AWS-03 : Les instances EC2 ne doivent pas être accessibles au public via Internet.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:120}"> </span></li>
<li><span data-contrast="none">AWS-04 : Tous les logs d&rsquo;infrastructure générés par les services AWS doivent être envoyés à CloudWatch.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:120}"> </span></li>
<li><span data-contrast="none">AWS-05 : Le volume Amazon EBS racine doit être chiffré sur toutes les instances EC2.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:120}"> </span></li>
<li data-leveltext="/" data-font="Tempus Sans ITC" data-listid="3" data-list-defn-props="{&quot;335551500&quot;:5255288,&quot;335552541&quot;:1,&quot;335559685&quot;:284,&quot;335559991&quot;:284,&quot;469769226&quot;:&quot;Tempus Sans ITC&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;/&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" aria-setsize="-1" data-aria-posinset="10" data-aria-level="1"><span data-contrast="none">AWS-06 : les données dans le </span><i><span data-contrast="none">bucket</span></i><span data-contrast="none"> S3 doivent être chiffrées.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:120}"> </span></li>
</ul>
<p style="text-align: justify;"><span data-contrast="none">À partir des politiques du Cloud public, nous avons élaboré l&rsquo;architecture sécurisée suivante (</span><i><span data-contrast="none">Figure 2</span></i><span data-contrast="none">) :</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559685&quot;:567,&quot;335559739&quot;:120}"> </span></p>
<p style="text-align: justify;"><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559685&quot;:567,&quot;335559739&quot;:120}"> <img loading="lazy" decoding="async" class="aligncenter wp-image-23294 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2024/06/2.jpg" alt="" width="1366" height="695" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2024/06/2.jpg 1366w, https://www.riskinsight-wavestone.com/wp-content/uploads/2024/06/2-375x191.jpg 375w, https://www.riskinsight-wavestone.com/wp-content/uploads/2024/06/2-71x36.jpg 71w, https://www.riskinsight-wavestone.com/wp-content/uploads/2024/06/2-768x391.jpg 768w" sizes="auto, (max-width: 1366px) 100vw, 1366px" /></span></p>
<p style="text-align: center;"><span data-ccp-props="{&quot;134245418&quot;:true,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559685&quot;:567,&quot;335559739&quot;:120}"> </span><i><span data-contrast="none">Figure </span></i><i><span data-contrast="none">2</span></i><i><span data-contrast="none">:</span></i><i><span data-contrast="none"> schéma d’architecture cible du Wavegame 2023</span></i><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559685&quot;:851,&quot;335559739&quot;:120,&quot;335559991&quot;:851,&quot;469777462&quot;:[851],&quot;469777927&quot;:[0],&quot;469777928&quot;:[1]}"> </span></p>
<p style="text-align: justify;"><span data-contrast="none">En résumé, l’ensemble des ressources Calcul sont positionnées dans un sous-réseau privé, le </span><i><span data-contrast="none">bucket</span></i><span data-contrast="none"> S3 est accédé via un point de terminaison VPC, la plateforme de supervision ELK est accédée via une machine virtuelle de rebond. Les services </span><i><span data-contrast="none">Cloudwatch</span></i><span data-contrast="none"> et </span><i><span data-contrast="none">CloudTrail</span></i><span data-contrast="none"> sont activés pour le monitoring et la supervision. Des </span><i><span data-contrast="none">security groups</span></i><span data-contrast="none"> sont attachés aux ressources pour n’autoriser que les communications entrantes strictement nécessaires.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559685&quot;:567,&quot;335559739&quot;:120}"> </span></p>
<p> </p>
<h2><b><span data-contrast="none">Etape 3 :</span></b><span data-contrast="none"> passer du design au développement en Terraform</span><span data-ccp-props="{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559738&quot;:240,&quot;335559739&quot;:360}"> </span></h2>
<p style="text-align: justify;"><span data-contrast="none">Pour construire le </span><i><span data-contrast="none">coding game</span></i><span data-contrast="none">, nous avons créé et maintenu 2 architectures distinctes, représentées par 2 branches distinctes dans Github. La première étant l&rsquo;architecture vulnérable qui sera déployée initialement, et la seconde étant la solution qui sert de garantie de faisabilité. Cette « </span><i><span data-contrast="none">garantie de faisabilité</span></i><span data-contrast="none"> » signifie que 3 points obligatoires sont remplis :</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559685&quot;:567,&quot;335559739&quot;:120}"> </span></p>
<ul>
<li data-leveltext="/" data-font="Tempus Sans ITC" data-listid="3" data-list-defn-props="{&quot;335551500&quot;:5255288,&quot;335552541&quot;:1,&quot;335559685&quot;:284,&quot;335559991&quot;:284,&quot;469769226&quot;:&quot;Tempus Sans ITC&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;/&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" aria-setsize="-1" data-aria-posinset="11" data-aria-level="1"><span data-contrast="none">Les permissions IAM doivent être suffisantes pour permettre au système de fonctionner correctement.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:120}"> </span></li>
<li><span data-contrast="none">La configuration finale de l&rsquo;infrastructure doit prendre en compte les cycles de vie des objets et leurs interactions.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:120}"> </span></li>
<li data-leveltext="/" data-font="Tempus Sans ITC" data-listid="3" data-list-defn-props="{&quot;335551500&quot;:5255288,&quot;335552541&quot;:1,&quot;335559685&quot;:284,&quot;335559991&quot;:284,&quot;469769226&quot;:&quot;Tempus Sans ITC&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;/&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" aria-setsize="-1" data-aria-posinset="13" data-aria-level="1"><span data-contrast="none">L&rsquo;expertise requise pour compléter le </span><i><span data-contrast="none">coding game</span></i><span data-contrast="none"> doit être adaptée à la montée en compétence des étudiants sur une période de 2 semaines.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:120}"> </span></li>
</ul>
<p style="text-align: justify;"><span data-contrast="none">Concernant le cycle de développement, plutôt que de suivre une approche linéaire, où l&rsquo;on créerait d&rsquo;abord le code pour l&rsquo;infrastructure initiale, puis pour l&rsquo;infrastructure cible, nous avons opté pour une approche agile avec la définition de blocs fonctionnels. Pour illustrer cette idée, le bloc « </span><i><span data-contrast="none">Lambda (ELK) -&gt; S3</span></i><span data-contrast="none"> » vise à concevoir une fonction Lambda déclenchée dès qu&rsquo;une notification S3 </span><i><span data-contrast="none">PutObject</span></i><span data-contrast="none"> est générée, avec ou sans point de terminaison VPC. Bien que nous devions maintenir 2 configurations Terraform simultanément, cette approche nous a donné une plus grande agilité pour réévaluer nos choix techniques. Pour réduire davantage la redondance et assurer la maintenabilité, nous nous sommes aussi concentrés sur le développement de modules Terraform pour les objets Lambda et S3.  </span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559685&quot;:567,&quot;335559739&quot;:120}"> </span></p>
<p style="text-align: justify;"><span data-contrast="none">Pour automatiser le déploiement des ressources dans notre Sandbox et dans nos comptes étudiants, nous avons créé une chaîne CI/CD simplifiée dans Github. Elle est constituée de 2 Github Actions. A travers une syntaxe YAML, les Github Actions permettent d&rsquo;exécuter des tâches intégrées à AWS ou Hashicorp. Dans notre cas de figure, nous avions une tâche pour exécuter la commande </span><i><span data-contrast="none">terraform apply</span></i><span data-contrast="none"> et une tâche pour appliquer la commande inverse </span><i><span data-contrast="none">terraform destroy</span></i><span data-contrast="none">. </span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559685&quot;:567,&quot;335559739&quot;:120}"> </span></p>
<p style="text-align: justify;"><span data-contrast="none">L&rsquo;un des avantages des Github Actions est le fait de pouvoir stocker les identifiants d&rsquo;accès à AWS dans Github Secrets au lieu du code source ou d&rsquo;un fichier local. De plus, le stockage des états Terraform dans un </span><i><span data-contrast="none">bucket</span></i><span data-contrast="none"> S3 facilite la collaboration. Un état Terraform est un fichier qui garde une trace de la configuration actuelle. Ainsi, chaque développeur configure sa clé S3 dans sa branche Github qui deviendra la référence de son état.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559685&quot;:567,&quot;335559739&quot;:120}"> </span></p>
<p style="text-align: justify;"><span data-contrast="none">Au fur et à mesure que le développement avançait, nous nous sommes rendu compte de l&rsquo;ampleur de l&rsquo;écart entre l&rsquo;architecture initiale et l&rsquo;architecture cible. La raison principale est que les logiques IAM et réseau sont très différentes. En conséquence, il est devenu essentiel d&rsquo;effectuer des tests en conditions réelles, c&rsquo;est-à-dire à partir de la console AWS, afin d&rsquo;identifier les ruptures, les politiques bloquantes et d&rsquo;évaluer la complexité. A titre d&rsquo;exemple, l&rsquo;un des tests nous a rappelé que le script de démarrage d&rsquo;un EC2 appelé </span><i><span data-contrast="none">user-data</span></i><span data-contrast="none"> n&rsquo;est pas persistant après un redémarrage. Par conséquent, ce comportement a empêché la mise en œuvre de la politique de sécurité relative au chiffrement du volume racine Amazon EBS (AWS-05).</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559685&quot;:567,&quot;335559739&quot;:120}"> </span></p>
<p style="text-align: justify;"><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559685&quot;:567,&quot;335559739&quot;:120}"> </span></p>
<h2><b><span data-contrast="none">Etape 4 :</span></b><span data-contrast="none"> Déployer les environnements de manière sécurisée</span><span data-ccp-props="{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559685&quot;:851,&quot;335559738&quot;:240,&quot;335559739&quot;:360,&quot;335559991&quot;:851}"> </span></h2>
<p style="text-align: justify;"><span data-contrast="none">Dans le cadre de ce défi, nous étions sur le point d&rsquo;accorder un accès privilégié à des étudiants dans un environnement pendant deux semaines pour lequel une surveillance ou une assistance individuelle constante est impossible. Bien que cette approche représente une meilleure opportunité d&rsquo;apprentissage, elle soulève des scénarios de sécurité spécifiques que nous devons anticiper et atténuer. Parmi ceux-ci, le dépassement de budget était une préoccupation majeure, étant donné l&rsquo;accès illimité et les ressources à leur disposition. Une autre menace importante est la possibilité pour les étudiants de s&rsquo;élever au sein de l&rsquo;organisation, d&rsquo;obtenir des accès non prévus ou de se compromettre les uns avec les autres. Enfin, le risque de détournement des ressources à des fins non autorisées ou malveillantes n&rsquo;est pas négligeable. Chacune de ces menaces doit faire l&rsquo;objet d&rsquo;un examen attentif afin de garantir un déploiement sûr et responsable.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559685&quot;:567,&quot;335559739&quot;:120}"> </span></p>
<p style="text-align: justify;"><span data-contrast="none">Pour ce </span><i><span data-contrast="none">coding game</span></i><span data-contrast="none">, nous avons opté pour une conception AWS multicomptes afin d&rsquo;isoler les environnements de chaque équipe. Grâce à l&rsquo;organisation AWS, nous avons simplifié l&rsquo;administration, amélioré le contrôle des coûts et pu mettre en place des garde-fous à l&rsquo;aide de politiques de contrôle de la sécurité (SCP). Dans la </span><i><span data-contrast="none">Figure 3</span></i><span data-contrast="none">, nous présentons notre organisation AWS, composée d&rsquo;un compte admin et d&rsquo;une Unité d’Organisation (UO) Wavegame qui héberge les comptes des équipes où l&rsquo;infrastructure est déployée. Nous avons mis en place 3 SCP spécifiques pour :</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559685&quot;:567,&quot;335559739&quot;:120}"> </span></p>
<ul>
<li data-leveltext="/" data-font="Tempus Sans ITC" data-listid="3" data-list-defn-props="{&quot;335551500&quot;:5255288,&quot;335552541&quot;:1,&quot;335559685&quot;:284,&quot;335559991&quot;:284,&quot;469769226&quot;:&quot;Tempus Sans ITC&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;/&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" aria-setsize="-1" data-aria-posinset="14" data-aria-level="1"><span data-contrast="none">Restreindre l&rsquo;accès aux services AWS en dehors de la région désignée, </span><i><span data-contrast="none">us-east-1</span></i><span data-contrast="none">, en définissant une liste d&rsquo;opérations autorisées.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:120}"> </span></li>
<li><span data-contrast="none">Renforcer l&rsquo;utilisation des types d&rsquo;instance Amazon EC2 à du t2.micro ou t2.large (contrainte liée à l&rsquo;environnement ElasticSearch).</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:120}"> </span></li>
<li data-leveltext="/" data-font="Tempus Sans ITC" data-listid="3" data-list-defn-props="{&quot;335551500&quot;:5255288,&quot;335552541&quot;:1,&quot;335559685&quot;:284,&quot;335559991&quot;:284,&quot;469769226&quot;:&quot;Tempus Sans ITC&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;/&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" aria-setsize="-1" data-aria-posinset="16" data-aria-level="1"><span data-contrast="none">Interdire aux comptes étudiants de supprimer ou de modifier une ressource dont la balise est « </span><i><span data-contrast="none">protected</span></i><span data-contrast="none">« .</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:120}"> </span></li>
</ul>
<p style="text-align: justify;"><span data-contrast="none">Par ailleurs, pour mieux gérer les coûts, en particulier pour une durée de deux semaines, nous avons mis en place une fonction Lambda pour fermer automatiquement les instances EC2 après 2 heures d&rsquo;activité. Pour éviter toute modification non autorisée par les étudiants, cette fonction Lambda était l&rsquo;une des ressources sécurisées avec la balise « </span><i><span data-contrast="none">protected</span></i><span data-contrast="none">« .</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559685&quot;:567,&quot;335559739&quot;:120}"> </span></p>
<p style="text-align: justify;"><span data-ccp-props="{&quot;134245418&quot;:true,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559685&quot;:567,&quot;335559739&quot;:120}"> <img loading="lazy" decoding="async" class="aligncenter wp-image-23296 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2024/06/3.jpg" alt="" width="826" height="612" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2024/06/3.jpg 826w, https://www.riskinsight-wavestone.com/wp-content/uploads/2024/06/3-258x191.jpg 258w, https://www.riskinsight-wavestone.com/wp-content/uploads/2024/06/3-53x39.jpg 53w, https://www.riskinsight-wavestone.com/wp-content/uploads/2024/06/3-768x569.jpg 768w" sizes="auto, (max-width: 826px) 100vw, 826px" /></span></p>
<p style="text-align: center;"><i><span data-contrast="none">Figure </span></i><i><span data-contrast="none">3</span></i><i><span data-contrast="none">:</span></i><i><span data-contrast="none"> Organisation AWS pour le Wavegame 2023</span></i><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559685&quot;:851,&quot;335559739&quot;:120,&quot;335559991&quot;:851,&quot;469777462&quot;:[851],&quot;469777927&quot;:[0],&quot;469777928&quot;:[1]}"> </span></p>
<p style="text-align: justify;"><span data-contrast="none">Enfin, en plus de notre utilisateur IAM qui est administrateur de l&rsquo;UO Wavegame via un rôle IAM, nous avons créé un utilisateur IAM avec le rôle </span><i><span data-contrast="none">AdministratorAccess</span></i><span data-contrast="none"> pour chaque compte AWS, afin de donner de l&rsquo;autonomie aux étudiants pendant le challenge. Ils ont notamment suffisamment de droits pour se créer des comptes nominatifs.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559685&quot;:567,&quot;335559739&quot;:120}"> </span></p>
<p> </p>
<h2><b><span data-contrast="none">Etape 5 :</span></b><span data-contrast="none"> Se préparer au RUN et à la correction</span><span data-ccp-props="{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559738&quot;:240,&quot;335559739&quot;:360}"> </span></h2>
<p style="text-align: justify;"><span data-contrast="none">Une fois le coup d’envoi donné, les étudiants ont 2 semaines pour sécuriser les ressources dans leur compte AWS en suivant nos politiques sécurité du Cloud public. Avec autant de permissions, des erreurs de configuration cassantes peuvent vite survenir. Par exemple, un groupe a créé une politique S3 « </span><i><span data-contrast="none">Deny All</span></i><span data-contrast="none">« , ce qui l&rsquo;a conduit à s&rsquo;exclure lui-même, ainsi que toute autre personne, puisqu’aucun d&rsquo;entre nous n&rsquo;a les privilèges du compte racine.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559685&quot;:567,&quot;335559739&quot;:120}"> </span></p>
<p style="text-align: justify;"><span data-contrast="none">Pour faire face à ce genre de situation, nous avons mis en place le système de communication suivant : chaque équipe dispose d&rsquo;un coach chargé de signaler les problèmes techniques à l&rsquo;équipe organisatrice qui nous remonte ensuite les incidents. Nous avons ainsi pu enquêter et résoudre les problèmes ou communiquer rapidement avec eux sans recevoir trop de messages pour des questions simples auxquelles les coachs pouvaient répondre. </span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559685&quot;:567,&quot;335559739&quot;:120}"> </span></p>
<p style="text-align: justify;"><span data-contrast="none">Outre la gestion des incidents, notre rôle consistait également à surveiller les dépassements de budget. Pour ce faire, nous avons mis en place des alertes de coûts pour chaque compte AWS. Nous avons également développé un script pour suivre l&rsquo;évolution du budget des équipes en temps réel. Cet outil s&rsquo;est avéré très utile pour fournir une estimation du temps passé par les étudiants sur le défi et réagir en cas de dépenses anormales. Par exemple, deux jours après le début du défi, une alerte a été déclenchée en raison d&rsquo;une défaillance de la fonction Lambda destinée à éteindre la machine virtuelle.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559685&quot;:567,&quot;335559739&quot;:120}"> </span></p>
<p style="text-align: justify;"><span data-contrast="none">Une fois que le défi s&rsquo;est terminé avec peu d&rsquo;incidents et que l&rsquo;accès des étudiants a été révoqué, il était temps de procéder à l&rsquo;évaluation pour déclarer les gagnants. Pour rappel, les étudiants devaient configurer leur compte AWS en conformité avec les politiques du Cloud public. Pour leur évaluation, nous avons utilisé deux mécanismes de notation :</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559685&quot;:567,&quot;335559739&quot;:120}"> </span></p>
<ul>
<li data-leveltext="/" data-font="Tempus Sans ITC" data-listid="3" data-list-defn-props="{&quot;335551500&quot;:5255288,&quot;335552541&quot;:1,&quot;335559685&quot;:284,&quot;335559991&quot;:284,&quot;469769226&quot;:&quot;Tempus Sans ITC&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;/&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" aria-setsize="-1" data-aria-posinset="17" data-aria-level="1"><span data-contrast="none">Une évaluation automatique grâce au déploiement de règles gérées AWS Config à la fin du défi. Amazon fournit un ensemble de règles couvrant un pourcentage significatif des exigences. Par exemple, une règle permet de vérifier si le </span><i><span data-contrast="none">bucket</span></i><span data-contrast="none"> S3 est chiffré (AWS-06).</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:120}"> </span></li>
<li><span data-contrast="none">Une évaluation manuelle basée sur des critères attendus et des étapes de vérification clairement documentées.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:120}"> </span></li>
</ul>
<p style="text-align: justify;" aria-level="1"> </p>
<p aria-level="1"> </p>
<p aria-level="1"> </p>
<p style="text-align: justify;"><span data-contrast="none">Pour conclure, organiser un coding game est un challenge ambitieux qui nécessite des compétences Cloud public et Terraform, une organisation solide et des capacités de réaction face à des événements inattendus. Malgré les défis, c&rsquo;est une opportunité exceptionnelle d’apprentissage. Pour les participants, le Wavegame offre une introduction immersive à la sécurité dans le Cloud public. Pour les organisateurs, le Wavegame est une expérience pratique sur le design, la conception et le maintien en condition opérationnelle d’une infrastructure dans le Cloud public.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559685&quot;:567,&quot;335559739&quot;:120}"> </span></p>
<p style="text-align: justify;"><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559685&quot;:567,&quot;335559739&quot;:120}"> </span></p>
<p style="text-align: justify;"><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559685&quot;:567,&quot;335559739&quot;:120}"> </span></p>
<p style="text-align: justify;"><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559685&quot;:567,&quot;335559739&quot;:120}"> </span></p>
<p>Cet article <a href="https://www.riskinsight-wavestone.com/2024/06/comment-construire-un-coding-game-cloud-public-etape-par-etape/">Comment construire un coding game Cloud public étape par étape ? </a> est apparu en premier sur <a href="https://www.riskinsight-wavestone.com">RiskInsight</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.riskinsight-wavestone.com/2024/06/comment-construire-un-coding-game-cloud-public-etape-par-etape/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
