18/12/2024

CybersécuritéOffice 365

Maester, l’outil pour automatiser vos tests de sécurité Microsoft 365

I.  Présentation

Maester est un projet communautaire créé en avril 2024 par Merill Fernando, chef de produit chez Microsoft et deux MVP Security Fabian Bader et Thomas Naunheim. C’est un outil PowerShell conçu pour vous aider à comprendre la configuration de votre tenant Microsoft 365.

Il vous permet d’avoir une vision de votre configuration par rapport aux bonnes pratiques de sécurité, et ainsi, surveiller la posture de sécurité de votre tenant Microsoft 365. Cet outil fournit un rapport, mais ne réalise aucune action de correction.

À l’heure actuelle, l’outil contient 92 vérifications de sécurité, toutes concentrées sur la partie Microsoft Entra. Ces vérifications proviennent de plusieurs sources :

Maester réalise plusieurs vérifications de sécurité, incluant :

  • Droits administrateurs (limiter le nombre d’utilisateur avec le rôle administrateurs global, utilisation de PIM)
  • Les méthodes d'authentification, comme la configuration multi-facteur et FIDO2.
  • La gestion des applications, incluant les permissions de création et le consentement OAuth.
  • Les paramètres de mots de passe et les politiques de verrouillage des comptes.
  • Les accès conditionnels, vérifiant l'exclusion de comptes de secours et la présence de stratégies répondant aux bonnes pratiques.

Avant de rentrer dans le vif du sujet, voici le lien vers le site officiel du projet :

II. Installation et utilisation de Maester

A. Fonctionnement

Maester utilise l'API Microsoft Graph pour accéder aux informations de votre tenant Microsoft 365. Cet outil vérifie la conformité de votre configuration par rapport aux bonnes pratiques de sécurité. L’originalité de cet outil réside dans l’utilisation de Pester pour vérifier cette conformité.

Pester est un module PowerShell conçu pour les tests unitaires. Bien qu’il soit souvent utilisé pour valider des scripts ou des fonctions, son mode de fonctionnement permet à chacun d’écrire ses propres tests unitaires.

Dans le cas de Maester, Pester est employé pour s'assurer que la configuration de votre tenant Microsoft 365 correspond aux critères définis dans des fichiers. Ces fichiers, appelés fichiers de tests dans la suite de l’article, permettent de réaliser des vérifications sur la conformité de votre configuration. L’appellation tests provient du fait que Pester suit une nomenclature stricte concernant les fichiers qu’ils utilisent : xxxx.Tests.ps1.

Cela permet ainsi une vérification rigoureuse et continue de la sécurité d’un tenant.

Il est important de comprendre que Maester, utilisant Pester, ne fournit pas de valeurs directes de votre tenant, mais indique plutôt si vos configurations respectent les normes établies dans les fichiers Tests.

Par exemple, au lieu de spécifier le nombre d'administrateurs globaux, Maester vous informera si la configuration est conforme aux bonnes pratiques définies dans les tests. Cette méthode peut représenter une nouvelle approche pour certains qu’il est essentiel de comprendre.

B. Installation

Maester est publié dans la PowerShell Gallery, son installation peut être réalisée en seulement deux Cmdlets :

Install-Module Pester -SkipPublisherCheck -Force -Scope CurrentUser
Install-Module Maester -Scope CurrentUser

Sur votre PC, il faut ensuite créer un dossier et installer les fichiers de tests. Dans notre cas, nous installerons les fichiers Tests dans "C:\temp", mais tout autre chemin fonctionnera.

cd c:\temp
mkdir maester-tests
cd maester-tests
Install-MaesterTests .\tests

Les fichiers de tests sont installés dans C:\Temp\maester-tests\tests.

C. Utilisation

Dans un premier temps, il faut se connecter :

Connect-Maester

Comme indiqué plus haut, Maester s’appuie sur Microsoft Graph. Si vous n’avez pas les autorisations requises, il faudra autoriser les autorisations OAuth pour l’application Microsoft Graph Command Line Tools.

Ensuite, vous pouvez exécuter les tests :

Invoke-Maester

À la fin de l'exécution des tests par Maester, un bref résumé est affiché dans la console.

Ce résumé indique les résultats des tests avec le nombre de tests réussis, échoués ou ignorés, fournissant ainsi un aperçu rapide de l'état de la configuration de sécurité de votre tenant Microsoft 365.

