こんにちは、クラウド製品を担当している金沢と申します。
今回はAzure arc構成画面で見られる「ゲスト構成ポリシー」に関してです。
Azure arcに参加させたマシンにゲスト構成ポリシーをアタッチさせたので、その一連の流れを少し噛み砕きつつお話しさせていただこうと思います。
1.ゲスト構成ポリシーとは何か

Azure Policyの中で展開されている組み込みポリシーのひとつのカテゴリというのが現状最も自分が腑に落ちた説明だと思っています。
以下リンク内にて記載のある「Guest Configuration」がまさに「ゲスト構成ポリシー」に対応します。つまり、「組み込みポリシー」、つまりAzureが定義したポリシーの一部です。
組み込みのポリシー定義の一覧 - Azure Policy | Microsoft Learnlearn.microsoft.com
また一方で以下のような記載も別記事にあります。
learn.microsoft.com
以下は上記記事からの引用です。
Azure Machine Configuration (旧称 Azure Policy Guest Configuration) は SCCM で期待される状態を構成する機能と連携し、次の機能が有効となります。
SCCMとは、System Center製品の一部で、組織の大量のコンピュータに対し、一括した監視を行うことができるMicrosoft製品のうちの1機能を指します。これが望めるということです。
「PC管理できる機能と連携したポリシー」というざっくりとした概念で、今回はアタッチを進めます。
2.Azure arcを使用するために必要なもの
Azure VMの場合、別途Azure Machine Configuration extension for Windowsのインストールが必要です。
しかし、Azure arcに参加しているオンプレミスもしくはAWS等の他クラウドサービスマシンの場合、Azure arc接続時にインストールされるエージェントが対応しているため、個別にエージェントをインストールする必要がなく使用できます。
またAzure arcでの使用が前提とされていることもあり、GUI上でAzure arcの使用を選択することができるのも特徴です。
Azure PolicyはOS、マシンによって分かれているものも多く、一括で管理したい場合は以下のようにイニシアティブ定義でポリシーをバンドルすることが多いかと思います。

たとえば同じポリシーをAzure、オンプレミス等の別環境でも割り当てたい場合でも、一括で管理できます。
3.ゲスト構成ポリシーを実際にアタッチする
それでは、実際にポリシーをAzure Portalでアタッチしてみます。
といってもアタッチ手順は画面に従っていけばいいので、とっても簡単です。
また実際に他カテゴリのポリシーアタッチ経験がある方は、ほとんど同じ手順で問題ありません。今回は、私のように実際にAzureをほとんど触ったことない方向けに手順を記します。
手順に関しては、以下Microsoft Learnの記事もご参照ください。
今回は、Azure arcで管理しているマシンのみに「保留中の再起動があるWIndowsVMの監査」というポリシーを割り当ててみようと思います。

3-1.割り当ての確認
「ホーム」から「ポリシー」を開き、「割り当て」を確認します。
「ポリシーの割り当て」を開きます。

3-2.割り当てるポリシーの内容を設定
3-2-1.ポリシーのスコープを設定
「スコープ」とは、ポリシーをアタッチさせる範囲のことです。今回の最小単位はリソースグループです。かなり幅広くとられています。

しかし一方で「除外」を選択し、組み合わせることでリソース範囲を狭めることも可能です。

サービスのカテゴリからリソースそのものまで、幅広く選べます。
これらを組み合わせることで、ポリシーの割り当て範囲を的確に決められます。
今回リソースグループには既にVirtualMachineが存在していました。Azure arc参加マシンのみにアタッチすることとしたため、それらを除外する設定を追加しました。

3-2-2.割り当てるポリシーを設定
ポリシー定義を押下し、
カテゴリで「Guest Configuration」を選択します。検索でも探すことができます。

ポリシーの表示は一部を除きほとんどが英語です。事前に割り当てたいポリシーを決定したうえで、出てきそうな単語で検索するのが確実です。今回は「Reboot」で検索をかけてみました。

3-2-3.ポリシーの基本情報を設定
「ポリシー定義」以下を設定します。

- バージョン(プレビュー)...現在のバージョンの状態を閲覧できます。
- バージョン...デフォルトの場合、その時点で最新のものがアタッチされます。選択項目は、以下を参考に状況に応じて選択ください。
- マイナーバージョンの変更に自動的に登録する...バグ修正など内容に本質的にかかわらないアップデートが行われた際に自動的に反映させる機能を指します。
- プレビューバージョンを含める...現在新しいバージョンが試験中の場合、その内容を含める機能を指します。
- オーバーライド...ポリシーによっては一部挙動を調整できます。
- PollicyEffect...ポリシーのコンプライアンス状態などによって発生する値が変わります。ポリシーを用いたアラートルールの設定等でかなり活躍します。今回はデフォルトのまま設定します。
- DefinitionVersion...デフォルトで設定します。現在検証中です。上記バージョンプレビューと同じ画面が表示されるため、内容としては同じであると予想しております。おそらく長期的な使用によるバージョン改定によって差分が生まれるのだと思います。
- 割り当て名..Azure Portal上で管理するのに必要な命名を行います。今回はデフォルトのままといたします。
3-3.パラメーターの設定
ゲスト構成カテゴリにおいて特徴的なパラメーターです。これを「True」にすることによりAzure arcのマシンをポリシー監査の範囲に含めることができます。

