Azure のログを Azure Event Hub を用いて、Rapid7 Insight IDR に取り込む

# 1. はじめに
Azure の各種ログを Rapid7 Insight IDR に接続してみたので、記録として残しておきます。Rapid7 Insight IDR との接続に関するブログや日本語の解説があまり無かったので、ニーズが有る方は本記事を参考としていただければと思います。
なお、接続は Azure Event Hub によるイベント処理サービスを仲介して接続する必要があります。

# 2. 構成
Azure と Rapid7 Insight IDR を接続する構成イメージは以下になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653790/ea0b9698-d978-4b1c-99c9-dc3fb2c92031.png)

- Azure 側から Rapid7 Insight IDR に受け渡す方式として Azure Event Hub を用います。直接 Azure Event Hub に各種ログを流し込むことも設定上可能ですが、今回は Log Analytic ワークスペースに保存しているログを Azure Event Hub にエクスポートする設定としています。

- Rapid7 Insight IDR では、IaaS の Collector (Windows or Linux) を構築し、Collector が Outbound (TCP:9093) ポートで Azure Global (Internet) 経由で Azure Event Hub のデータを取得します

# 3. Azure Event Hub の注意点
Azure Event Hub を構成する際は、Kafka サービスに対応する Standard Tier 以上が必要です。また Event Hub は **TU** (Throughput Unit) といった処理能力毎の課金体系となっており、イベント量に応じた TU を設定する必要があります。
TU の値は 1TU で以下になります。

| 方向 | 処理能力 |
| -- | -- |
| Ingress | 1MB/sec or 1000 Events/sec (どちらか達した方） |
| Egress | 2MB/sec or 4096 Events/sec (どちらか達した方）  |

https://learn.microsoft.com/ja-jp/azure/event-hubs/event-hubs-scalability

# 4. 試してみる
## 4.1 Azure Event Hub 側設定
### 4.1.1 Azure Event Hub の作成
Azure Event Hub の名前空間 (Namespace) を作成し、TU をアサインします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653790/ec20fc57-871d-4f11-9b46-223ef35e5b33.png)

TU の値は Azure Event Hub 作成後は「スケーリング」設定から変更が可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653790/036069b0-a63d-47c2-aff7-389f90f2268c.png)

### 4.1.2 共有アクセスポリシーの作成
Rapid7 Collector は共有アクセスポリシーのキー認証を用いて接続します。
最小権限であるリッスン要求に対するキーを用います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653790/86959899-c58e-4bc7-bd47-2db848082690.png)

接続文字列は以下フォーマットになっています。

``Endpoint=sb://<NamespaceName>.servicebus.windows.net/;SharedAccessKeyName=<KeyName>;SharedAccessKey=<KeyValue>``

### 4.1.3 Azure Event Hub の作成
Log Analytics ワークスペースからエクスポートする Event Hub を作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653790/3f69f9b6-018e-44e0-a757-e274ab527ed4.png)

## 4.2 Log Analytics ワークスペースから Azure Event Hub にエクスポートする
ログソース側で直接 Azure Event Hub にエクスポートすることが出来る種類もありますが、ここでは汎用的にログを溜める Log Analytics ワークスペースにデータが集約されていることを想定して、エクスポート設定を行っています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653790/ed79d32d-3580-4b22-9b95-ae71be26b094.png)

ログのエクスポートはテーブル単位で設定が出来ます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653790/1a0fbeb2-7d2e-4867-9ce7-b023fb001399.png)

一部のテーブルについては、データエクスポートがサポートされていないのでご注意下さい。

https://learn.microsoft.com/ja-jp/azure/azure-monitor/logs/logs-data-export?tabs=portal#unsupported-tables

## 4.3 Rapid7 Insight IDR 側の設定
Rapid7 Insight IDR 側では Collector をセットアップして、Insight IDR のポータルサイトから設定を行います。ここでは Collector がセットアップされている前提とします。

- DATA COLLECTION の Event Sources より、「Add Event Source」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653790/d0b86bd1-fdd8-4208-afa9-37a256d770fb.png)

- 種別で「Microsoft Azure」を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653790/076ff972-9334-4873-aea6-1e26501c52e8.png)

- Event Sources 設定で、Azure Event Hub の共有アクセスポリシーの接続文字列を設定する
 - 接続に用いる Rapid7 Collector を設定する
 - Endpoint / Credential の設定を行う　 

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653790/6cbecaf4-fb9f-44d5-aa95-035905b66722.png)

# 5. 接続確認
## 5.1 Azure Event Hub 側
Azure Event Hub 側では、Rapid7 Collector がデータ受信することで、Incoming/Outgoing Messages の値が均等に取得出来ていることが分かります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653790/76fadb35-05f8-48c4-a609-c2b847178d18.png)

## 5.2 Rapid7 Insight IDR 側
- Rapid7 Insight IDR 側では、Collector 側の統計画面でデータの取得状況が可視化されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653790/5d94d358-6547-4f54-875a-56be218a5481.png)

- データ取得が確認出来れば、Rapid7 Insight IDR 側でクエリー検索が可能になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653790/c76d6428-6afb-4487-9f4f-cfff87683a1f.png)

# 5. まとめ
Azure 側では Azure Event Hub を通じて 3rd Party との接続を提供していますが、用語が分かり難い部分や、認証をどの方式で設定するのかは各ベンダー側とのインテグレーションが必要です。今回は Rapid7 側で提供されている[ドキュメント](https://docs.rapid7.com/insightidr/microsoft-azure/)が分かりやすく、参考としました。本記事がどなたかの参考になれば幸いです。

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

# 参考情報

https://docs.rapid7.com/insightidr/microsoft-azure/