Azure Resource Graphでリソース変更履歴をクエリ出来るようになってました

2022.05.02

いわさです。

Azureでリソースの変更履歴を確認したい時は、Azure Monitorのアクティビティログを使うことが多かったのですが、どうやら少し前から、Azure Resource Graphでリソース変更履歴を取得出来るようになっていたみたいです。

先日、この機能を少し使ってみました。

本機能は投稿日時点でパブリックプレビューです。
プレビュー機能利用時の使用条件や注意事項はこちらをご確認ください。

Azure Resource Graphとは

まず、Azure Resource Graphを使うと、個別のリソースプロバイダーを呼び出さずにAzure全体のリソース情報を横断的に参照することが出来るようになります。
AWSでいうところの Cloud Control API みたいな感じです。

なお、クエリ言語としてはAzure Data Explorerでも使用されている、Kusto Query Language(KQL)を使ってクエリする形となっています。

変更履歴の取得方法

Azureリソースが作成・更新・削除されるとresourceChangesテーブルにデータが作成されます。
ドキュメントでは通常5分以内にAzure Resource Graphから利用出来るようになるとされています。

その記録されたデータをクエリするだけですね。
本機能は別途有効化などは不要で、デフォルトで履歴が保存されるようになっているのですぐに使い始めることが出来ます。
なお、直近7日分保存されるようで、現時点では期間の変更は出来ません。

resourcechangesからリソースの変更履歴をクエリすることが出来るようになっています。
ポータル画面で恐縮ですが、取得データは以下のようなイメージです。

また、リソースの詳細情報はpropertiesを確認する必要があります。
ここではリソースグループ名を検索条件にして、個々のレコードのpropertiesを詳細機能から確認しています。

ターゲットリソースの種類とID、変更箇所を確認することが出来ます。

なお今回私は、最近 Azure Firewallへ行った変更履歴を確認したかったので、以下のクエリで確認を行いました。

resourcechanges
| where properties.targetResourceType == "microsoft.network/azurefirewalls"
| project resourceGroup, properties

properties.changesにさらに詳細な変更内容が記録されていますね。

以下の記事の検証を行った際にFirewallのDNAT設定を調整していたのですがその際の履歴をすぐに確認することが出来ました。

ちなみに、本日時点で全ての変更をトレース出来るわけではなく、管理グループ・サブスクリプション・リソースグループなどへの変更は含まれていないです。
対象リソースは以下を確認してください。

Azure Resource Graph エクスプローラーの結果はダッシュボードに表示させることも出来るので、直近の変更履歴をダッシュボードですぐに見えるようにしておきたい場合にも利用出来そうですね。

さいごに

Resource Graphの変更履歴は7日間ですが、期間を変更出来るようになるともっと便利になりそうですね。
ちなみに、Azure Monitorのアクティビティログでは90日分遡ることが出来ます。