Estensione della configurazione macchina di Azure

L'estensione Configurazione macchina esegue operazioni di controllo e configurazione all'interno di VM.

Per controllare i criteri all'interno delle VM, ad esempio le definizioni delle baseline di sicurezza di calcolo di Azure per Linux e Windows, è necessario installare l'estensione Configurazione macchina.

Prerequisiti

Per consentire alla VM di eseguire l'autenticazione al servizio Configurazione macchina, la VM deve avere un'identità gestita assegnata dal sistema. È possibile soddisfare il requisito di identità per la VM impostando la proprietà "type": "SystemAssigned":

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

Sistemi operativi

Il supporto del sistema operativo per l'estensione Configurazione macchina è identico al supporto documentato del sistema operativo per la soluzione end-to-end.

Connettività Internet

L'agente installato dall'estensione Configurazione macchina deve essere in grado di raggiungere i pacchetti di contenuto elencati dalle assegnazioni di configurazione guest e segnalare lo stato al servizio Configurazione macchina. La VM può connettersi usando HTTPS in uscita sulla porta TCP 443 o una connessione fornita tramite networking privata.

Per altre informazioni sulla networking privata, vedere gli articoli seguenti:

Installare l'estensione

È possibile installare e distribuire l'estensione Configurazione macchina direttamente dall'interfaccia della riga di comando di Azure o da PowerShell. I modelli di distribuzione sono disponibili anche per Azure Resource Manager (ARM), Bicep e Terraform. Per informazioni dettagliate sul modello di distribuzione, vedere Microsoft.GuestConfiguration guestConfigurationAssignments.

Nota

Negli esempi di distribuzione seguenti sostituire i valori dei parametri <placeholder> con valori specifici per la configurazione.

Considerazioni sulla distribuzione

Prima di installare e distribuire l'estensione Configurazione macchina, esaminare le considerazioni seguenti.

  • nome istanza. Quando si installa l'estensione Configurazione macchina, il nome dell'istanza dell'estensione deve essere impostato su AzurePolicyforWindows o AzurePolicyforLinux. I criteri di definizione della baseline di sicurezza descritti in precedenza richiedono queste stringhe specifiche.

  • Versioni. Per impostazione predefinita, tutte le distribuzioni vengono aggiornate alla versione più recente. Il valore predefinito della proprietà autoUpgradeMinorVersion è true, a meno che non sia specificato differentemente. Questa funzionalità consente di risolvere i problemi relativi all'aggiornamento del codice quando vengono rilasciate nuove versioni dell'estensione Configurazione macchina.

  • Aggiornamento automatico. L'estensione Configurazione macchina supporta la proprietà enableAutomaticUpgrade. Quando questa proprietà è impostata su true, Azure esegue automaticamente l'aggiornamento alla versione più recente dell'estensione man mano che le versioni future diventano disponibili. Per altre informazioni, vedere Aggiornamento automatico delle estensioni per VM e set di scalabilità di VM in Azure.

  • Criteri di Azure. Per distribuire la versione più recente dell'estensione Configurazione macchina su larga scala, inclusi i requisiti di identità, seguire la procedura descritta in Creare un'assegnazione di criteri per identificare le risorse non conformi. Creare l'assegnazione seguente con Criteri di Azure:

  • Altre proprietà. Non è necessario includere impostazioni o proprietà delle impostazioni protette nell'estensione Configurazione macchina. L'agente recupera questa classe di informazioni dalle risorse di Assegnazione della configurazione guest dell'API REST di Azure. Ad esempio, le proprietà ConfigurationUri, Modee ConfigurationSetting sono gestite per ogni configurazione anziché nell'estensione della VM.

Interfaccia della riga di comando di Azure

Per distribuire l'estensione per Linux:

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

Per distribuire l'estensione per 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

Per distribuire l'estensione per Linux:

Set-AzVMExtension -Publisher 'Microsoft.GuestConfiguration' -ExtensionType 'ConfigurationForLinux' -Name 'AzurePolicyforLinux' -TypeHandlerVersion 1.0 -ResourceGroupName '<myResourceGroup>' -Location '<myLocation>' -VMName '<myVM>' -EnableAutomaticUpgrade $true

Per distribuire l'estensione per Windows:

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

Modello ARM

Per distribuire l'estensione per 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": {}
  }
}

Per distribuire l'estensione per 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": {}
  }
}

Modello Bicep

Per distribuire l'estensione per 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: {}
  }
}

Per distribuire l'estensione per 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: {}
  }
}

Modello Terraform

Per distribuire l'estensione per 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"
}

Per distribuire l'estensione per 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"
}

Messaggi di errore

Nella tabella seguente sono elencati i possibili messaggi di errore correlati all'abilitazione dell'estensione Configurazione guest.

Codice errore Descrizione
NoComplianceReport La VM non ha segnalato i dati di conformità.
GCExtensionMissing Manca l'estensione Configurazione macchina (configurazione guest).
ManagedIdentityMissing Manca l'identità gestita.
UserIdentityMissing Identità assegnata dall'utente mancante.
GCExtensionManagedIdentityMissing Manca l'estensione Configurazione macchina (configurazione guest) e l'identità gestita.
GCExtensionUserIdentityMissing Manca l'estensione Configurazione macchina (configurazione guest) e l'identità assegnata dall'utente.
GCExtensionIdentityMissing Manca l'estensione Configurazione macchina (configurazione guest), l'identità gestita e l'identità assegnata dall'utente.

Passaggi successivi