[Azure] クラウドネイティブな SIEM である Azure Sentinel を触ってみた

<b><font color="red">2019年9月24日　Azure Sentinel が GA(一般提供)となりました。</font></b>

# SIEM とは
Security Information and Event Management の略。日本語では「セキュリティ情報イベント管理」と呼ぶ。

IT 用語辞典 e-Words（ http://e-words.jp/w/SIEM.html ） には、
「セキュリティソフトの一つで、様々な機器やソフトウェアの動作状況の記録（ログ）を一元的に蓄積・管理し、保安上の脅威となる事象をいち早く検知・分析するもの」と記載があります。

単にログを集めるだけなら似たようなソリューションがあると思うので、SIEM のメリットは、複数のログを横断的に分析できるところにあると思います。この領域は Splunk が強い印象ですね。
最近、~~プレビュー~~ですが Azure Sentinel というクラウドネイティブな SIEM が出てきたこともあり、触ってみました。


# Azure Sentinel の概要
Azure Sentinel は、セキュリティ情報イベント管理（SIEM）およびセキュリティオーケストレーション自動応答（SOAR）ソリューションとのこと。SIEM は上記に記載したとおりですが、SOAR とは？
Security Orchestration and Automation Response の略が SOAR です。米国を中心に注目を集めている技術で、一般的にはオーケストレーション、オートメーション、レスポンスの3つの機能を提供しています。

つまり、Sentinel は、セキュリティに関わるログを集約、横断的に分析し、脅威を可視化、インシデントマッピング、対処までを提供するソリューションとなり、クラウドネイティブな SIEM & SOAR となります。他社製品とはこの点が違いそうですね。
現在は~~パブリックプレビュー~~なので、一般提供になったら変わる可能性がありますが、現時点の Sentinel を触ってみます。
![AzureSentinelOverview.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/157479/f7dc33a2-b7c8-adc7-2325-47e7930c0bb7.jpeg)


# Azure Sentinel を触ってみる

### 前提条件
+ アクティブな Azure サブスクリプション
+ Log Analytics ワークスペース（ない場合は、Sentinel の作成時に一緒に作成する）
+ Azure Sentinel ワークスペースが存在するサブスクリプションへの共同作成者のアクセス許可

