Descripción de los recursos de asignación de configuraciones de máquina

Cuando se asigna una instancia de Azure Policy, si se encuentra en la categoría Guest Configuration, se incluyen metadatos para describir una asignación de invitado.

Hay disponible un tutorial de vídeo de este documento.

Puede imaginarse una asignación de invitado como un vínculo entre una máquina y un escenario de Azure Policy. Por ejemplo, el fragmento de código siguiente asocia la configuración de línea de base de Windows de Azure con la versión mínima 1.0.0 a cualquier máquina en el ámbito de la directiva.

"metadata": {
    "category": "Guest Configuration",
    "guestConfiguration": {
        "name": "AzureWindowsBaseline",
        "version": "1.*"
    }
  //additional metadata properties exist
}

Uso de asignaciones de configuración de máquina por parte de Azure Policy

El servicio de configuración de máquina usa la información de los metadatos para crear automáticamente un recurso de auditoría para las definiciones con los efectos de directiva AuditIfNotExists o DeployIfNotExists. El tipo de recurso es Microsoft.GuestConfiguration/guestConfigurationAssignments. Azure Policy usa la propiedad complianceStatus del recurso de asignación de invitado para comunicar el estado de cumplimiento. Para más información, vea Obtención de datos de cumplimiento.

Eliminación de asignaciones de invitado de Azure Policy

Cuando se elimina una asignación de Azure Policy, si la directiva ha creado una asignación de configuración de máquina, también se elimina esta.

Cuando se elimina una asignación de Azure Policy desde una iniciativa, debe eliminar manualmente todas las asignaciones de configuración de la máquina que creó la directiva. Para ello, vaya a la página asignaciones de invitados en Azure Portal y elimine la asignación allí.

Creación manual de asignaciones de configuración de máquina

Puede crear los recursos de asignación de invitado de Azure Resource Manager mediante Azure Policy o cualquier SDK de cliente.

Una plantilla de implementación de ejemplo:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [
    {
      "apiVersion": "2021-01-25",
      "type": "Microsoft.Compute/virtualMachines/providers/guestConfigurationAssignments",
      "name": "myMachine/Microsoft.GuestConfiguration/myConfig",
      "location": "westus2",
      "properties": {
        "guestConfiguration": {
          "name": "myConfig",
          "contentUri": "https://mystorageaccount.blob.core.windows.net/mystoragecontainer/myConfig.zip?sv=SASTOKEN",
          "contentHash": "SHA256HASH",
          "version": "1.0.0",
          "assignmentType": "ApplyAndMonitor",
          "configurationParameter": {}
        }
      }
    }
  ]
}

En la tabla siguiente se describe cada propiedad de los recursos de asignación de invitado.

Propiedad Descripción
name Nombre de la configuración dentro del archivo MOF del paquete de contenido.
contentUri Ruta de acceso del URI HTTPS al paquete de contenido (.zip).
contentHash Valor hash SHA256 del paquete de contenido, que se usa para comprobar que no ha cambiado.
version Versión del paquete de contenido. Solo se usa para los paquetes integrados, no para los paquetes de contenido personalizados.
assignmentType Comportamiento de la asignación. Valores permitidos: Audit, ApplyandMonitor y ApplyandAutoCorrect.
configurationParameter Lista de tipo de recurso, nombre y valor de DSC del archivo MOF del paquete de contenido que se va a invalidar después de descargarse en la máquina.

Eliminación de asignaciones de configuración de máquina creadas manualmente

Tiene que eliminar manualmente las asignaciones de configuración de máquina creadas por medio de cualquier método manual (como una implementación de plantilla de Azure Resource Manager). La eliminación del recurso primario (máquina virtual o máquina habilitada para Arc) también elimina la asignación de configuración de máquina.

Para eliminar manualmente una asignación de configuración de máquina, use el ejemplo siguiente. Asegúrese de reemplazar todas las cadenas de ejemplo, indicadas mediante corchetes <>.

# First get details about the machine configuration assignment
$resourceDetails = @{
  ResourceGroupName = '<resource-group-name>'
  ResourceType      = 'Microsoft.Compute/virtualMachines/providers/guestConfigurationAssignments/'
  ResourceName      = '<vm-name>/Microsoft.GuestConfiguration'
  ApiVersion        = '2020-06-25'
}
$guestAssignment = Get-AzResource @resourceDetails

# Review details of the machine configuration assignment
$guestAssignment

# After reviewing properties of $guestAssignment to confirm
$guestAssignment | Remove-AzResource

Pasos siguientes