2020年版Azure ADログ取得方法あれこれ

皆さんこんにちは。国井です。
Azure ADのサインインログは最大で30日までしか登録されないことはこれまでにも何回も紹介してきました。

その都度、スクリプトを書いたり、色々やって「永続的にログを残す方法として、こんなやり方あるよ」って紹介してきたわけですが、最近Azure ADのログを収集するのに使っていたGraph APIがMicrosoft Graphに変わってしまったため、以前ブログで紹介したようなやり方が通用しなくなってしまったのです。

そこで2020年の今、利用可能なAzure ADのログ収集方法をまとめておきますので、参考になれば幸いです。

Microsoft Azureにエクスポート

この方法が最も持続性のある、やり方です。
だってAzure ADとMicrosoft Azureの両方にお金払っているのですから。

ちなみに、このエクスポートの応用系としてAzure Sentinelを使ったSIEMによる分析方法があったりします。

Azure ADレポート用PowerShellコマンドレット

これを書いている現在はまだプレビューですが、Azure ADのログを収集する専用のPowerShellコマンドレットがあります。

最初にコマンドレットのインストールと接続を行い、

Install-module AzureADPreview
Connect-AzureAD

その上で、監査ログを収集したければ Get-AzureADAuditDirectoryLogs コマンドレット
サインインログを収集したければ Get-AzureADAuditSignInLogs コマンドレット
それぞれ実行するだけです。

ただ、Get-AzureADAuditSignInLogs コマンドレットは私の環境だと、
-Filterオプションが使えず、Get-AzureADAuditSignInLogs -Top 10 のように
直近10個のログみたいな収集しかできないんですよね..

PowerShellスクリプトからMicrosoft Graphへ接続

Azure ADレポート用PowerShellコマンドレットがしっかり使えるようになれば、もう要らない方法かもしれないですが、PowerShellからMicrosoft Graphへ接続したい!というニーズは今後もあるでしょうから
ここにやり方を残しておきます… と思ったら、既にMSさんのページに方法が書いてありました。

やり方を要約すると、次のとおりです。

1.自己署名証明書の作成
2.MS Graphへの接続に必要なツールのダウンロード
3.MS Graphへの接続に必要なアプリの登録
4.スクリプトを実行してログを取得

このうち、3.のアプリの登録部分が上記のページで端折った感じで書かれていたので、ここで少し補足しておきます。

まず、Azure AD管理ポータルから[アプリの登録]にアクセスし、新しくアプリを作成します。
このときに入力するURLはなんでもいいのですが、ここでは http://localhost としています。

image

アプリの登録ができたら、[APIのアクセス許可]からログにアクセスするために必要なアクセス許可を設定します。[アクセス許可の追加]をクリックして、

image

Microsoft Graphをクリックして、

image

[AuditLog]の中から[AuditLog.Read.All]を選択します。

image

アクセス許可を追加できたら、[管理者の同意]をクリックしておきます。

image

続いて、[証明書とシークレット]に進み、手順1.で作成した証明書を登録します。
登録には証明書の拇印が必要になりますので、1.で作成した証明書(.cer)ファイルをダブルクリックして、拇印の番号を控えておいてください。

image

登録が完了すると、1.で作成した証明書を利用してスクリプトを実行するようになります。
つまり、証明書を作成したコンピューターからのみスクリプトが実行可能な状態になります。

image

最後に[概要]をクリックして、クライアントID、テナントIDを控えておきます。

image

ここまでの設定ができたら、上記のMSサイトに公開されているスクリプトにここまでで控えておいた情報を入力し、実行するだけ。
すると、ご覧のようにログが取得できます。

image

このやり方をマスターすれば、Microsoft Graphを利用する、他の情報収集にも使えそうですね。
またの機会にチャレンジしてみたいと思います。

■参考情報