Microsoft Sentinel でスクリプトを用いてテンプレートルールを一括で有効化させる

# 1. はじめに
Microsoft Sentinel を構築する際に、分析ルールを用いて異常な振る舞いをインシデントとして検知することになります。
分析ルールは Azure Portal (Sentinel) の画面からだと 1 ルール単位で有効化する必要があり、手間がかかってしまいます。
本記事は、GitHub で公開されているツールを用いて、スクリプトベースで有効化する方法をご紹介致します。

# 2. ツールについて
今回用いたツールはこちらです。Microsoft 認定のツールではありませんが、Author の Jan さんは Most Valuable Professional として認定された方になります。

[alertRuleFromGHToSentinel](https://github.com/jangeisbauer/sentinel/blob/main/alertRuleFromGHToSentinel.ps1)
紹介されたブログ記事
https://emptydc.com/2021/03/19/alertrule-from-github-to-azure-sentinel/
Author 紹介
https://mvp.microsoft.com/en-us/PublicProfile/5003550

# 3. 利用イメージ
Microsoft Azure のテンプレートルールは GitHub でアジャイルに開発されており、YAML 形式で随時更新されています。Sentinel の分析ルール画面からは GitHub レポジトリの情報とリンクされており、テンプレートを元にデプロイする仕組みが取られています。
今回は、テンプレートルール適用の自動化を目的として、スクリプトを用いて自環境の Sentinel に対して適用することを実践してみます。

# 4.　GitHub 上の Sentinel 分析ルールテンプレートについて
GitHub のSentinel 分析ルールテンプレートはこちらになります。
https://github.com/Azure/Azure-Sentinel/tree/master/Detections
詳細は wiki に情報がまとまっていますので参考としてください。
https://github.com/Azure/Azure-Sentinel/wiki

Sentinel 側で表示されるログソースの単位と、GitHub 上のフォルダが一致していないものもあるので、選定するルールについては一定の理解が必要です。
例：AzureActiveDirectory は SigninLogs と AuditLogs に分割されているなど　
- https://github.com/Azure/Azure-Sentinel/tree/master/Detections/AuditLogs
- https://github.com/Azure/Azure-Sentinel/tree/master/Detections/SigninLogs

# 5.　ツールを触ってみる
PowerShell なので、今回は Azure Cloud Shell を用いた手順を試してみました。

- Cloud Shell を起動する (PowerShell モード)
    - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653790/86e25bc3-683a-8774-c63a-01cba2554670.png)

- スクリプトをダウンロードする
```powershell
Invoke-WebRequest -Uri "https://raw.githubusercontent.com/jangeisbauer/sentinel/main/alertRuleFromGHToSentinel.ps1" -OutFile "alertRuleFromGHToSentinel.ps1"
```

- スクリプトを利用して、必要となるモジュールをインストール
```powershell
import-module .\alertRuleFromGHToSentinel.ps1 
```

- Azure GitHub より対象となるルールを選択し、デプロイする
    - GitHub の対象ルールのRAWデータリンクを直指定すること
    - Sentinel のリソースグループ、Log Analytics のワークスペース名を指定する
```powershell
 New-AzSentinelAlertRuleFromGitHub -resourceGroupName "(リソースグループ)" -workspaceName "(Log Analytics ワークスペース名)" -gitHubRawUrl "(Azure Sentinel GitHub Analytics ルールのYAMLファイルのRAWデータリンク)"
```

- 例）AWS CloudTrail用VPC変更検知分析ルールテンプレート(Changes to Amazon VPC settings)を選択して適用したケース
        - https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Detections/AWSCloudTrail/AWS_ChangeToVPC.yaml
        - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653790/b105fccf-2e41-3f7b-8a6e-d72584c4e440.png)

- **参考** GitHub 上の指定フォルダの YAML をまとめて適用する（ログソースの分析ルールの一括適用）
    - ブログに[設定の記事が掲載されている](https://emptydc.com/2021/03/19/alertrule-from-github-to-azure-sentinel/)

>New-AzSentinelAlertRuleFromGitHub -resourceGroupName "rg-name" -workspaceName "ws-name" -gitHubRawUrl "https://github.com/Azure/Azure-Sentinel/tree/master/Detections/SecurityEvent" -isGitHubDirectoryUrl $true


```powershell
New-AzSentinelAlertRuleFromGitHub -resourceGroupName "rg-name" -workspaceName "ws-name" -gitHubRawUrl "https://github.com/Azure/Azure-Sentinel/tree/master/Detections/SecurityEvent" -isGitHubDirectoryUrl $true
```

- 一括で分析ルールを有効化してくれるので楽！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653790/7047cdcb-b4ad-c7d4-5eaa-0953a0db4d54.png)

# 7. まとめ
以上、Microsoft Sentinel のルールをスクリプトツールで有効化する方法をご紹介致しました。
Sentinel を設計導入する際に、Azure Portal からの操作だと大変でしたが、スクリプト化して一括適用出来るようになるとかなり改善されるのではないかと思います。どなたかの参考になれば幸いです。

＊本稿は、個人の見解に基づいた内容であり、所属する会社の公式見解ではありません。また、いかなる保証を与えるものでもありません。正式な情報は、各製品の販売元にご確認ください。