Visão geral da extensão de configuração do hóspede

A extensão de Configuração do Hóspede é um componente de Azure Policy que realiza operações de auditoria e configuração dentro de máquinas virtuais. Políticas como definições de linha de base de segurança para Linux e Windows não podem verificar as definições dentro das máquinas até que a extensão seja instalada.

Pré-requisitos

Para que a máquina autentica o serviço de Configuração do Convidado, a máquina deve ter uma identidade gerida atribuída ao sistema. O requisito de identidade numa máquina virtual é cumprido se a seguinte propriedade estiver definida.

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

Sistemas Operativos

O suporte para a extensão de Configuração do Convidado é o mesmo que o suporte do sistema operativo documentado para a solução final a fim.

Conectividade Internet

O agente instalado pela extensão de Configuração do Hóspede deve ser capaz de alcançar pacotes de conteúdo listados por atribuições de Configuração de Convidados e reportar o estado ao serviço de Configuração de Convidados. A máquina pode ligar-se utilizando https de saída sobre a porta TCP 443, ou se for fornecida uma ligação através de uma rede privada. Para saber mais sobre networking privado, consulte os seguintes artigos:

Como posso instalar a extensão?

O nome da extensão deve ser definido como "AzurePolicyforWindows" ou "AzurePolicyforLinux", porque as políticas acima referidas requerem estas cordas específicas.

Por predefinição, todas as implementações atualizam para a versão mais recente. O valor da propriedade autoUpgradeMinorVersion é "verdadeiro" a menos que seja especificado de outra forma. Não precisa de se preocupar em atualizar o seu código quando forem lançadas novas versões da extensão.

Atualização automática

A extensão de configuração do hóspede suporta a propriedade enableAutomaticUpgrade. Quando este imóvel estiver definido para true, o Azure irá automaticamente atualizar para a versão mais recente da extensão à medida que as futuras versões se tornarem disponíveis. Para mais informações, consulte a página Atualização automática de extensão para VMs e conjuntos de escala em Azure

Azure Policy

Para implementar a versão mais recente da extensão em escala, incluindo requisitos de identidade, atribua o Azure Policy:

Implementar pré-requisitos para ativar as políticas de configuração de hóspedes em máquinas virtuais.

CLI do Azure

Para implementar 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 implementar a extensão para o 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 implementar a extensão para Linux:

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

Para implementar a extensão para o Windows:

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

Modelo do Resource Manager

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

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

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

Definições

Não há necessidade de incluir quaisquer configurações ou propriedades de definições protegidas na extensão. Todas essas informações são obtidas pelo agente a partir dos recursos de atribuição de Configuração de Hóspedes . Por exemplo, as propriedades ConfigurationUri, Mode e ConfigurationSetting são geridas por configuração e não na extensão VM.

Códigos de erro do fornecedor de recursos de configuração do hóspede

Consulte abaixo uma lista das possíveis mensagens de erro ao ativar a extensão

Código de Erro Description
NoComplianceReport A VM não reportou os dados de conformidade.
GCExtensionMissing Falta a extensão de configuração do hóspede.
ManagedIdentityMissing Falta identidade gerida.
UserIdentityMissing Falta a identidade do utilizador.
GCExtensionManagedIdentityMissing Falta extensão de configuração do hóspede e identidade gerida.
GCExtensionUserIdentityMissing Falta a extensão de configuração do hóspede e a identidade do utilizador.
GCExtensionIdentityMissing A extensão de configuração do hóspede, a identidade gerida e a identidade do utilizador estão em falta.

Passos seguintes