💭

[Azure]AzureADのログで検知したほうがいいコト

2022/02/03に公開約1,600字

はじめに

前回、下記の記事を書きました。

https://zenn.dev/tomot/articles/62a7c20b62a3a7
「特定のユーザーのサインインに気付けなければいけない」と同じレベル感で、「高権限ユーザーが増えたら気づけないといけない」という観点があります。
ある日、Bさんがグローバル管理者になっていたにもかかわらず、Aさんのサインインだけ検知していた・・・では意味がありませんよね。

Windowsサーバーのニュアンスでたとえると、Administratorアカウントの利用に気付くと同時に、Administratorsグループへのユーザーの追加/削除も気づけないといけません。

ということで今回は、権限変更に関わるイベントの通知について説明したいと思います。

対象のイベント

最低限、検知すべきイベントを考えてみます。

イベントの出力先

AzureADでは、ユーザー管理系のイベントは、「AuditLogs」に出力されます。前回の記事で追加設定しておいた、SigninLogsと並列に扱われているものです。
今回はこのAuditLogsの中に特定のログが出力されたら気づけるようにしましょう、という流れになります。

検知すべきイベント

ロールの割り当て操作

権限の付与というのは、AzureADにおいてはAzureADロールの付与、というイベントです。
具体的なイベントの条件は下記の通りです。

Add member to role

なお、ロールの割り当て対象がユーザーでもグループでも、同様のOperationNameになりますので、これを条件に引っかけて、後は中身のパラメータをチェックすればOKです。

グループへのプリンシパル登録操作

「権限を与えているグループに、ユーザーを追加した」という操作は、ユーザーに権限を割り当てるのと同等になりますので、これも検知する必要があります。
具体的なイベントの条件は下記の通りです。

Add member to group

なお、ユーザープリンシパルだけでなく、サービスプリンシパルやManagedIDも同じイベント名で出力されます。(実機の動作より)

検知方法

基本的な通知方式は、冒頭で紹介した前回の記事と同等です。
変わってくるのはアラートのクエリ条件の部分です。例えば下記のようなルールで記載します。

AuditLogs
|where OperationName == "Add member to role" or OperationName == "Add member to group"

一番シンプルな条件にしていますので、対象グループを絞ったりするにはKQLのレイヤで頑張りましょう。(KQLをマスターすると、便利そうですね。私はまだまだ…)
なお、見る限り「OperationName」だけではなく「properties.activityDisplayName」にも同じ文言が入るようです。(実機の動作より)

残りの通知方法などは、前回記事を参照の上で設定ください。

補足

「どのようなイベントを検知すべきか」というところは、実際にその処理を発生させてみて、イベントとしてどのようなものが記録されているか確認すれば追記していくことが出来ます。
例えば、「グループからユーザーを削除した」とか「PIMを使って権限を付与した」なんていうのも拾っても良いかもしれません。
今回は「本当に最低限」の線でイベントを抽出していますので、皆さまの環境ではさらにカスタマイズされると良いと思います。

おわりに

本記事では、サインインの検知以外にどのようなイベントを検知すべきか?どうやって検知できるか?をまとめました。
より安全なAzure利用に、活かしていただければ幸いです。

Discussion

ログインするとコメントできます