Extensão de Configuração de Máquina do Azure

A extensão configuração de máquina executa operações de auditoria e configuração dentro de VMs (máquinas virtuais).

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 de Máquina deve ser instalada.

Pré-requisitos

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

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

Sistemas operacionais

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

Conectividade com a Internet

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

Para saber mais sobre rede privada, confira os artigos a seguir:

Instalar a extensão

Você pode instalar e implantar a extensão de Configuração de 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), Bicep e Terraform. Para obter detalhes do modelo de implantação, consulte Microsoft.GuestConfiguration guestConfigurationAssignments.

Observação

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

Considerações de implantação

Antes de instalar e implantar a extensão de Configuração de Máquina, examine as considerações a seguir.

  • Nome da instância. Quando você instala a extensão de Configuração de 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 autoUpgradeMinorVersion assume true como padrão, a menos que seja especificado de outra forma. Esse recurso ajuda a aliviar as preocupações com a atualização do código quando novas versões da extensão de Configuração de Máquina são lançadas.

  • Atualização automática. A extensão de Configuração de Máquina dá suporte à propriedade enableAutomaticUpgrade. Quando essa propriedade é definida como true, o Azure atualiza automaticamente para a versão mais recente da extensão à medida que versões futuras se tornarem disponíveis. Para obter mais informações, confira a Atualização automática de extensão para VMs e Conjuntos de Dimensionamento de Máquinas Virtuais no Azure.

  • Azure Policy. Para implantar a versão mais recente da extensão de Configuração de 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 o Azure Policy:

  • Outras propriedades. Não é preciso incluir configurações ou propriedades de configurações protegidas na extensão de Configuração de 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 propriedades ConfigurationUri, Modee ConfigurationSetting são gerenciadas por configuração, não na extensão de 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 de 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 do Bicep

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 do 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 de Configuração de Convidado.

Código do erro Descrição
NoComplianceReport A VM não informou os dados de conformidade.
GCExtensionMissing A extensão de Configuração de 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 de Máquina (configuração de convidado) e a identidade gerenciada estão ausentes.
GCExtensionUserIdentityMissing A extensão de Configuração de Máquina (configuração de convidado) e a identidade atribuída pelo usuário estão ausentes.
GCExtensionIdentityMissing A extensão de Configuração de Máquina (configuração de convidado), a identidade gerenciada e a identidade atribuída pelo usuário estão ausentes.

Próximas etapas