ゲスト構成拡張機能の概要

ゲスト構成拡張機能は、仮想マシン内で監査および構成操作を実行する Azure Policy のコンポーネントです。 Linux および Windows のセキュリティ ベースライン定義などのポリシーでは、拡張機能がインストールされるまで、マシン内の設定を確認することはできません。

前提条件

マシンがゲスト構成サービスに対して認証されるためには、マシンにシステム割り当てマネージド ID が必要です。 次のプロパティが設定されている場合、仮想マシンの ID 要件が満たされます。

"identity": {
  "type": "SystemAssigned"
}

オペレーティング システム

ゲスト構成拡張機能のサポートは、エンドツーエンドのソリューションに関するドキュメントで説明されているオペレーティング システムのサポートと同じです。

インターネット接続

ゲスト構成拡張機能によってインストールされるエージェントは、ゲスト構成の割り当てによってリストされたコンテンツ パッケージに到達し、ゲスト構成サービスに状態を報告できる必要があります。 マシンは、TCP ポート 443 を介した送信方向の HTTPS を使用して、またはプライベート ネットワークを介して接続が提供されている場合に接続できます。 プライベート ネットワーキングの詳細については、次の記事をご覧ください。

拡張機能をインストールするにはどうすればよいですか。

上記で参照されているポリシーにはこれらの特定の文字列が必要なため、拡張機能のインスタンス名は "AzurePolicyforWindows" または "AzurePolicyforLinux" に設定する必要があります。

既定では、すべてのデプロイが最新バージョンに更新されます。 プロパティ autoUpgradeMinorVersion の値は、特に指定がない限り、既定で "true" に設定されます。 拡張機能の新しいバージョンがリリースされても、コードの更新について心配する必要はありません。

自動アップグレード

ゲスト構成拡張では、プロパティ enableAutomaticUpgrade がサポートされています。 このプロパティが true に設定されている場合、Azure では、将来のリリースが利用可能になると、最新バージョンの拡張機能に自動的にアップグレードされます。 詳細については、「Azure での VM とスケール セットの拡張機能の自動アップグレード」を参照してください

Azure Policy

ID 要件を含め、最新バージョンの拡張機能を大規模にデプロイするには、以下の Azure Policy を割り当てます

仮想マシンでゲスト構成ポリシーを有効にするための前提条件をデプロイする

Azure CLI

Linux 用の拡張機能をデプロイするには、次のようにします。

az vm extension set  --publisher Microsoft.GuestConfiguration --name ConfigurationforLinux --extension-instance-name AzurePolicyforLinux --resource-group myResourceGroup --vm-name myVM --enable-auto-upgrade true

Windows 用の拡張機能をデプロイするには、次のようにします。

az vm extension set  --publisher Microsoft.GuestConfiguration --name ConfigurationforWindows --extension-instance-name AzurePolicyforWindows --resource-group myResourceGroup --vm-name myVM --enable-auto-upgrade true

PowerShell

Linux 用の拡張機能をデプロイするには、次のようにします。

Set-AzVMExtension -Publisher 'Microsoft.GuestConfiguration' -Type 'ConfigurationforLinux' -Name 'AzurePolicyforLinux' -TypeHandlerVersion 1.0 -ResourceGroupName 'myResourceGroup' -Location 'myLocation' -VMName 'myVM' -EnableAutomaticUpgrade $true

Windows 用の拡張機能をデプロイするには、次のようにします。

Set-AzVMExtension -Publisher 'Microsoft.GuestConfiguration' -Type 'ConfigurationforWindows' -Name 'AzurePolicyforWindows' -TypeHandlerVersion 1.0 -ResourceGroupName 'myResourceGroup' -Location 'myLocation' -VMName 'myVM' -EnableAutomaticUpgrade $true

Resource Manager テンプレート

Linux 用の拡張機能をデプロイするには、次のようにします。

{
  "type": "Microsoft.Compute/virtualMachines/extensions",
  "name": "[concat(parameters('VMName'), '/AzurePolicyforLinux')]",
  "apiVersion": "2020-12-01",
  "location": "[parameters('location')]",
  "dependsOn": [
    "[concat('Microsoft.Compute/virtualMachines/', parameters('VMName'))]"
  ],
  "properties": {
    "publisher": "Microsoft.GuestConfiguration",
    "type": "ConfigurationforLinux",
    "typeHandlerVersion": "1.0",
    "autoUpgradeMinorVersion": true,
    "enableAutomaticUpgrade": true, 
    "settings": {},
    "protectedSettings": {}
  }
}