3-4.修復の設定
今回のポリシーでは特段設定する必要がないのでスキップします。
組み込みポリシーの場合、PolicyEffectが「deployIfNotExists 」、もしくは「modify」の効果がある場合にこちらが必要となります。デプロイを強制させるポリシーに関連します。

任意のポリシー>定義の表示 で開けるJSONファイルで
この表示がある場合に関連します。
今回のポリシーのJSONファイルを見ると

となっているため、必ず設定する必要はありません。
3-5. コンプライアンス非対応のメッセージ
後述しますが、ポータル画面でエラーが出た際、また実際にアラートルールを通してメールを送信する際にメッセージを表示することができます。

レビューし、自分の設定に間違いがないことを確認して作成します。

通知でもある通り、実際に割り当ててもコンプライアンス評価がアクティブになるまでには即時性がありません。ある程度の時間がたつまで待ちます。
4.アタッチ後の確認
一定以上の時間が経過したら、ポリシーの作成状況を見てみます。
ポリシー>割り当て
から自分が設定したポリシーがあるかを確認します。
またこのときGUI上では、2-3で決定した割り当て名がポータル上に表示されます。

中に入ると

ちゃんと監視されており、状態も反映されていることがわかります。
また「詳細」を押下すると

3-5.コンプライアンス非対応のメッセージにて設定したメッセージが表示されています。
ポリシーでの設定またそれに伴う監視の結果に関しては以上の流れです。
5. 検証中に気が付いたこと
5-1.ポリシー評価のタイミング
Microsoft Learnにおいて、Azure Policyの評価タイミングは以下と記されています。
- ポリシー割り当てを使用してリソースがスコープ内で作成または更新される。
- ポリシーまたはイニシアティブがスコープに新たに割り当てられる。
- 既にスコープに割り当てられているポリシーまたはイニシアティブが更新される。
- 標準のコンプライアンス評価サイクルで、24 時間ごとに実行される。
以下より引用
learn.microsoft.com
それほど急いでない場合は問題になりませんが、しかしこれはGUI上で更新と表示のラグとつながります。
「保留中の再起動がある Windows VM の監査」ポリシーで見てみます。


上記は11:06時点の、各VMの保留中の更新プログラムとコンプライアンスの評価の状態です。
vSphereVM-02、vSphereVM-03-WACに対して、更新プログラムのインストールをAzure Portal上で指示してみます。


11:18に更新が終了しました。

全体ポータルでも「保留中の更新プログラムなし」と表示されました。設定に沿うと、ポリシーのコンプライアンス状態でも「コンプライアンス対応」と表示されるはずです。

vSphereVM-02の評価は依然として「コンプライアンス非対応」のままです。
最終評価の時刻に注目すると、11:18に終了した更新が反映されていないことがわかります。
更新条件を改めて見返すと
- ポリシー割り当てを使用してリソースがスコープ内で作成または更新される。
- ポリシーまたはイニシアティブがスコープに新たに割り当てられる。
- 既にスコープに割り当てられているポリシーまたはイニシアティブが更新される。
- 標準のコンプライアンス評価サイクルで、24 時間ごとに実行される。
今回の更新は手動更新であり、また7/30 5:32から24時間経っていません。
つまり、要件が満たされなかったがために、評価の実行がされなかったということになります。
また、新たにVMWareマシンをAzure arcに追加しポリシーをアタッチしてみます。

vSphereVM-04というマシンを追加し、ポリシーをアタッチしました。

ポリシーの監査は追加したvSphereVM-04のみにしか行われていません。これも上記の評価条件が行われたタイミングと理屈は同じです。
ばらばらになった評価タイミングですが、デイリーの更新タイミングを迎えた時点で画一化されます。7/31 5:59時点の結果は以下となりました。

図式で整理するとこうなります。

また評価タイミングについては、以下のリンクもご参照ください
learn.microsoft.com
5-2.Azure arc接続マシンを再立ち上げ時のトラブル
余談ですが
このブログを書いている途中、vSphere(オンプレミス端末)をシャットダウンしたものを再度立ち上げたのですが、立ち上げた直後からしばらくはいくらコンプライアンスに準拠していようと「コンプライアンスの状態」は「非対応」、「コンプライアンスの詳細」が「Not Found」と表示されてしまいます。
![]()
理由は以下の通りリソースがない、もしくはシャットダウンの時間が長すぎて、エージェントの稼働がうまくいっていないの2つの可能性があります。

私が解決できた方法が2つあるので、同じ状況になった方がいらっしゃいましたらお試しください。
1..時間の経過を待つ
先にも述べた通り、とにかくAzure Policyは反映が遅いです。もし時間があるようでしたら、いったん置いてみて様子を見るのもひとつの手です。私は約30分~1時間で想定の結果が得られました。もし2時間近く経っても反映がなされない場合は、次を試します。
2.管理対象サーバーのエージェントが正しく動いているかを確認
管理対象サーバーにログインし、services.mscを開きます。
services.msc
拡張タブから「Guest Configuration Arc Service」の状態を確認します。

「状態」が「実行中」でない場合は「実行中」に、「スタートアップの種類」が「自動」ではない場合は「自動」に設定し、再起動することで解決しました。
終わりに
今回はAzure Policyの中の、特にゲスト構成ポリシーに関して触れてみました。実際に触ると、結果が出るまで1日かかるなかなかハードなアイテムですので、ぜひこちらの情報を参考にしていただけたら幸いです。