Автоматизация проверки безопасности Microsoft 365 с помощью Maester
Настройка Microsoft 365 обычно начинается с благих намерений: настроили Conditional Access, включили двухфакторную аутентификацию для админов, ограничили гостевой доступ к конфиденциальным группам. Проходит полгода, в команде меняются люди, кто-то для быстрого фикса отключает правило, а назад его вернуть забывает. Узнают об этом обычно на аудите или после инцидента.
Контролировать состояние тенанта вручную через портал Entra ID или заставлять инженеров раз в месяц прокликивать десятки меню сложно и ненадежно. Для проверки конфигурации серверной инфраструктуры давно придумали автотесты. Проект Maester адаптирует этот подход для среды Microsoft 365.
Что представляет собой Maester
Maester — это фреймворк тестирования на базе PowerShell и популярного движка Pester. Его главная задача заключается в том, чтобы запустить набор проверок против вашего тенанта M365, проверить настройки на соответствие рекомендациям по безопасности и выдать подробный отчет.
Инструмент связывает API Microsoft Graph, модули управления M365 и привычные тесты Pester. Если вы хоть раз писали модульные тесты в PowerShell, синтаксис Maester покажется родным.
Быстрый старт и запуск
Для работы нужен PowerShell и пара команд. Установка идет напрямую из PowerShell Gallery:
Install-Module -Name Maester -Scope CurrentUser
После установки создаем рабочую папку и загружаем готовый набор проверок:
md ~/maester-tests
cd ~/maester-tests
Install-MaesterTests
Запуск тестирования состоит из двух шагов: авторизации и вызова самого раннера.
cd ~/maester-tests
Connect-Maester
Invoke-Maester
Команда Connect-Maester запрашивает авторизацию в Microsoft Entra. Кстати, для работы с изолированными облаками вроде USGov или China предусмотрен параметр -Environment:
Connect-Maester -Environment USGov
Разбор возможностей
Готовые тесты проверяют базовые параметры: политики условного доступа, статус MFA, настройки паролей, параметры внешнего общего доступа и роли администраторов. Практическая ценность фреймворка раскрывается в нескольких направлениях.
Собственные тесты на Pester
Вы не ограничены стандартным набором из репозитория. Любой файл .tests.ps1 в папке с тестами становится частью общего прогона. Если в вашей организации запрещено создавать открытые ссылки на файлы SharePoint, вы пишете короткий Pester-тест, проверяющий этот параметр через Microsoft Graph API.
Разные форматы отчетов
Результаты работы Invoke-Maester можно экспортировать в HTML, JSON, CSV, Excel или Markdown. Интерактивный HTML-отчет удобно показать аудиторам или выгрузить на внутренний веб-ресурс.
Оповещения в чаты
Результаты не обязательно читать в консоли. Скрипт отправляет сводку в Microsoft Teams, Slack или по электронной почте. Если за ночь кто-то изменил критическую политику безопасности, утром команда увидит сообщение в рабочем канале.
Интеграция с CI/CD
Фреймворк вписывается в концепцию DevSecOps. Запуск легко настроить по расписанию в GitHub Actions, Azure DevOps или GitLab CI. Авторы выпустили готовый экшен в GitHub Marketplace (maester365/maester-action), который выводит результаты проверки в сводку пайплайна.
Подводные камни
В описании репозитория разработчики предупреждают о нестабильной работе модуля ExchangeOnlineManagement версии 3.9.2. При попытке подключения с этой версией часто возникают ошибки. Сбой связан с самим модулем Microsoft, а не с Maester, поэтому лучше временно использовать предыдущие версии ExchangeOnlineManagement.
Еще один момент — обновляемость тестов. Стандарты безопасности и API Microsoft регулярно меняются. Чтобы поддерживать проверки в актуальном состоянии, придется время от времени подтягивать свежие тесты командой Update-MaesterTests.
Итоги
Maester пригодится системным администраторам, инженерам безопасности и DevOps-специалистам, под опекой которых находятся тенанты Microsoft 365. Инструмент переводит аудит безопасности из категории нудной ручной работы в автоматизированную проверку кода. Если вы хотите контролировать изменения в тенанте и получать уведомления о дрифте конфигурации, проект стоит протестировать в своей инфраструктуре.