Windows 用の拡張機能をデプロイするには、次のようにします。

{
  "type": "Microsoft.Compute/virtualMachines/extensions",
  "name": "[concat(parameters('VMName'), '/AzurePolicyforWindows')]",
  "apiVersion": "2020-12-01",
  "location": "[parameters('location')]",
  "dependsOn": [
    "[concat('Microsoft.Compute/virtualMachines/', parameters('VMName'))]"
  ],
  "properties": {
    "publisher": "Microsoft.GuestConfiguration",
    "type": "ConfigurationforWindows",
    "typeHandlerVersion": "1.0",
    "autoUpgradeMinorVersion": true,
    "enableAutomaticUpgrade": true, 
    "settings": {},
    "protectedSettings": {}
  }
}

Bicep

Linux 用の拡張機能をデプロイするには、次のようにします。

resource virtualMachine 'Microsoft.Compute/virtualMachines@2021-03-01' existing = {
  name: 'VMName'
}
resource windowsVMGuestConfigExtension 'Microsoft.Compute/virtualMachines/extensions@2020-12-01' = {
  parent: virtualMachine
  name: 'AzurePolicyforLinux'
  location: resourceGroup().location
  properties: {
    publisher: 'Microsoft.GuestConfiguration'
    type: 'ConfigurationforLinux'
    typeHandlerVersion: '1.0'
    autoUpgradeMinorVersion: true
    enableAutomaticUpgrade: true
    settings: {}
    protectedSettings: {}
  }
}

Windows 用の拡張機能をデプロイするには、次のようにします。

resource virtualMachine 'Microsoft.Compute/virtualMachines@2021-03-01' existing = {
  name: 'VMName'
}
resource windowsVMGuestConfigExtension 'Microsoft.Compute/virtualMachines/extensions@2020-12-01' = {
  parent: virtualMachine
  name: 'AzurePolicyforWindows'
  location: resourceGroup().location
  properties: {
    publisher: 'Microsoft.GuestConfiguration'
    type: 'ConfigurationforWindows'
    typeHandlerVersion: '1.0'
    autoUpgradeMinorVersion: true
    enableAutomaticUpgrade: true
    settings: {}
    protectedSettings: {}
  }
}

Terraform

Linux 用の拡張機能をデプロイするには、次のようにします。

resource "azurerm_virtual_machine_extension" "gc" {
  name                       = "AzurePolicyforLinux"
  virtual_machine_id         = "myVMID"
  publisher                  = "Microsoft.GuestConfiguration"
  type                       = "ConfigurationforLinux"
  type_handler_version       = "1.0"
  auto_upgrade_minor_version = "true"
}

Windows 用の拡張機能をデプロイするには、次のようにします。

resource "azurerm_virtual_machine_extension" "gc" {
  name                       = "AzurePolicyforWindows"
  virtual_machine_id         = "myVMID"
  publisher                  = "Microsoft.GuestConfiguration"
  type                       = "ConfigurationforWindows"
  type_handler_version       = "1.0"
  auto_upgrade_minor_version = "true"
}

設定

拡張機能に設定や protected-settings プロパティを含める必要はありません。 このような情報はすべて、エージェントによってゲスト構成割り当てリソースから取得されます。 たとえば、ConfigurationUriMode、および ConfigurationSetting プロパティはそれぞれ、VM 拡張機能ではなく、構成ごとに管理されます。

ゲスト構成リソース プロバイダーのエラー コード

拡張機能を有効にすると発生する可能性のあるエラー メッセージの一覧については、以下を参照してください

エラー コード 説明
NoComplianceReport VM からコンプライアンス データが報告されていません。
GCExtensionMissing ゲスト構成拡張機能がありません。
ManagedIdentityMissing マネージド ID がありません
UserIdentityMissing ユーザー割り当て ID がありません。
GCExtensionManagedIdentityMissing ゲスト構成拡張機能とマネージド ID がありません。
GCExtensionUserIdentityMissing ゲスト構成拡張機能とユーザー ID がありません。
GCExtensionIdentityMissing ゲスト構成拡張機能、マネージド ID、ユーザー ID がありません。

次のステップ