🌏

Microsoft Sentinel で可用性ゾーンを利用するため専用クラスター構成する

2024/03/24に公開

はじめに

Microsoft Sentinel のログの可用性について

Microsoft Sentinelが保存される Log Analytics Workspace については、一部リージョンを除き、デフォルトでは可用性ゾーンが適応されておりません。ただし、専用クラスター(Dedecated Cluster)を利用することで、東日本リージョンに関してはデータの回復性について可用性ゾーンを利用することが可能です。
https://learn.microsoft.com/ja-jp/azure/azure-monitor/logs/availability-zones

Azure Monitor 専用クラスター

Log Analytics Workspace を Azure Monitor 専用クラスターにリンクすることで、可用性ゾーンやカスタマー マネージド キーといった高度な機能や、高いクエリ使用率を実現可能。もともとは専用クラスターの作成には最低 500 GB/day のインジェストのコミットメントが必要でしたが、2024年2月に最低コミットメントが 100 GB/day になり、利用のハードルが下がりました。
https://learn.microsoft.com/ja-jp/azure/azure-monitor/logs/logs-dedicated-clusters?tabs=azure-portal

専用クラスターの作成

いくつか公開情報に沿って専用クラスターの作成を行う際に困った点、躓きやすい点があったので纏めておきます。

API でしか作成できない。

専用クラスターの最低コミットメントのログ量が引き下げられたことで、利用しやすくなったと思い検証をしてみようと思ったところ、先ずは専用クラスターのリソースを作る必要がありますが、現時点では 100 GB のコミットメント レベルの環境は Azure REST API でしか作成できません[1]

折角 100 GB に最低コミットメント レベルが下がったのに構成するのがやや面倒くさいと思う人が出てくるかなと思ったので、 Postman Collection を作りました。こちらの公開情報の手順に記載のある、「専用クラスターの作成」、「クラスターのプロビジョニング状態を確認する」、「ワークスペースをクラスターにリンクする」、「ワークスペースのリンク状態を確認する」、「クラスターを削除する」等の API リクエストを簡単に投げれるようにコレクションにしております。以下から Fork して使ってください。簡単な使い方はおまけで記載します。
https://www.postman.com/nmurata/workspace/azure-monitor-dedicated-cluster-collection/collection/24896452-ef7ca6f1-098e-4e4b-bf2a-040a26626bee?action=share&creator=24896452

ドキュメントの API バージョンが間違っている。

こちらの公開情報の手順の REST API の例ではパラメーターが "api-version=2021-06-01" となっておりますが、このまま100 GB の専用クラスターの作成の API を実行すると以下のエラーが返ってくると思います。[2]100 GB で作成するときは REST API を使って専用クラスターを作成しろと書いているのに 100 GB で作れない・・・


{
    "error": {
        "code": "InvalidInput",
        "message": "CapacityReservationLevel must be an allowed value: [GB500,T1,T2,T5]. Operation Id: 'ed0110b012e5b17debb84dd517476a6d'",
        "target": "sku.capacity"
    }
}

パラメーターで新しい API バージョンの "api-version=2022-10-01" を指定することで正しく作成できました。
更に、専用クラスターの作成後に Sentinel のワークスペースとの紐づけ(リンク)を行うのですが、こちらの API バージョンも "2020-08-01" にしなければいけなさそうです。参考リファレンス

公開情報の例に関しては Github より Issue を上げたので、そのうち修正されると思います。

時間がかかる

公開情報にも書いてありますが、専用クラスターの作成はかなり時間がかかることがあります。(数時間かかるケースも)
課金自体は専用クラスターの作成が完了した後からのようですが、こまめに Cluster Get を行い、"provisioningState" の 値が "Succeed" になっているか確認をしましょう。

おまけ

API 呼び出し用アプリの登録(簡易版)

Microsoft Entra の管理画面から [アプリの登録] > [新規登録] を行い、アプリを登録しましょう。

作成したアプリのページで [証明書とシークレット]のページに行き。クライアント シークレット タブで、[新しいクライアント シークレット]を作成します。クライアント シークレットは作成時にしか表示されないので、この後 Postman のパラメーターに設定するために控えておきましょう。

作成したアプリに専用クラスターの作成に必要な Azure ロールを付与します。
サブスクリプションやリソース グループなどで、ロールを付与したい単位で[アクセス制御(IAM)]から[ロールの割り当ての追加]を行って権限を付与してください。今回の専用クラスターの作成に関連した権限であれば、「Log Analytics 共同管理者」があれば十分なはずです。

Postman の使い方(簡易版)

こちらのリンクで表示された Collections から Fork したいものを選択し、"Create a fork" を選択します。

好きな Fork Label をつけて自身のワークスペースに Fork してください。

Fork した Collection を選択し、 Variables タブを選択します。
Variables の Current Value に以下に値を入れます。

Variable Current Value
clientId Entra に登録したアプリのクライアント ID
clientSecret Entra に登録したアプリのクライアント シークレット
tenantId Entra に登録したアプリが存在するテナントのテナント ID
subscriptionId 対象のサブスクリプション ID (トークン取得のスクリプト上必要)
subscription-id 専用クラスターを作成する対象のサブスクリプション ID
resource-group-name 専用クラスターを作成する対象のリソース グループ名
cluster-name 作成する専用クラスターの名前
workspace-name 作成する専用クラスターにリンクさせる Sentinel(Log Analytics) ワークスペース

Current Value に値を入れた後に右上の Save ボタンを押すのを忘れずに。

その後は呼び出したい API をコレクション内から指定し、"Send" を実行してください。 PUT / PATCH リクエストの際は Body できちんと要件に合わせたパラメーターを指定しましょう。

なお、本コレクションは以下の Postman の Azure REST API 向けの Collection を Fork して作成しておりますので、詳細は以下もご参照ください。
https://quickstarts.postman.com/guide/azure/index.html?index=..%2F..index#0

脚注
  1. 500 GB 以上のコミットメント レベルの場合は CLI や Powershell を利用しての作成が可能です。Azure Portal での作成は現時点でサポートされておりません。 ↩︎

  2. 2024年3月時点 ↩︎

Microsoft (有志)

Discussion