Azure Policy では、ゲスト構成機能 (Guest Configuration: GC) により、環境内のマシンの状態を管理することができます。
ゲスト構成は、次のいずれかの環境に対して使用することができます。
- Azure 仮想マシン
- ゲスト構成拡張機能の概要 で記載されている拡張機能の導入ならびに、マネージド ID の有効化が必要
- Azure Arc 対応サーバーが導入されている環境 (物理 / 仮想)
- Azure Arc エージェントが導入されていれば使用可能
Azure だけでなく、Azure Arc 対応サーバーをインストールしている環境についても Azure Policy のゲスト構成機能を活用することができます。(Azure の仮想マシンについては追加コストは発生しませんが、Azure Arc の環境については追加コストが発生します)
Azure Policy では組み込みポリシー定義が提供されており、Azure 仮想マシンならびに Azure Arc 向けのポリシーが提供されています。
- Compute (Azure 仮想マシン)
- Azure Arc 対応サーバーの Azure Policy 組み込み定義
これらのポリシーの中には、ゲスト構成機能を使用したルールも提供されており、本投稿はゲスト構成機能を使用したルールの監査状況の確認方法をポータルから実施する際の操作を調べたものとなります。
ゲスト構成機能については冒頭に紹介したドキュメントも含めた、次の内容を確認しておくとよさそうです。
ゲスト構成機能
ゲスト構成機能は、Azure Policy のゲスト構成機能について に記載されている次の動作を行うものという認識です。
Azure で実行されているコンピューターとハイブリッド Arc 対応のコンピューターの両方で、オペレーティングシステムの設定をコードとして監査または構成することができます。
監査対象となるコンピューター上で、コードを実行し、情報の取得を行うことで対象の状態を取得する機能がゲスト構成機能の基本的な考え方になると思っています。
Azure Policy の組み込み定義では、いくつかの方法を使用して監査対象の状態の確認が行われています。
[プレビュー]: [プレビュー]: Azure Security エージェントを Windows Arc マシンにインストールする必要がある のルールであれば、状態の取得は「拡張機能がインストールされているか」で判断することができます。
組み込み定義については GitHub でも定義の JSON が公開されており上述の定義であれば ASC_AzureSecurityWindowsAgent_Arc_AuditIfNotExists.json で確認することもできます。
このルールであれば、次の部分で、拡張機能が導入されているかどうかの判断が行われていますが、これについては、Azure のリソースの情報を取得することができれば、状態を確認することができますので、ゲスト構成機能は使用されていません。
再起動が保留中の Windows VM の監査 については、ゲスト構成機能が使用されています。
GuestConfiguration_WindowsPendingReboot_AINE.json の定義を確認すると、「"type": "Microsoft.GuestConfiguration/guestConfigurationAssignments"」となっているものがあります。
この定義になっているものはゲスト構成機能が使用されているものとなり、ポリシーを割り当てている環境では、ゲスト構成機能のためのコードが導入されていることになります。
ゲスト構成機能のためのコード
ゲスト構成機能については、DSC を使用して構成されるようになっているようですが、コードについては、ゲスト構成機能ごとに「C:\ProgramData\GuestConfig\Configuration」に格納されています。(Azure 仮想マシン / Arc ともに同じディレクトリになります)
先ほど、例に挙げた「再起動が保留中の Windows VM の監査」であれば「WindowsPendingReboot」という name が設定されていました。
これと同名のモジュールが「C:\ProgramData\GuestConfig\Configuration」にダウンロードされていることが確認できます。
このディレクトリ内の PowerShell のスクリプトを確認することでどのような判断でポリシーの監査が行われているのかを確認することができます。
ポータルからゲスト構成機能の監査状況を確認する
Azure Arc 対応サーバーであれば、Azure Arc 対応サーバーのブレードの「マシン構成 (プレビュー)」から、ゲスト構成の監査状況を確認することができます。
各ゲスト構成の準拠状況についても構成のリンクから確認することができ、準拠していない場合はどのような理由で準拠していないのかを確認することができます。該当のゲスト構成から情報が確認された最終更新タイミングも確認できますので、どのタイミングで取得された情報を基にして準拠状態を監査したのかを確認することもできます。(表示内容の更新については、最新の情報に更新を押すより、F5 でリロードしたほうがよさそうでした)
Azure Arc 対応サーバーのリソースであれば、次の URL から確認することができます。
- https://portal.azure.com/#@<テナント名>.onmicrosoft.com/resource/subscriptions/<サブスクリプション ID>/resourceGroups/<リソーグループ名>/providers/Microsoft.HybridCompute/machines/<コンピューター名>/providers/Microsoft.GuestConfiguration/guestConfigurationAssignments/<ゲスト構成名>/overview
Azure 仮想マシンの場合、マシン構成が見当たらず、Azure Arc 相当のゲスト構成の状況を確認することができるブレードが発見できなかったのですが、類似の URL に直接アクセスすることで、確認することができます。(Arc のリソースの URL を Azure 仮想マシン向けの置き換えたものです)
- https://portal.azure.com/#@<テナント名>.onmicrosoft.com/resource/subscriptions/<サブスクリプション ID>/resourceGroups/<リソースグループ名>/providers/Microsoft.Compute/virtualMachines/<コンピューター名>/providers/Microsoft.GuestConfiguration/guestConfigurationAssignments/<ゲスト構成名>/overview
これらの情報を確認することで、ゲスト構成がどのような理由で準拠していないのかを確認することができ、Azure Policy の検証を実施する際に役に立つのではないでしょうか。
今回はポータルから確認しましたが、ゲスト構成 REST API リファレンスのAzure Policy を使用して確認できるようにしておくのも検討が必要かもしれませんね。