複数の Sentinel / Log Analytics ワークスペースにまたがるクエリーで検索する（クロスワークスペースクエリー）

# 1.はじめに
Azure Log Analytics / Sentinel を利用していると、複数のワークスペースで分割して環境を構築することがあります。
ステージング（開発/本番/検証）でワークスペースを分けたり、GDPR のような保管要件で地域毎にワークスペースを分けるようなケース、Azure Active Directory のテナントが分かれているため、各々でワークスペースを作成するようなケースが考えられます。

このような環境では、Microsoft Sentinel では、クロスワークスペースクエリー（クロスリソースクエリー）と呼ばれる強力な機能が提供されており、このようなワークスペースを横断した検索が出来るようになっています。
本記事では、このクロスワークスペースクエリー **Cross workspace queries** の検索方法について触れたいと思います！

https://learn.microsoft.com/ja-jp/azure/azure-monitor/logs/cross-workspace-query

# 2. クエリー方法
クロスワークスペースクエリーはとても簡単です！
同一の Azure テナント内で Log Analytics ワークスペース名がユニークであれば、テーブル名の前にワークスペース名を指定するだけで検索が出来ます。
```sql
workspace("contosoretail-it").Update
| count
```
完全名で指定する場合は、**サブスクリプション名/リソースグループ名/リソース名**で指定します。
```sql
workspace('contoso/contosoretail/contosoretail-it').Update
| count
```
ワークスペースの **GUID** が分かっている場合は、GUID で指定します。
```sql
workspace("b459b4u5-912x-46d5-9cb1-p43069212nb4").Update
| count
```
Azure Lighthouse 機能を用いて、異なる Log Analytics ワークスペースに検索をかけることも出来ます。
この場合は**リソース ID** で指定します。
```sql
workspace("/subscriptions/e427519-5645-8x4e-1v67a3b84b59a1985/resourcegroups/ContosoAzureHQ/providers/Microsoft.OperationalInsights/workspaces/contosoretail-it").Update
| count
```

# 2. クエリーのイメージ
クロスリソースクエリーの例です。
## 2.1 テーブルを横断して結合して検索する
環境が分かれているようなケースで、全体環境を調査するために横断してクエリー検索を行うようなケースになります。
本番/開発/検証といったステージング環境で分かれてしまったリソースの集計や、海外のワークスペースもまとめて集計するようなケースが考えられます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653790/91258cbd-1fe4-e9b9-9eb8-be2f9c59167b.png)

テーブルをまとめて検索する場合は ``union`` 演算子を用います。

https://learn.microsoft.com/ja-jp/azure/data-explorer/kusto/query/unionoperator?pivots=azuremonitor

以下は 2 つのワークスペースを横断して Azure Monitor Agent の集計をワークスペースを横断して検索した例です。

```sql
union
    Heartbeat,
    workspace("log-hubhnakada-monitor-JapanEast").Heartbeat,
| where Category == 'Azure Monitor Agent'
| summarize arg_max(TimeGenerated, *) by SourceComputerId
| sort by Computer
| project Computer, Category, OSType, OSName, ComputerPrivateIPs
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653790/7f0d0146-5790-00e2-a2c0-d0ef567f2bda.png)

## 2.2 異なる Azure Active Directory テナント間の Log Analytics テーブルを横断して結合して検索する
クロスワークスペースクエリーは、異なる Azure AD テナントであっても利用することが出来ます。
この場合は、事前に [Azure Lighthouse 機能](https://learn.microsoft.com/ja-jp/azure/lighthouse/overview)を用いて設定を行うことで、異なる AAD テナントの Log Analytics ワークスペースも操作することが出来るようになります。
Azure Lighthouse については、多くの有志の方々が記事にされていますので、以下参考として下さい。

https://qiita.com/tags/azurelighthouse

イメージで記載すると以下になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653790/db98f87c-6bbe-1a1f-752b-662a1286d768.png)

試しに Azure Lighthouse を設定した異なる　AAD テナントのワークスペースにまたがって検索した例です。
```sql
union Heartbeat, workspace("/subscriptions/9da7c7a8-20fa-4153-85aa-XXXXXXXXXXXX/resourcegroups/rg-japaneast-management/providers/microsoft.operationalinsights/workspaces/la-sentinel-je-sub1-visualstudio").Heartbeat
| where Category == 'Azure Monitor Agent'
| summarize arg_max(TimeGenerated, *) by SourceComputerId
| sort by Computer
| project TenantId,SubscriptionId, Computer, Category, OSType, OSName, ComputerPrivateIPs
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653790/6eafdf12-423f-c085-d1d8-419ca002e69b.png)

## 2.3 別 Log Analytics ワークスペースにある情報を用いて結合する
ログ情報が異なる Log Analytics ワークスペースで運用しており、現ワークスペースから結合して検索したいようなケースが考えられます。
JOIN 結合を用いて、他ワークスペースのテーブルをマッチングさせて検索するような使い方などのアイデアが考えられます。

# 3. 制限事項など
2023.1 現在、Log Analytics のクロスリソースクエリーには以下の制限があります。
詳しくは公式 Docs をご参照下さい。

- クエリーに含めることが可能なワークスペースは**最大 100 個**まで

**Microsoft Sentinel** を用いて分析ルールを横断ワークスペースで実施する場合は以下制約があるのでご注意ください。

- Microsoft Sentinel で分析ルールを作成する場合は、クエリーに含めることが出来るワークスペースは**最大 20 個**まで
- 全ての Log Analytics ワークスペースに Microsoft Sentinel をオンボーディングする必要がある
- インシデントの作成は、クロスリソースクエリーの分析ルールを作成した Sentinel で行われる
    - 全てのワークスペースでインシデントが作成されるわけではない

# 4. 参考リンク

https://learn.microsoft.com/en-us/azure/sentinel/extend-sentinel-across-workspaces-tenants

# 5. まとめ
実用環境で Microsoft Sentinel / Log Analytics ワークスペースを構築していると、検証・開発環境や、異なるテナントに対する情報を収集するニーズは多いと思いますが、クロスワークスペースクエリーを知っておけば、権限があれば横断した検索や分析に生かすことが出来るのではないかと思います。どなたかの参考になれば幸いです。

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