Azure Monitor change analysis(変更分析)を眺めてみる

2022/09/28に公開

はじめに

先月(2022/8/31)に、Azure Monitorの「Change Analysis(変更分析)」という機能がGAされました。
https://azure.microsoft.com/en-us/updates/generally-available-enterpriseready-azure-monitor-change-analysis-capability-released/

何か障害があったときなど、意図通りリソースが設定されていないときなどに、いつ・誰が・どんな設定を変更したのか?を確認したくなることはままあるかと思います。

もともと、リソースの設定を弄った場合、アクティビティログの中で下記のように変更点を見ることができました。
アクティビティログ>特定のイベントを選択>変更履歴 タブを参照

しかし、変更されたイベントを探し当てるのも大変で、正直見やすいとは言えず、こういった意図で調査に使うにはなかなか厳しいものがありました。
それに答えるのが「Change Analysis(変更分析)」機能です。
※AWSだと"Config"がまさにこういう機能を持っていたかなと思いますが、しっかり追いついてきましたね。

というわけで今回は、この新機能を試していきたいと思います。

触ってみる

準備

― リソースプロバイダーの登録
下記のリソースプロバイダー(Microsoft.ChangeAnalysis)が登録されている必要があるようです。

ただし、基本的にGUIで(Azure Portal上で)変更分析を表示しようとすると自動的にリソースプロバイダーが登録されるようです。一般的に「何かあったときの調査用」のためCLIで使うような機能ではないですし、実質気にしなくて良さそうですね。

  • Azure Functions と Web アプリのゲスト内変更 に対する変更分析の有効化
    こちらの機能を使うには、明示的かつApp Service Planやウェブアプリなどを選択して有効にする必要があるようです。
    Azure Monitor>「変更分析」メニューに下記のようなボタンが表示され

    個別に有効化するUIとなっています。

環境全体の変更分析

Azure Monitor>変更分析メニューを開くと、下記のように条件を指定して変更情報が表示されるようになっています。
時間や対象リソースグループを指定して、その範囲で変更された情報を一覧で見ることができます。

分析対象がリソースのプロパティなので、ストレージアカウントのNW制限などの「パラメータ」だけでなく、VMの電源状態のような「ステータス」も見えることが分かります。
電源Off/Onや、デプロイ状態まで含めて見えるのは便利ですね。

若干イマイチかなと思ったのが、下記のような変更イベントです。
StreamAnalyticsは、ストリームイベントを収集・分析・後続に流すような処理を行うサービスですが、その中に「LastOutputEventTime」というプロパティを持っているようです。

リアルタイムでイベントを処理していると、常にこのプロパティは更新し続けられますし、「変更分析」の目的に対しては大量のノイズになってしまいます。

そんな時は、下のように「フィルターの追加」から「分析対象外にしたいリソース」を外すことで見やすくしてみましょう。

個別のリソースの変更分析

先ほどの画面で、適当なプロパティをクリックすると、そのリソースに関する変更をドリルダウンすることができます。

複数行に渡るプロパティの変更(例えば、network aclの接続許可IPアドレスリストなど…
)や、変更者(xxxxxx@xxxxx.onmicrosoft.comなど…)が表示され、誰がいつ、何をやったのかを、とても分かりやすく分析することができます。
また、そのパラメータについての説明も書かれているので、調査者がそのリソース自体に詳しく無くてもなんとなく意味が分かる、というのはとても良いですね。(英語ですけど…)
なお、「コンテキスト全体を表示」にチェックを入れることで、そのリソースのパラメータ全体を見ることもできました。うーん、これはよくできている…

おわりに

Azure Monitorの「Change Analysis(変更分析)」を触ってみました。とても使いやすく、有事の調査にとても使えそうです。
この手の機能は使わなくてすめばそれに越したことは無いですが、「普段は無くても困らないけど、何かあったときに捗る」というモノですので、いざというときに用意されていると安心ですね。

Discussion