[更新履歴]
- 2023/11/09 ブログ公開
- 2026/01/19 クエリ一部修正
こんにちは、Azure Monitoring チームの佐々木です。
今回はリソース変更を検知するアラートが作成できる様になりましたので、その設定方法やサンプルクエリを紹介させていただきます。
目次
- Log Analytics から Azure Resource Graph へクエリ出来る様になりました
- Azure Resource Graph にはリソース変更を記録するテーブルがあります
- サンプルクエリ
- 設定手順
- より複雑なサンプルクエリ
- 操作者を確認したい
Log Analytics から Azure Resource Graph へクエリ出来る様になりました
Log Analytics より Azure Resource Graph (ARG) へクエリが出来る様になりました。
このアップデートにより、Log Analytics 内に記録されたログだけでなく、ARG へのクエリ結果を アラート ルールにて監視できる様になりました。
Azure Resource Graph のデータに対してクエリを実行する (プレビュー)
※ 2023/11/9 時点でプレビューでの公開となります。
Azure Resource Graph にはリソース変更を記録するテーブルがあります
resourcechanges というテーブルに ARM のリソース変更履歴が記録されています。
例えば、properties 列を見る事で以下が確認可能です。
- changeTypeがUpdate -> 更新されたという事になります。
- changes -> 変更があったプロパティと新しい値(newValue)、過去の値(previousValue)が入ります。
※このテーブルの保持期間は 14 日です。保持期間の変更はできないため、長期的にデータを保管することはできません。
これを踏まえ、以下の properties 列のサンプルでは、microsoft.network/networkinterfaces リソースに MAC アドレスのプロパティが追加された事がわかります。
1 | { |
この様に changeType が Update のログが新しく記録された場合、何か設定値が変更されたという事がわかります。
詳しくは以下ドキュメントをご確認ください。
サンプル クエリ
1 | arg("").resourcechanges |

設定手順
以下に、変更履歴を検知するアラートルールの作成方法を記載させていただきます。
この操作を行うアカウントでは、サブスクリプションスコープ の 閲覧者権限 と 閲覧者 ロールが必要になります。
- Azureポータルにログインし、何れかの Log Analytics > ログ ブレードを開きます。
- 例として上記サンプル クエリを指定し、[実行] をクリックすると、クエリが実行されクエリ結果が出力されます。
- クエリ結果が出力された状態で、画面右上の [・・・] - [新しいアラート ルール] を選択することでアラートルールの作成画面へ移動します。

- 条件 セクションでは例えば以下の設定値とします。

- 測定
- メジャー: テーブルの行
- 集計の種類: カウント
- 集計の粒度: 5分
- ディメンションで分割する
- リソースID 列: ResourceId (これによりリソース毎にアラートが発生する様になります。)
- ディメンション: 指定無し
- アラート ロジック
- 演算子: 次の値より大きい
- しきい値: 0
- 評価の頻度: 5分
アクション セクションでは必要に応じてアクショングループを指定します。
詳細 セクションの [ID] 部分にて、 “システム割り当てマネージド ID” (System assigned managed Identity) を指定し、作成します。
ARG へのクエリにはサブスクリプションスコープの閲覧者ロールが必要ですが、当該設定にて “既定” (Default) を選択した場合、アラートルールは ARG を閲覧できず検知されません。

- アラートルールの マネージド ID の権限設定
モニター > アラート > アラート ルール > ID (プレビュー) を確認します。
この時、もしもシステム割り当て済 が オフ となっている場合にはオンにします。

Azure ロールの割り当て へ進み、サブスクリプションスコープの閲覧者権限を付与します。
以上で設定は完了です。
より複雑なサンプル クエリ
操作者を確認したい
操作者はアクティビティログの Caller プロパティに記載されています。
診断設定で アクティビティログ を Log Analytics に送ると、AzureActivity テーブル上にアクティビティログが記録されますが、
AzureActivity テーブルは resourcechanges テーブルと CorrelationId が同じになるため、結合可能です。
そのため、以下のクエリで結合し、検索する事ができます。このクエリをアラートルールで指定し、検知する事も可能です。
1 | arg("").resourcechanges |
Q&A
アラートが発生しない
マネージドID へ サブスクリプションスコープの read 権限は付与されていますか?
マネージドID へ Azure Resource Graph のログを確認するために必要なロールが割り当てられているかご確認ください。

Azure Resource Graph のログを表示するために、サブスクリプションスコープの read 権限が必要となります。
そのため、例えば マネージドID へ サブスクリプションスコープ の閲覧者権限が付与されていない場合には、アラートルールは Azure Resource Graph のログが確認できず、アラートは発生しません。
※本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。