Un fichier de rapport HTML est aussi créé, il est stocké dans le dossier "tests-results" et s’ouvre automatiquement dans votre navigateur :

Un élément en "Passed" indique que la configuration de votre tenant respecte le test en question.

Un élément en "Failed" indique que la configuration de votre tenant ne respecte le test. Cependant, selon les contraintes de votre entreprise, il convient de statuer si c’est un réel problème, ou bien un risque accepté.

Pour chaque élément du rapport, vous retrouverez :

  • L’identifiant
  • L’URL vers la documentation Maester concernant ce test
  • Le résultat du test
  • Les détails du test qui contiennent les actions à réaliser pour passer ce test
  • Les catégories
  • Les tags
  • La source du fichier de test Pester

Pour la majorité des tests, il est évident de comprendre pourquoi un test échoue, comme une fonctionnalité non activée ou un nombre excessif d'utilisateurs non conformes.

Cependant, il peut être plus complexe de déterminer la cause d'un échec dans certains cas, où le problème pourrait ne pas résider dans la non-conformité, mais plutôt dans un bug au sein du code PowerShell du test lui-même. Dans ces situations, il sera nécessaire d'examiner en détail les fichiers "*.Tests.ps1" pour identifier et résoudre l'erreur.

D. Création de ses propres tests

Le gros intérêt de Maester est que ce n’est qu’un framework, c’est-à-dire qu’il peut être étendu pour correspondre à vos besoins avec des tests personnalisé.

Pour créer un test personnalisé dans Maester, vous devez suivre une certaine structure. Par exemple, nous allons créer un test pour vérifier qu'un groupe contient exactement deux membres.

Pour cela, créez un fichier nommé "Test-CustomITConnect.Tests.ps1" dans le répertoire "<chemin>\maester-tests\Custom". Pester recherche les fichiers se terminant par ".Tests.ps1" pour les exécuter comme des tests.

Dans notre cas, nous créons un fichier" Test-CustomITConnect.Tests.ps1" dans "C:\temp\maester-tests".

Pour le contenu du fichier "Test-CustomITConnect.Tests.ps1", nous devons suivre la syntaxe Pester, ce qui donne :

Describe "Test-MyGroupMembership" -Tag "Group" {
    It "Check 'MyGroup1' Members" {

        $groupID = "cc831d2a-6e92-4988-903c-1799de3a9aa1"
        $members = Get-MgGroupMember -GroupId $groupID

        # Test if the group has exactly 2 members
        $members.Count | Should -BeExactly 2
    }
}

Il est alors possible d’exécuter Maester avec uniquement notre test :

cd c:\temp\maester-test
Invoke-Maester .\tests\Custom\

Le rapport contient uniquement notre test personnalisé.

À noter qu’il est aussi possible de simplement exécuter "Invoke-Maester", pour exécuter tous les tests, y compris les tests personnalisés.

E. Exécution régulière

Maester peut être configuré pour surveiller en permanence la configuration de votre tenant à l'aide de service DevOps comme Azure DevOps Pipeline, GitHub Actions et Azure Automation.

Avec ces solutions, il est possible de recevoir un e-mail régulier avec les informations concernant la sécurité du tenant.

Source : maester.dev

La configuration de cette automatisation n’est pas détaillée dans cet article, mais vous pouvez retrouver toutes les informations dans la documentation de Maester.

III. Mise à jour des tests Maester

L'équipe Maester ajoute de nouveaux tests au fil du temps, il faut donc penser à mettre à jour le module et les tests de temps en temps.

cd <chemin>maester-tests\tests

Mettre à jour le module Maester :

Update-Module Maester -Force
Import-Module Maester

Mettre à jour les tests Maester :

Update-MaesterTests

Tous les tests personnalisés dans le dossier "/Custom" seront conservés.

Les fichiers de test des autres dossiers, notamment "/EIDSCA", "/Maester" et "/CISA", seront remplacés par les tests les plus récents :

IV. Contribuer à l’amélioration du produit

Maester est une solution récente et se focalise pour le moment uniquement sur les tests Microsoft Entra ID. Cependant, compte tenu de son fonctionnement et de sa flexibilité, il est tout à faire possible de créer ses propres tests et de participer à ce projet communautaire.

Pour approfondir le sujet de l'audit Microsoft 365, vous pouvez consulter cet article :

author avatar
Bastien PEREZ Consultant Système
Consultant système sur les solutions Microsoft depuis plus de 10 ans, je partage mes modestes connaissances pour favoriser la montée en compétences de chacun.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.