はじめに
各Azureリソースに対して、アラートルールを作成し発報されたアラートを確認する中でAzure 基盤側の動作により発生してしまうエラーに出会ったので、共有します!
アラートルールの構成
検知したいこと
Microsoft Sentinelの正常性監視機能のログにおいて、Microsoft Sentinelリソースであるデータコネクタ―、 分析ルール、 プレイブックの操作失敗を検知する。
KQL
SentinelHealth
|where Status == 'Failure'
ディメンション分割
リソースID:SentinelResourceId
ディメンション設定:なし
発生した事象
Azure Portalの発生したアラートが確認できる「監視」> 「アラート」ウィンドウにて、Microsoft Sentinelの分析ルールに関するアラートを選択すると以下エラー文が表示され、トリガーとなったMicrosoft Sentinelの分析ルールを参照することができません。
■エラー文(画像赤枠)
ターゲット リソース [分析ルールのリソースID] は移動または削除されました。
原因
アラート発報の画面描画処理が原因でした。
ARG の resources テーブルを利用してアラート発報対象の Azure リソースの情報を描画しています。
一方で、ARG の resources テーブルは、microsoft.securityinsights/alertrules をサポート対象としていないため、この resources テーブルに分析ルールに関する情報が記録されません。
そのため、以下のような ARGクエリ結果を基に表示していますが、実行しても対応するログレコードがヒットせず上記エラー文が表示されます。
resources | where id in~ ('/subscriptions/<subscription id>/resourcegroups/dainomat_monitor/providers/microsoft.operationalinsights/workspaces/<workspace>/providers/microsoft.securityinsights/alertrules/<分析ルール GUID>') | project id | summarize ids= make_set(tolower(id))
当該の画面描画処理については見直す必要があるということで、MSの開発部門へエスカレーションされましたが、改修することはできないとのことでした。
解決策
Sentinel の分析ルール リソース (microsoft.securityinsights/alertrules) が ARG の resources テーブルに、分析ルール リソースに関するログ レコードを書き込むようにAzure 基盤側の動作変更はできないため、アラートルールの構成での代替案を提案していただきました。
ディメンション分割においてリソースIDは分割せず、ディメンション設定をSentinelResourceId、SentinelResourceTypeを指定し、ディメンション値に必要な項目設定することで、エラー文が表示されなくなりました。
おわりに
とても限定的な現象ですが、サポートに確認した際MSとのやりとりが多かった事象でしたので、同様なことが起こっている方のご参考になれば!