Extensão de configuração de máquina do Azure Automanage

A extensão de configuração de máquina é um recurso do Azure Automanage que executa operações de auditoria e configuração dentro de máquinas virtuais (VMs).

Para verificar políticas dentro de VMs, como definições de linha de base de segurança de computação do Azure para Linux e Windows, a extensão de configuração da máquina deve ser instalada.

Pré-requisitos

Para permitir que sua VM se autentique no serviço de configuração da máquina, sua VM deve ter uma identidade gerenciada atribuída ao sistema. Você pode satisfazer o requisito de identidade para sua VM definindo a "type": "SystemAssigned" propriedade:

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

Sistemas operativos

O suporte do sistema operacional para a extensão de configuração da máquina é o mesmo que o suporte documentado do sistema operacional para a solução de ponta a ponta.

Ligação à Internet

O agente instalado pela extensão de configuração da máquina deve ser capaz de alcançar pacotes de conteúdo listados por atribuições de configuração de convidado e relatar o status para o serviço de configuração da máquina. A VM pode se conectar usando HTTPS de saída pela porta TCP 443 ou uma conexão fornecida por meio de rede privada.

Para saber mais sobre redes privadas, consulte os seguintes artigos:

Instalar a extensão

Você pode instalar e implantar a extensão de configuração da máquina diretamente da CLI do Azure ou do PowerShell. Os modelos de implantação também estão disponíveis para o Azure Resource Manager (ARM), Bíceps e Terraform. Para obter detalhes do modelo de implantação, consulte Microsoft.GuestConfiguration guestConfigurationAssignments.

Nota

Nos exemplos de implantação a seguir, substitua <placeholder> valores de parâmetro por valores específicos para sua configuração.

Considerações sobre implementação

Antes de instalar e implantar a extensão de configuração da máquina, analise as considerações a seguir.

  • Nome da instância. Quando você instala a extensão de configuração da máquina, o nome da instância da extensão deve ser definido como AzurePolicyforWindows ou AzurePolicyforLinux. As políticas de definição de linha de base de segurança descritas anteriormente exigem essas cadeias de caracteres específicas.

  • Versões. Por padrão, todas as implantações são atualizadas para a versão mais recente. O valor da propriedade assume como padrão, autoUpgradeMinorVersion a true menos que especificado de outra forma. Esse recurso ajuda a aliviar as preocupações sobre a atualização do código quando novas versões da extensão de configuração da máquina são lançadas.

  • Atualização automática. A extensão de configuração da máquina suporta a enableAutomaticUpgrade propriedade. Quando essa propriedade é definida como true, o Azure atualiza automaticamente para a versão mais recente da extensão à medida que versões futuras ficam disponíveis. Para obter mais informações, consulte Atualização automática de extensão para VMs e conjuntos de escala de máquina virtual no Azure.

  • Política do Azure. Para implantar a versão mais recente da extensão de configuração da máquina em escala, incluindo requisitos de identidade, siga as etapas em Criar uma atribuição de política para identificar recursos não compatíveis. Crie a seguinte atribuição com a Política do Azure:

  • Outros imóveis. Não é necessário incluir nenhuma configuração ou propriedades de configurações protegidas na extensão de configuração da máquina. O agente recupera essa classe de informações dos recursos de atribuição de Configuração de Convidado da API REST do Azure. Por exemplo, as ConfigurationUripropriedades , Modee e ConfigurationSetting são gerenciadas por configuração e não na extensão da VM.

CLI do Azure

Para implantar a extensão para Linux:

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

Para implantar a extensão para 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

Para implantar a extensão para Linux:

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

Para implantar a extensão para Windows:

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

Modelo ARM

Para implantar a extensão para 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": {}
  }
}

Para implantar a extensão para 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": {}
  }
}

Modelo de bíceps

Para implantar a extensão para 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: {}
  }
}

Para implantar a extensão para 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: {}
  }
}

Modelo Terraform

Para implantar a extensão para 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"
}

Para implantar a extensão para 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"
}

Mensagens de erro

A tabela a seguir lista possíveis mensagens de erro relacionadas à habilitação da extensão Configuração de Convidado.

Código de erro Description
NoComplianceReport A VM não relatou os dados de conformidade.
GCExtensionMissing A extensão de configuração da máquina (configuração de convidado) está ausente.
ManagedIdentityMissing A identidade gerenciada está ausente.
UserIdentityMissing A identidade atribuída pelo usuário está ausente.
GCExtensionManagedIdentityMissing A extensão de configuração da máquina (configuração de convidado) e a identidade gerenciada estão ausentes.
GCExtensionUserIdentityMissing A extensão de configuração da máquina (configuração de convidado) e a identidade atribuída pelo usuário estão ausentes.
GCExtensionIdentityMissing A extensão de configuração da máquina (configuração de convidado), a identidade gerenciada e a identidade atribuída pelo usuário estão ausentes.

Próximos passos