SplunkにAzure Active Directory関連データを収集する

はじめに
---
- **はっきり言って**、Microsoftのサービス名、サービス内容を把握できていないし、完全に理解する気力も基礎知識もない
- が、[Azure Active Directory](https://azure.microsoft.com/ja-jp/services/active-directory/)というサービスに絞って、そこの**監査ログ**と**サインインログ**を集めてセキュリティ監視をはじめたい
- そのための取込に苦労した点をまとめて備忘録として残しました。

構成情報
---
- Splunkサイド
    - 利用App: 
        - [Microsoft Azure Add on for Splunk](https://splunkbase.splunk.com/app/3757/)
        - Ver 2.0.2
- Azure Active Directoryサイド
    - 利用サブスクリプション：
        - Pay-As-You-Go subscription
        - Azure AD Premium license P1
 
手順概要
---
1. Splunk Add-onのインストール
2. Azure ADサイドの設定
3. Splunk Add-onの設定
4. 届いたログの検索チェック

手順詳細
----
## 1. Splunk Add-onのインストール
- SplunkにApp（Microsoft Azure Add on for Splunk）をインストール
- Appを開き、[ドキュメント] - [Setup Overview]を開く
    - 取り込む仕組みとして２種類の方法があります。
        - Basic Input
        - Event Hub
    - 今回はBasic Inputでの手順を紹介します。理由はBasic Inputで取り込んだほうがCIM(Authentication)にもマップされたsourcetype="azure:aad:signin"が用意されているので分析しやすい。

![スクリーンショット 2019-12-13 10.04.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185759/cd5ebe9b-b049-9fce-4559-037fd54894c3.png)

- ここでは「Reader(閲覧者)」のRoleをもったサブスクリプションが必要といっていますが、これは**監査ログ**の場合です。*sign-inログ*まで取る場合は合わせて**「Security Reader（セキュリティ閲覧者）」**が必須です。
    - なぜ必須か？
        - [Azure Active Directory レポート API にアクセスするための前提条件](https://docs.microsoft.com/ja-jp/azure/active-directory/reports-monitoring/howto-configure-prerequisites-for-reporting-api)
            - きっちりと、セキュリティ閲覧者、セキュリティ管理者、グローバル管理者のいずれかが必要と書かれています
![スクリーンショット 2019-12-13 10.11.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185759/62394d82-5fb8-02a3-194d-05d5754d04e2.png)

        - [Splunk社で整理した各Add-onが利用するAPI情報](https://docs.google.com/spreadsheets/d/1YJAqNmcXZU-7O9CxVKupOkR6q2S8TXriMeLAUMYmMs4/edit#gid=0)
            - こちらにもSecurity Readerと書かれています
<img width="1511" alt="スクリーンショット 2019-12-13 10.10.46.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185759/f63a8e56-9ee2-725b-d7ea-04de97cc25b6.png">

- [ドキュメント] - [Setup an Azure AD Application Registration]を開く
    - 基本的にはこのガイドに従えば必要なappができます。
![スクリーンショット 2019-12-13 21.19.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185759/01e557df-9718-7d51-070d-876cd06727a3.png)

- ここから 2. Azure ADサイドの設定に進みます


## 2. Azure ADサイドの設定
- Azure Active Directory admin centerにアクセス
![スクリーンショット 2019-12-13 21.24.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185759/710f3d0b-e4e5-1488-7338-a1cf3df6e245.png)

- API連携用のAppのレジストレーション
![スクリーンショット 2019-12-13 21.27.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185759/89d076c3-4297-bc21-54d8-e62cbb1230ff.png)
- Certificatesの作成(New Client Secret)
    - **このときに秘密鍵（Secret ID）をメモしておくこと。後で使います。**
![スクリーンショット 2019-12-13 21.28.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185759/cb623afe-5d9e-9279-3b2d-6b29da676b35.png)

- Azure Portalに飛んで、サブスクリプションメニューへ
![スクリーンショット 2019-12-13 21.30.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185759/71777140-7582-f558-3558-7bea1444e0b0.png)
- Add Role Assignment
![スクリーンショット 2019-12-13 21.32.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185759/54280868-3f07-8e8d-4595-5fcaaf1777de.png)
- "Security Reader"を選択し、作成したapp(例:syokota4azureAD）の名前を探して適用
![スクリーンショット 2019-12-13 21.33.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185759/12a4cb95-e997-dc0b-16be-8aab1533569e.png)

- 再び、Azure Active Directory admin centerへ戻る
![スクリーンショット 2019-12-13 21.35.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185759/7e82a44f-17e9-f891-1b80-f730d1e5b657.png)

- AppにAPI Permissionsを設定
 ![スクリーンショット 2019-12-13 21.38.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185759/b018e9f6-cfee-1fb7-4eaf-fbccace1fb4a.png)
![スクリーンショット 2019-12-13 21.39.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185759/8687c257-6a27-f34a-2117-c74b745dcfe5.png)

- [Grant admin consent for xxx]をクリック
![スクリーンショット 2019-12-13 21.40.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185759/c7219590-b604-7957-8638-bd2d97fc168e.png)

- 出てきたダイアログから承認!
![スクリーンショット 2019-12-13 21.41.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185759/c5aa2542-c703-89fa-4c61-9459cf3c07ae.png)

- （まだ無ければ）Azure AD P1 or P2を有効化
    - なぜ必要？以下をチェック
    - [Azure AD audit log API overview](https://docs.microsoft.com/en-us/graph/api/resources/azure-ad-auditlog-overview?view=graph-rest-1.0)
![スクリーンショット 2019-12-13 22.16.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185759/da62f65a-fa83-c61d-c439-99d79426ebe6.png)

- 「Microsoft 365 管理センター」にてAzure AD Premium P1/P2を管理者アカウントに適用!
![スクリーンショット 2019-12-13 21.45.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185759/d84d02f3-6b5d-d483-6509-3a0e8f7736ad.png)
![スクリーンショット 2019-12-13 21.46.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185759/2b28a44d-dbae-dee3-0cc8-a548b37c05eb.png)

- Azure AD側の設定は以上で、以下の情報を控えておいてSplunkのapp設定に進みます
    - **Application (client) ID**
        - 作成したAppのOverviewメニューにて確認可能
    - **Client Secret**
        - Certificate作成時にメモしたものを利用
    - **Directory (tenant) ID**
        - 作成したAppのOverviewメニューにて確認可能


## 3. Splunk Add-onの設定
- Microsoft Azure Add-on for SplunkのAppを開く
- 設定にてAccount作成
![スクリーンショット 2019-12-13 21.54.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185759/b19183e5-f9bc-22db-86fc-241eb14f0df5.png)

- 入力にて2つのinputを作成
![スクリーンショット 2019-12-13 21.58.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185759/a33d7c17-5fdf-e893-0886-67c21612c005.png)

- Sign-in (間隔はデフォルトのまま推奨。試験的に短くしています)
![スクリーンショット 2019-12-13 21.56.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185759/3370e14e-e56e-87f8-1a2c-dcc9e29a6193.png)

- Audit (間隔はデフォルトのまま推奨。試験的に短くしています)
![スクリーンショット 2019-12-13 21.57.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185759/e072af17-02a9-4e88-7c13-3f614fd196e9.png)

## 4. 届いたログの検索チェック

**Auditログ**

- ざっとサマるとこんなtable情報が出せる。いわゆるAzureADの操作レコードのようなもの。ユーザ登録とか更新したとか。

![スクリーンショット 2019-12-13 22.07.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185759/1a01619c-6e7c-a1ae-7019-defcb79dc6e8.png)

**Sign-Inログ**

- ざっとサマるとこんなtable情報が出せる。ログイン認証行為の成功、失敗が記録されていることがわかります

![スクリーンショット 2019-12-13 22.04.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185759/6ee6c61c-639f-c7c7-6b56-77b1f4c10cbd.png)

- Sign-Inログは「tag=authentication」にCIMマッピングされています！
![スクリーンショット 2019-12-13 22.11.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185759/cdb6c373-019e-b070-cf93-28f0cddd9405.png)

- つまり[infoSec App for Splunk](https://splunkbase.splunk.com/app/4240/)のAll AuthenticationsダッシュボードやEnterprise Securityですぐに集計が可能ということ
![スクリーンショット 2019-12-13 22.17.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185759/9f56db20-8666-4f5b-253e-a56cd230cc12.png)


まとめ
---
- **Azure ADを使った認証アクティビティ（成功、失敗）を監視するならこのAdd-Onを使うべし**
- **他のOffice365系のAppはAzure AuditログはあくまでOffice365サービスへの操作履歴を残す監査ログの位置づけです。**

- 例えば下のスクショを見ると。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185759/070b6b74-7a4c-c501-202b-86ffa3f74289.png)

`Azure AD Add-onのサインインログまで取得したデータ（sourcetype=azure:aad:signin）`

`Splunk Add-on for Microsoft Office 365の監査ログ（sourcetype=o365:management:activity）`


"syokota"でログイン試行した際の結果を見比べていただくと分かると思いますが、sourcetype=o365:management:activityではログイン試行の“失敗イベント”まで取れていないことが、差として現れています。


その他
---
- Troubleshooting
    - View Checkpoints
    - 正しく動くと、ログ収集時間が表示される
![スクリーンショット 2019-12-13 22.00.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185759/a566b070-548f-8032-5bd2-d291a481e69c.png)