Contents
Splunk とは?
Splunk とは、あらゆるシステムから生成される情報を収集して、「検索」や「分析」することができる、いわゆる SIEM 製品です。Azure でも SIEM の位置づけで、「Azure Sentinel」という製品を提供していますよね。
今回は、Azure AD で生成するログである “監査ログ” と “サインイン ログ” を、Splunk に統合する方法をご紹介します。
Splunk との統合方式
Splunk へ統合するには、Splunk が提供する (?) “Microsoft Azure Add on for Splunk” というアドオンを使用します。このアドオンでは、監査ログ、サインイン ログの他にも、Azure のインベントリや、VM の構成情報、トポロジ―など、あらゆるログが収集可能です。すばらしい。
さて、このアドオンを使用して Azure AD ログを収集するには、以下の 2 つの方法がります。
- 方法1 : Microsoft Graph API 経由で収集する
- 方法2 : Event Hubs 経由で収集する
私、Splunk はど素人なのですが、それぞれの方法で Azure AD ログを収集してみたので、本記事ではそれらの手順をご紹介したいと思います。
前提条件
Azure AD ログを収集するにあたって、以下のライセンス要件を満たしている必要があります。
- 監査ログのみを収集する場合は Azure AD Free ライセンスで OK
- サインイン ログを収集する場合は Azure AD Premium ライセンスが必要
サインイン ログを Azure Portal から参照する場合は、無償ライセンスで構わないのですが、API 経由でアクセスする、もしくは Event Hubs などにストリーミングするシナリオでは有償ライセンスが必要ですので用意しておきましょう。なお、Azure AD Premium ライセンスは試用版でも構いません。
Splunk への統合
それでは、Splunk に統合していきます。なお、本記事では Azure AD Identity Protection を Splunk に統合方法について紹介した山口さんの Qiita でも紹介されており、こちらが参考になりました。
事前準備 (Splunk のインストール)
まず、Splunk をインストールしていきます。素晴らしいことに無料トライアル版があるので、今回は無料トライアル版を申し込んで環境を構築していきます。なお、Microsoft Azure Add on for Splunk は Splunk 8.0 に対応済みですので、本記事では Splunk 8.0.0 をインストールしています。
それでは、インストールしていきましょう。ダウンロードした Splunk 8.0.0 のインストーラー ファイルをダブルクリックします。
[Check this box to accept the License Agreement] にチェックを入れて、[Next] をクリックします。
次に、ユーザー名/パスワードを入力し、Splunk サーバーのローカル Administrator を作成します。
[Install] をクリックします。
[Launch browser with Splunk Enterprise] にチェックを入れて、[Finish] をクリックします。
インストールが完了すると Splunk が起動します。インストール時に作成したローカル Administrator の資格情報を入力してサインインします。
次に、Microsoft Azure Add on for Splunk アドオンをインストールします。[Find More Apps] をクリックします。
[Microsoft Azure Add on for Splunk] 検索してインストールします。
Splunk のアカウント情報を入力して、利用規約のチェックボックスを入れたら、[Login and Install] でインストールを開始します。
インストール完了後、Splunk の再起動が求められるので、再起動します。
再起動が完了すれば、アドオンのインストールは完了です。下図のように、Apps 一覧に Microsoft Azure Add-on for Splunk が表示されていますね。
Microsoft Graph API 経由で統合する
Microsoft Azure Add-on for Splunk アドオンが、Azure AD に登録した アプリケーション (Splunk App) としてサインインし、Microsoft Graph API を経由で Azure AD ログを収集するイメージです。
まずは、Azure Portal 上で、上図の Splunk App をアプリ登録する必要があります。Azure Portal – [Azure Active Directory] – [アプリの登録] メニューへ進み、[新規登録] をクリックします。
アプリケーションの名前を決定して、[登録] します。
登録したアプリが Microsoft Graph API 経由で監査ログを収集するには AuditLog.Read.All のアクセス許可が必要です。サインイン ログはそれに加えて、Directory.Read.All が必要になります。
これらのアクセス許可は [API アクセス許可の要求] から付与できます。[+ アクセス許可の追加] – [アプリケーションの許可] をクリックします。
AuditLogs.Read.All と、
Directory.Read.All を選択して、[アクセス許可の追加] をクリックします。
追加できたら、前画面の [管理者の同意を与えます] をクリックします。
次に、[証明書とシークレット] – [+新しいクライアント シークレット] を生成します。
[+ 新しいクライアント シークレット] をクリックし、クライアント シークレットを生成します。
クライアント シークレットは、Splunk のアドオンの設定値として必要なため、控えておきましょう。
次に、[概要] メニューに表示される [アプリケーション ID] も控えておきます。
これで、Azure AD 側の設定は完了です。さて、次は Splunk 側を設定していきます。[Microsoft Azure Add-on for Splunk] をクリックします。
[Configuration] タブをクリックします。
[Account] ページ右上の [Add] をクリックします。
それぞれのフィールドを入力して、[Add] します。
Account name | Splunk 側のアカウント設定名 (適当な名前で OK) |
Client ID | 控えた アプリケーション ID |
Client Secret | 控えた アプリケーション Secret |
次に、Input タブへ進み、右上の [Create New Input] をクリックします。
[Microsoft Azure Active Directory Sign-ins] をクリックします。
下図のような感じで入力して、[Add] します。監査ログ (Microsoft Azure Active Directory Audit) も同様の手順で追加しましょう。
以上で構成は完了です。正常に構成できていると、数分で Splunk から Azure AD ログがご確認いただけるかと思います。試しに、[Search] タブから検索してみましょう。
▼ 監査ログ (sourcetype=”azure:aad:audit” で検索した結果)
▼ サインイン ログ (sourcetype=”azure:aad:signin” で検索した結果)
Event Hubs 経由で統合する
Microsoft Azure Add-on for Splunk アドオンが Event Hubs にストリーミングされたデータを収集する方法です。[Microsoft Graph API 経由で統合する] とは違い、Microsoft Graph API を使用しません。
まずは、Azure AD ログを Event Hubs にストリーミングするよう設定します。Event Hubs の作成方法は下記の公開情報が参考になります。
Azure Portal から Event Hubs を検索して、Event Hubs メニューへ進みます。
[追加] をクリックします。
各種フィールドを入力していきます。ファイアウォールを使用して接続元を制限したい場合は、Standard 以上の機能レベルを選択する必要があります。
その他の値は任意ですので、それぞれ入力したら [作成] します。
作成した Event Hubs に Azure AD ログをエクスポートします。Azure Active Directory – 監査ログ – [データ設定のエクスポート] をクリックします。
[+ 診断設定を追加する] をクリックします。
[AuditLogs]、[SigninLogs] を選択して、[イベント ハブへのストリーム] を選択、保存します。
数分後、Event Hubs – <Event Hubs 名前空間> – [Event Hubs] へ進むと、以下 2 つのエンティティが作成されていることが確認できます。(エクスポート設定以降にログが生成されないとエンティティは生成されないかも)
Event Hubs – <Event Hubs 名前空間> – [共有アクセス ポリシー] をクリックします。
[RootManageSharedAccessKey] をクリックし、接続文字列 – 主キー の値をコピーし控えます。
以上で、Azure 側の設定は完了です。次は、Splunk 側から Event Hubs へ接続します。[Microsoft Azure Add-on for Splunk] をクリックします。
次に、Input タブへ進み、右上の [Create New Input] をクリックします。
[Azure Event Hubs] をクリックします。
Event Hubs の接続文字列 および Event Hubs 名を入力して [Add] します。同じ操作を監査ログに対しても行います。
▼ サインイン ログ
▼ 監査ログ
設定が完了すると、こんな感じになります。
以上で構成は完了です。[Search] タブから検索してみましょう。
▼ サインイン ログ (source=”azure_event_hub://signinlogs” で検索した結果)
▼ 監査ログ (source=”azure_event_hub://auditlogs” で検索した結果)
また、Event Hubs への Incoming/Outgoing メッセージ統計は、Azure Portal – Event Hubs – <Event Hubs 名前空間> – <Event Hubs 名> の概要から確認できます。下図ですと、1 つのログが Event Hubs にストリーミングされ、これが外部に出力されていることが読み取れます。
その他のログ収集について
試したわけではありませんが、 Azure や Azure AD のログ・構成情報を収集するアドオンはその他にもいろいろとあります。
Azure 関連のログですと、Microsoft が作成したアドオンがありますので、こちらを使ってもいいかもしれませんね。(ただし、Azure AD ログは非対応っぽい。)
また、冒頭ご紹介しました山口さんのブログでは、Microsoft Graph Security API を使用して Identity Protection のリスクイベントを収集するアドオンが紹介されています。
その他にもいろいろとアドオンがありそうですが、その中でも気になるのは Microsoft Office 365 App for Splunk による Office 365 ログの可視化です。なんだかすごく良い感じの可視化ができそうですね。
おわりに
いかがでしたでしょうか? 今回ご紹介した Splunk のアドオンでは、2 つの統合方法が用意されていましたが、自社の環境に沿った方式を選択いただければと思います。
また、Microsoft も Azure Sentinel と呼ばれる SIEM ソリューションを提供しているので気になる方はそちらもチェックしてみてください。
それでは、よい Azure AD ライフをっ♪
コメント