Maesterを利用してEntra IDのセキュリティテストをしてみたいと思います。
公式サイトに丁寧な解説があるのでそちらを見ればほとんどわかります。
Maesterとは?
Maester は、Microsoft セキュリティ構成を常に制御できるようにする PowerShell ベースのテスト自動化フレームワークです。
Entra ID Security Config Analyzerが統合されています。
なんで監査するの?
IoC等での管理も進んでいますが、GUIからやIoCでも間違ってdeployしてしまった場合等に、必要なグループが消えたや、条件付きアクセスのルールがセキュリティポリシーからずれてしまった等々に気づくためにやっていきます。
管理者が不正したり、間違ったらみんなで気づけるようにしておこうね。ってことですね。
SIEMにログを飛ばしていて、検知ルールを書いていたらそちらで気づけるとは思いますが。
あとは、フレームワークに従ってある程度対応指針が見えるので、手動で実行してそういえばこれはやっておかなきゃな。みたいに利用するのもいいかもしれません。
インストールと実行
ここではmacを利用してインストールしていきます。
PowerShellが必要なので、macにPower Shellをインストールしてください。
PwereShellのインストールが完了したら、以下のコマンドを実行します。(公式サイトより引用)
Install-Module Pester -SkipPublisherCheck -Force -Scope CurrentUser
Install-Module Maester -Scope CurrentUser
md maester-tests
cd maester-tests
Install-MaesterTests .\tests
以下のコマンドを実行し、M365に接続します。
このとき、Graph APIへのアクセス許可が必要になるのでグローバル管理者権限を持つユーザーでログインします。
Connect-Maester
監査対象のM365テナントにログインし、APIアクセス許可に同意します。
監査が開始されます。
完了すると、ブラウザが開き結果が表示されます。
下のほうに詳細な結果が表示されているので、内容を確認し修正すべき箇所は修正をします。
例えばこの結果だと、ゲストアカウント招待が誰でもできる設定になっているためFailedとなっています。
この設定が組織として問題がある場合には、招待できるユーザーを制限するべきということがわかりますね。
リンクをクリックすると、どう修正するべきか等の詳細が表示されます。
ここで、「View in Microsoft Entra admin center」のリンクをクリックすると設定ページをダイレクトに開いてくれるのでとても便利です。
クリックすると、↓のページが開きます。
ので、必要に応じて設定を変えて再テスト等をするといいですね。
カスタムテストも作成できる
独自の要件がある場合には、自分でテストを書くことができます。
これも公式サイトで詳しく解説されています。
以下公式サイトからの引用コードですが、自社テナントに必要なグループ内のメンバーが0になっていないかをチェックするコードです。
絶対にユーザーがいないとおかしいグループの監査に利用できますね。
Describe "ContosoEntraConfig" -Tag "Privilege", "Contoso" {
It "Check 'Contoso MFA Users' group" {
$groupId = "e05d094c-a785-4a7c-b7eb-f0ccebbe009e"
$memberCount = Get-MgGroupTransitiveMemberCount -GroupId $groupId -ConsistencyLevel eventual
# Test if the group exists and has members
$memberCount | Should -BeGreaterThan 0
}
}
上記のコードを、Customフォルダに保存し、以下のコマンドを実行して確認します。
Invoke-Maester ./Custom/
テストが実行され結果が表示されます。
テストに利用したグループはメンバーが数名いるので、Passedになっています。
コードでテストがかけるので、GitHub等による管理やCI/CDを回すのもできますね。
まとめ
監査ツール他にもいくつかありますが、ルールが書きやすいのと修正箇所への直接リンクや、Graph APIでのテストスクリプトの表示等使いやすい感じでした。
PowerShellのテストフレームワーク https://pester.dev/ で色々とかけるようなので自社用のものにカスタマイズしていくと良さそうですね。