### Azure Sentinel の作成
[Azure Portal](https://ms.portal.azure.com) にアクセスし、左のメニューでにて「リリースの作成」をクリックする。
次に、検索窓に「Azure Sentinel」と入力して Sentinel サービスを探す。
![AzureSentinel01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/157479/29513ca7-86ed-8fd8-ec33-c14db6d72377.jpeg)

Azure Sentinel サービスが表示されるので、「作成」をクリックする。
![AzureSentinel02.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/157479/1212517c-b0e0-3dd1-ae31-21385888db91.jpeg)

Azure Sentinel が利用するワークスペース（Log Analytics のワークスペース）がないので、このタイミングで新規作成する。
「+追加」をクリックする。（中央の「ワークスペースの接続」をクリックしても同じ画面に遷移する。）
![AzureSentinel03.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/157479/414ea1f6-d084-8501-99d9-ab6fc6f87355.jpeg)

「新しいワークスペースの作成」をクリックし、右側に表示された Log Analytics ワークスペースに必要項目を入力（設定値は以下を参考に）、「OK」をクリックする。

| 設定項目 | 設定値 |
|:---|:---|
| 新規作成 / 既存のものをリンクする | 新規作成の場合、「新規作成」を選択。既存のもの（LogAnalytics のワークスペースのこと）がある場合は、その中から選択。  |
| Log Analytics ワークスペース | 任意の名称を入力。（緑のチェックマークが出ればOK） |
| サブスクリプション | お持ちのサブスクリプションを選択。 |
| リソースグループ | 新規作成の場合は、下にある青字の「新規作成」を選択し、任意の名称を入力。既存のものがある場合は選択。 |
| 場所 | 任意の場所を選択する。 |
| 価格レベル | デフォルトのまま |

![AzureSentinel04.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/157479/42187d50-d7c5-5eec-bfac-b9853865c8d3.jpeg)

作成した Log Analytics ワークスペースを選択して、「Azure Sentinel の追加」をクリックする。
![AzureSentinel05.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/157479/8bf70f07-f6db-39b1-109e-99adb9965739.jpeg)

Azure Sentinel の作成完了。ここから Sentinel を利用するための設定を行います。
![AzureSentinel06.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/157479/bcec934f-aa0b-0697-2877-2c9d851dceb7.jpeg)


### データの収集
Sentinel は SIEM なので、様々なサービスからログデータを集める必要があります。
そのために、Connector を使ってログを集めるための設定を行います。
実はこの Blog を作成中にコネクタが24種類から25種類に増えていました。クラウドならではですね。
コネクタの利用には前提条件があるので、都度確認をしてください。

| コネクタ名 | 提供元 | 概要 |
|:---|:---|:---|
| Azure Active Directory | Microsoft | 監査とサインインのログを収集 |
| Azure Active Directory Identity Protection | Microsoft | リスクユーザー、リスクイベント、脆弱性の統合ビューが提供される。さらにリスクを迅速に修復したり、今後のイベントを自動的に修復するようにポリシーを設定したりできる |
| Azure Advanced Threat Protection | Microsoft | お客様の組織を標的にした、高度な脅威、ID のセキュリティ侵害、悪意のある内部関係者のアクションを特定、検出し、それらについて調査する |
| Azure Information Protection | Microsoft | Azure Information Protection のすべてのアラートを収集 |
| Azure Security Center | Microsoft | Azure Security Center からアラートを収集 |
| Azure アクティビティ | Microsoft | Azure で発生したサブスクリプションレベルのイベントの分析情報を収集 |
| Barracuda Web アプリケーションファイアウォール | Barracuda | Barracuda のログを収集 |
| Check Point | CheckPoint | ログファイルを Syslog CEF として保存することで、Check Point アプライアンスのログを収集 |
| Cisco ASA | Cisco | Cisco アプライアンスから CEF ログと同じ方法でログを収集 |
| Common Event Format（CEF） | 任意 | ログを Syslog 共通イベント形式（CEF）として保存し、ログを収集 |
| CyberArk | CyberArk | ***準備中*** |
| DNS | Microsoft | DNS サーバーからログを収集 |
| F5 | F5 | ログファイルを Syslog CEF として保存することで、F5 アプライアンスのログを収集 |
| Fortinet | Fortinet | ログファイルを Syslog CEF として保存することで、Fortinet アプライアンスのログを収集 |
| Microsoft Cloud App Security | Microsoft | Cloud App Security からのアラートを収集 |
| Microsoft Defender Advanced Threat Protection | Microsoft | ***準備中*** |
| Microsoft Web アプリケーションファイアウォール（WAF） | Microsoft | WAF のログを収集 |
| Office 365 | Microsoft | 複数のテナントから1つのワークスペースに監査ログを収集 |
| Palo Alto Networks | Palo Alto Networks | ログファイルを Syslog CEF として保存することで、Palo Alto Networks アプライアンスのログを収集 |
| Symantec Integrated Cyber Defense Exchange | Symantec | すべてのセキュリティソリューションのログを収集。Symantec ICDx と Azure Sentinel との統合は、REST API を使用 |
| Syslog | Microsoft | Syslog をサポートする任意のオンプレミスのアプライアンスを接続し、ログを収集 |
| Windows ファイアウォール | Microsoft | Windows ファイアウォールのログを収集 |
| アマゾンウェブサービス | Amazon | AWS CloudTrail イベントを取集 |
| セキュリティイベント | Microsoft | Windows サーバからすべてのセキュリティイベントを収集 |
| 脅威インテリジェンスプラットフォーム | Microsoft | 脅威インテリジェンスプロバイダーから、さまざまな種類の監視可能なもの（IPアドレス、ドメイン、URL、ファイルハッシュなど）を収集 |

それでは、実際に Sentinel と接続してみたいと思います。
まずは、接続対象の Windows Server を作成しておきましょう。
Windows Server の作成は今回のテーマではないので、詳細は割愛します。
以下のように、「リソースの作成」→「Windows Server 2016 Datacenter」へと進み、ウイザードに従って必要項目を入力して作成してください。
![WinServer2016.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/157479/6627a4eb-eb8e-68b6-d672-e43f0b84db95.jpeg)

接続対象ができたので、いよいよ Sentinel と接続します。
左のメニューの「Data Connectors」をクリックすると、下の画面が表示されます。
ここには、上の表に記載したコネクターが表示されます。その中から「セキュリティイベント」を選択します。
右のほうに、セキュリティイベントの説明が記載された画面が出てきますので、「コネクタページを開く」をクリックします。
![AzureSentinel07.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/157479/aa0febab-ff5a-184a-1347-387323aaace7.jpeg)

コネクタページでは、**前提条件**と**構成**が表示されます。
前提条件をクリアしているかどうか確認してください。クリアしている場合、緑色のチェックマークが表示されます。
今回は前提条件をクリアしているので、下の構成に進みます。
先ほど Azure 上に Windows Server を作成したので、「Install agent on Azure Windows Virtual Machine」を選択します。
青字で「Azure Windows 仮想マシンのエージェントをダウンロードしてインストールする＞」と表示されるので、これをクリックします。
![AzureSentinel08.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/157479/33918ce4-8d58-7e9c-84f3-be610d0226be.jpeg)

仮想マシンを自動で探してきますので、先ほど作成した Windows Server をクリックしてください。この例では「mywin2016」が対象の Windows Server となります。
クリックすると、右側に接続情報が表示されます。ここで「接続」をクリックします。
![AzureSentinel09.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/157479/56d3e8d1-e72b-3ff9-97fe-e81054be2f0d.jpeg)

Agent がダウンロードされ、Windows Server にインストールされます。
インストールが完了すると、下の図のように、緑色のチェックマークがマシン名の後ろのカラムにつきます。これで Sentinel と接続が完了したことになります。
![AzureSentinel10.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/157479/742ddd6b-2fdc-436c-ff77-96040c58794a.jpeg)

最後に、Sentinel へストリーミングするセキュリティイベントを選択します。
画面に記載のあるとおり、4種類から選択可能です。
ここでは「All Events」にしていますが、データ量が多くなると思いますので、一般的には「Common」で良いと思います。
![AzureSentinel11.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/157479/5ce76bd4-4978-5d7e-8c0f-27811d40cb1d.jpeg)

設定が完了しました。
![AzureSentinel12.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/157479/1562d84c-6a7d-745d-2db4-24f16f204648.jpeg)


### 脅威の検出
先ほどの設定で、Sentinel に Windows Server のセキュリティイベントログを収集することができるようになりました。
ここでは、収集したログから脅威を検出してみたいと思います。

左のメニューの「ハンティング」をクリックします。
すると下の図の画面が表示されます。ここでは、Sentinel があらかじめ提供している16個のクエリが表示されています。
アイコンは、初期アクセス、永続性、窃盗などの脅威の種類を分類しているようです（ https://docs.microsoft.com/ja-jp/azure/sentinel/hunting ）。
![AzureSentinel13.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/157479/4f4ef44e-c53f-7da3-3694-167e4e464bfa.jpeg)

試しに、一番上にある「Anomalous Azure Active Directory ・・・」を選択し、右下にある「クエリの実行」をクリックします。
![AzureSentinel14.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/157479/e95aabac-955d-3a2d-7af0-b595e749bee0.jpeg)

下の図のように、赤枠で囲った場所に、クエリの結果が表示されます。今回は0件ですね。
![AzureSentinel15.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/157479/16d3137d-80b3-7ae6-90c2-d79a92545603.jpeg)

1件ずつ順番に実行しても良いのですが、「すべてのクエリを実行する」というのが用意されているので、こちらをクリックします。
![AzureSentinel16.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/157479/9e545144-89a3-1c0c-3778-9ce4ca3eb889.jpeg)

下の図のように、すべてのクエリに対して結果が表示されました。
このうち、赤枠で囲んだ2つのクエリに対し、それぞれ1件の検出がありました。こちらの中身を確認してみましょう。
![AzureSentinel17.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/157479/c2303b4a-e449-53d8-31d9-43c1d68649e5.jpeg)

下の図では、1件が検出された「Summary of user logons by logon type」を選択し、右下にある「結果の表示」をクリックします。
![AzureSentinel18.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/157479/a03518f2-082d-c4eb-0df8-e7be3aa3983a.jpeg)

画面の真ん中にある「・・・」をクリックすると、「捜索ブックマークの追加」が表示されるので、これをクリックします。
![AzureSentinel20.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/157479/9429d20b-1598-d3d6-653c-26062e6fafe9.jpeg)

右側に捜索ブックマークの追加画面が表示されるので、「追加」をクリックします。
ブックマーク名は任意で設定することが可能です。ここではデフォルトのままにしています。
![AzureSentinel21.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/157479/5707cd04-664b-bb05-c9d4-f71f9a6fcc01.jpeg)

同様に、「Summary of failed user logons by …」も捜索ブックマークに追加したのが下の図です。
ブックマークされたクエリの横には、黄色になった星マークと、画面上段にあるブックマークの箇所が「2」になっているのが確認できます。
疑わしいアクティビティについては、ブックマークをしておくと調査が楽になりそうですね。
![AzureSentinel22.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/157479/bfa6d4ce-589d-9e46-8f99-60902dbe0c3c.jpeg)

画面中央の「ブックマーク」タブをクリックすると、ブックマークした一覧が表示されます。
Sentinel では、右下にある「調査」ボタンをクリックすることで、グラフィカルな画面で調査が可能です。
![AzureSentinel23.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/157479/a1550a3c-6dda-c184-5a65-1b41321a7127.jpeg)

現状は残念ながらプライベートプレビューということで、登録が必要なようですが、下の図の右側にある画面のような GUI が提供されており、潜在的なセキュリティの脅威を把握することが可能です。
この機能は非常に強力な機能だと思います。
![AzureSentinel25.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/157479/eda627f5-4e07-1aaa-57ac-d62a978db281.jpeg)


### セキュリティアラートの作成
上記までの手順で、Sentinel にログを収集し、収集したログデータからセキュリティの脅威を検出することが可能になりました。
今回は作成した Windows Server を題材にしたのでインシデントが発生していませんが、実際の運用では何らかのインシデントが発生した際には、アラートを通知して運用者に知らせる必要があります。そのためのアラートルールを作成することが可能です。

下の図のように、左のメニューの「分析」をクリックし、画面上部の「＋追加」をクリックすることでルールの作成が可能です。その後の手順は、画面ウイザードに従って設定することが可能です。
詳しくは https://docs.microsoft.com/ja-jp/azure/sentinel/tutorial-detect-threats を参照ください。
![AzureSentinel26.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/157479/9139f8e7-d9b0-c0a4-0058-f8161082a2da.jpeg)


### 自動化と調整
アラートの通知があった後、多くは人の判断を必要とすると思います。とはいえ、セキュリティアラートは量が非常に多いものでもあり、ある程度自動化できる場合もありえます。その際に、Sentinel ではプレイブックというものを使って脅威への対応を自動化することが可能です。
実体は、Azure Logic App を使ったワークフロー処理となります。
この機能はおそらく他社の SIEM 製品にはない Sentinel の優位点かなと思います。

下の図のように、左のメニューの「プレイブック」をクリックし、画面上部の「＋プレイブックの追加」をクリックします。
画面中央の「プレイブックの追加」をクリックしても同じです。
![AzureSentinel27.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/157479/2d239ffb-139c-c40c-857f-808c9abe950c.jpeg)

プレイブックの名前、サブスクリプションなど、環境にあわせて設定してください。
リソースグループや Log Analytics ワークスペースは既に作成済みなので、既存のものを選択いただくだけで良いです。
最後に「作成」をクリックすると、プレイブックが作成されます。
![AzureSentinel28.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/157479/d3a0890f-8bf4-d45b-53d5-2ffaebd88d4d.jpeg)

下の図のように、Logic App デザイナーが表示されます。
今回は「空のロジックアプリ」を選択して自分で作成しますが、テンプレートにあるものをそのまま利用することも可能です。
![AzureSentinel29.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/157479/8c86bb90-a7e0-2784-18d2-9c37f4f0d5c6.jpeg)

画面中央に「Azure Sentinel」を入力します。下の図のような画面が表示されるので、下のトリガーアクションである「When a response to an Azure Sentinel alert is triggered」をクリックします。
![AzureSentinel30.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/157479/c9386665-d372-b36b-8757-90e58bba288f.jpeg)

サインインが求められる場合がありますので、サインインをしてください。
![AzureSentinel31.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/157479/7f9ef96e-c9b7-2b51-1019-409da933c497.jpeg)

これで、Sentinel からのアラートをトリガーにプロセスを起動する準備ができました。
「＋新しいステップ」をクリックして、自動化するプロセスを作成することができます。ここでは詳細は割愛します。
左上にある「保存」をクリックして、プレイブックを保存します。
![AzureSentinel32.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/157479/45261932-0252-80cf-7ca2-63a5cedf630c.jpeg)

先ほど保存したプレイブックが表示されます。
![AzureSentinel33.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/157479/016dba89-eb25-d6e2-bc2a-5d810faed363.jpeg)


### その他
Sentinel は、外部のツールを使ってセキュリティの脅威を検出することも可能です。
下の図のように、左のメニューから「ノートブック」をクリックし、下の「Azure Sentinel のノートブックを複製する」をクリックすると、Microsoft のセキュリティアナリストが開発した複数のノートブックをパッケージされた環境が、皆様の Azure Notebooks 環境にコピーされます。Azure Notebooks では、無料のクラウドコンピューティングおよびストレージ上で実行することが可能であり、より詳細な分析を Jupyter Notebook 上で行うことができます。
Sentinel と Notebook の統合もクラウドならではの機能提供だと思います。
こちらも詳細は https://docs.microsoft.com/ja-jp/azure/sentinel/notebooks を参照ください。
![AzureSentinel34.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/157479/6c80d266-aa9a-35bf-45bd-ab203716cc64.jpeg)


# まとめ
Azure Sentinel は~~プレビュー~~ですがクラウドネイティブな SIEM ということで実際に触ってみました。
もともと Azure が提供していた Log Analytics をうまく使って、ログ収集用のワークスペースとし、その上に Sentinel の機能を提供しているイメージですね。今回は触れませんでしたが、集めたログから検出するためのクエリは Log Analytics で利用するクエリ言語 KQL（Kusto Query Language）を利用しているので、パワフルな検索ができそうです。脅威の検出後は、アラートの通知や対応の自動化などの機能が入っており、単なる SIEM ではなく SOAR もうまく統合されている印象でした。

+ ログを収集するためのコネクタが準備されており、簡単に設定ができる
+ ログの検索は KQL を利用しており、自由度高くパワフルな検索ができる
+ インシデント発生時のアラートルールの作成ができる
+ Sentinel からのアラートをトリガーにして自動対応を行うプレイブックの作成ができる（Azure Logic App を活用）
+ Azure Notebooks などの外部ツールを使った分析ができる
+ Microsoft のセキュリティアナリストの知見が提供されている（ https://github.com/Azure/Azure-Sentinel ）
+ Azure だけでなく、オンプレミス環境、AWS 等の他社環境との連携ができる

といった特長があり、なかなか使えそうな印象でした。Azure 利用者はぜひ活用してほしいなと思います。