ゲスト構成拡張機能の概要
ゲスト構成拡張機能は、仮想マシン内で監査および構成操作を実行する 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 プロパティを含める必要はありません。 このような情報はすべて、エージェントによってゲスト構成割り当てリソースから取得されます。 たとえば、ConfigurationUri、Mode、および ConfigurationSetting プロパティはそれぞれ、VM 拡張機能ではなく、構成ごとに管理されます。
ゲスト構成リソース プロバイダーのエラー コード
拡張機能を有効にすると発生する可能性のあるエラー メッセージの一覧については、以下を参照してください
エラー コード | 説明 |
---|---|
NoComplianceReport | VM からコンプライアンス データが報告されていません。 |
GCExtensionMissing | ゲスト構成拡張機能がありません。 |
ManagedIdentityMissing | マネージド ID がありません |
UserIdentityMissing | ユーザー割り当て ID がありません。 |
GCExtensionManagedIdentityMissing | ゲスト構成拡張機能とマネージド ID がありません。 |
GCExtensionUserIdentityMissing | ゲスト構成拡張機能とユーザー ID がありません。 |
GCExtensionIdentityMissing | ゲスト構成拡張機能、マネージド ID、ユーザー ID がありません。 |
次のステップ
- Azure Policy のゲスト構成の詳細については、「Azure Policy のゲストの構成の理解」を参照してください
- Linux エージェントと拡張機能のしくみの詳細については、Linux 用の Azure VM 拡張機能とその機能に関する記事を参照してください。
- Windows ゲスト エージェントと拡張機能のしくみの詳細については、Windows 用の Azure VM 拡張機能とその機能に関する記事を参照してください。
- Windows ゲスト エージェントをインストールする場合は、Azure Windows 仮想マシン エージェントの概要に関するページをご覧ください。
- Linux エージェントをインストールする場合は、Azure Linux 仮想マシン エージェントの概要に関するページをご覧ください。