Gestire e applicare la conformità per le applicazioni di macchine virtuali Azure usando Azure Policy

Azure vm Applications consentono di creare pacchetti, versioni e distribuire software a Azure Virtual Machines (VM) e Virtual Machine Scale Sets da un Azure Compute Gallery.

L'uso di Azure Policy con le applicazioni vm consente ai clienti e ai team di amministrazione di:

  • Monitorare la presenza delle applicazioni VM necessarie nelle Macchine Virtuali e nei Set di Scalabilità delle Macchine Virtuali.
  • Inserire le applicazioni VM necessarie in tutti i Virtual Machines e Virtual Machine Scale Sets.
  • Applicare procedure consigliate e di configurazione coerenti in tutti i Virtual Machines e Virtual Machine Scale Sets per migliorare l'affidabilità e la sicurezza.

Questa guida illustra come:

  • Gestire l'applicazione VM necessaria per il monitoraggio della conformità.
  • Applicare l'applicazione vm necessaria per garantire coerenza e sicurezza.

Prerequisiti

  • Una Azure Compute Gallery con l'applicazione VM pubblicata e le versioni da imporre. Consulta creare e gestire applicazioni di VM.

    • Verificare che la versione venga replicata in tutte le aree in cui è necessaria la presenza dell'applicazione.
    • Assicurarsi che la raccolta sia condivisa a tutte le sottoscrizioni che richiedono l'accesso all'Applicazione VM.
  • Autorizzazioni :

    • Contributore ai criteri per creare/assegnare criteri. Vedere Struttura e assegnazioni delle definizioni dei criteri.

Configurare il monitoraggio della conformità per gestire le applicazioni di macchine virtuali necessarie

Azure Policy con effetto audit può essere usato per monitorare la presenza di applicazioni VM specifiche nelle macchine virtuali Azure e nei Virtual Machine Scale Sets. I team di amministrazione possono usare questa politica per

  • Configurare i monitor di conformità per le applicazioni delle macchine virtuali (visualizzare macchine virtuali e set di scalabilità delle macchine virtuali conformi e non conformi)
  • Misurazione dello stato di implementazione del software in pacchetto come applicazione vm.

1. Creare una definizione di criteri personalizzata

Creare un nuovo criterio personalizzato usando la definizione seguente. Questo criterio controlla se sono presenti applicazioni di macchine virtuali specifiche in Virtual Machines e Virtual Machine Scale Sets e segnala lo stato di conformità.

  • Policy

Questo criterio monitora la conformità di tutte le macchine virtuali e degli insiemi di scalabilità di macchine virtuali su Linux e Windows. Le app Linux nelle macchine virtuali Windows e nelle app Windows in macchine virtuali Linux vengono considerate come risorse conformi.

{
    "mode": "Indexed",
    "policyRule": {
        "if": {
            "anyOf": [
                {
                    "allOf": [
                        { "field": "type", "equals": "Microsoft.Compute/virtualMachines" },
                        {"field": "Microsoft.Compute/virtualMachines/storageProfile.osDisk.osType", "equals": "[parameters('osType')]" },
                        {
                            "count": {
                                "field": "Microsoft.Compute/virtualMachines/applicationProfile.galleryApplications[*]",
                                "where": {
                                    "allOf": [
                                        {
                                            "field": "Microsoft.Compute/virtualMachines/applicationProfile.galleryApplications[*].packageReferenceId",
                                            "contains": "[concat('/galleries/', parameters('galleryName'), '/applications/', parameters('applicationName'), '/')]"
                                        }
                                    ]
                                }
                            },
                            "equals": 0
                        }
                    ]
                },
                {
                    "allOf": [
                        { "field": "type", "equals": "Microsoft.Compute/virtualMachineScaleSets" },
                        {"field": "Microsoft.Compute/virtualMachineScaleSets/virtualMachineProfile.storageProfile.osDisk.osType", "equals": "[parameters('osType')]" },
                        {
                            "count": {
                                "field": "Microsoft.Compute/virtualMachineScaleSets/virtualMachineProfile.applicationProfile.galleryApplications[*]",
                                "where": {
                                    "allOf": [
                                        {
                                            "field": "Microsoft.Compute/virtualMachineScaleSets/virtualMachineProfile.applicationProfile.galleryApplications[*].packageReferenceId",
                                            "contains": "[concat('/galleries/', parameters('galleryName'), '/applications/', parameters('applicationName'), '/')]"
                                        }
                                    ]
                                }
                            },
                            "equals": 0
                        }
                    ]
                }
            ]
        },
        "then": { "effect": "audit" }
    },
    "parameters": {
        "galleryName": {
            "type": "String",
            "metadata": { "description": "Name of the Azure Compute Gallery containing the VM Application." }
        },
        "applicationName": {
            "type": "String",
            "metadata": { "description": "Name of the VM Application to audit for presence." }
        },
        "osType": {
            "type": "String",
            "allowedValues": [ "Windows", "Linux" ],
            "metadata": { "description": "OS type of the VM Application (Windows or Linux)." }
        }
    }
}

2. Assegnare i criteri e visualizzare la conformità

Assegnare i criteri appena creati per avviare il monitoraggio dell'applicazione vm e generare il punteggio di conformità. Tutti i Virtual Machines e i Virtual Machine Scale Sets all'interno dell'ambito assegnato vengono monitorati per la conformità.

Creare assegnazioni separate per ogni applicazione di macchina virtuale per il monitoraggio granulare e accurato.

Una volta assegnato il criterio, tutte le risorse esistenti vengono valutate e visualizzate nel monitoraggio della conformità. Le risorse non conformi non includono l'Applicazione VM definita nei criteri. Le risorse senza vengono conteggiate anche come non conformi. La visualizzazione delle risorse appena create o aggiornate potrebbe richiedere alcuni minuti nei cicli di valutazione.

Screenshot che mostra la visualizzazione della conformità di Azure Policy che elenca le macchine virtuali e i Virtual Machine Scale Sets controllati per la presenza richiesta dell'applicazione VM.

Rettifiche comuni

  • Controlla più applicazioni obbligatorie: creare un criterio separato (uno per applicazione) o aggiornare i criteri aggiungendo altre applicazioni con il parametro .

  • Blocca la creazione di VM senza le applicazioni necessarie: Cambiare l'effetto a deny per prevenire creazioni non conformi.

  • Limitare l'ambito del criterio a Virtual Machines o Virtual Machine Scale Sets: rimuovere il ramo inutilizzato da anyOf all'interno di policyRule.

  • Limitare l'ambito dei criteri in base al tipo di sistema operativo: controlla all'interno per filtrare in base al sistema operativo Windows/Linux:

    { "field": "Microsoft.Compute/virtualMachines/storageProfile.osDisk.osType", "equals": "[parameters('osType')]" }
    
  • Limitare l'ambito dei criteri in base all'immagine del sistema operativo: controllare e all'interno di per filtrare in base all'immagine:

    { "field": "Microsoft.Compute/virtualMachines/storageProfile.imageReference.offer", "equals": "[parameters('imageOffer')]" },
    { "field": "Microsoft.Compute/virtualMachines/storageProfile.imageReference.sku", "equals": "[parameters('imageSku')]" }
    

Inserire applicazioni per macchine virtuali nella macchina virtuale e nei gruppi di scalabilità di macchine virtuali.

Azure Policy con effetto modify inietta le applicazioni VM durante la creazione di nuove Macchine Virtuali e dei Virtual Machine Scale Sets. Le attività di correzione possono essere usate per modificare le risorse esistenti e inserire l'applicazione vm.

Prerequisiti

  • Identità gestita nell'assegnazione dei criteri con il ruolo Collaboratore macchina virtuale, in modo che la correzione possa modificare le risorse. Vedere i requisiti di identità per la correzione.

1. Creare una definizione di criteri personalizzata

Creare un nuovo criterio personalizzato usando la definizione dei criteri. Questo criterio verifica la presenza di applicazioni vm durante la creazione di Virtual Machines o Virtual Machine Scale Sets e aggiunge l'applicazione vm, se non esiste. Per modificare più tipi di risorse (macchina virtuale e Virtual Machine Scale Sets), è consigliabile creare criteri diversi per tipo di risorsa.

{
    "displayName": "Inject VM Application into single instance VMs",
    "policyType": "Custom",
    "mode": "Indexed",
    "description": "Appends a VM Application reference to applicationProfile for single instance VMs if the application is not already present. Filters by OS type to prevent cross-platform injection.",
    "parameters": {
      "subscriptionId": {
        "type": "String",
        "metadata": {
          "description": "Subscription ID where the Compute Gallery resides."
        }
      },
      "resourceGroup": {
        "type": "String",
        "metadata": {
          "description": "Resource group of the Compute Gallery."
        }
      },
      "galleryName": {
        "type": "String",
        "metadata": {
          "description": "Name of the Compute Gallery."
        }
      },
      "applicationName": {
        "type": "String",
        "metadata": {
          "description": "VM Application name."
        }
      },
      "applicationVersion": {
        "type": "String",
        "defaultValue": "latest",
        "metadata": {
          "description": "VM Application version. Defaults to latest."
        }
      },
      "osType": {
        "type": "String",
        "allowedValues": [
          "Windows",
          "Linux"
        ],
        "metadata": {
          "description": "Target OS type. Ensures the application is only injected onto VMs with a matching OS."
        }
      }
    },
    "policyRule": {
      "if": {
        "allOf": [
          {
            "field": "type",
            "equals": "Microsoft.Compute/virtualMachines"
          },
          {
            "field": "Microsoft.Compute/virtualMachines/storageProfile.osDisk.osType",
            "equals": "[parameters('osType')]"
          },
          {
            "count": {
              "field": "Microsoft.Compute/virtualMachines/applicationProfile.galleryApplications[*]",
              "where": {
                "field": "Microsoft.Compute/virtualMachines/applicationProfile.galleryApplications[*].packageReferenceId",
                "contains": "[concat('/galleries/', parameters('galleryName'), '/applications/', parameters('applicationName'), '/')]"
              }
            },
            "equals": 0
          }
        ]
      },
      "then": {
        "effect": "modify",
        "details": {
          "roleDefinitionIds": [
            "/providers/Microsoft.Authorization/roleDefinitions/9980e02c-c2be-4d73-94e8-173b1dc7cf3c"
          ],
          "operations": [
            {
              "operation": "add",
              "field": "Microsoft.Compute/virtualMachines/applicationProfile.galleryApplications",
              "value": {
                "packageReferenceId": "[concat('/subscriptions/', parameters('subscriptionId'), '/resourceGroups/', parameters('resourceGroup'), '/providers/Microsoft.Compute/galleries/', parameters('galleryName'), '/applications/', parameters('applicationName'), '/versions/', parameters('applicationVersion'))]",
                "order": 1,
                "treatFailureAsDeploymentFailure": true
              }
            }
          ]
        }
      }
    }
}

2. Assegnare i criteri

Assegna la nuova politica creata per avviare la generazione del punteggio di conformità. Tutti i Virtual Machines e i Virtual Machine Scale Sets all'interno dell'ambito assegnato vengono monitorati per la conformità. Una volta assegnato il criterio, tutte le risorse esistenti vengono valutate e visualizzate nel monitoraggio della conformità.

La creazione di nuove risorse di macchine virtuali e set di scalabilità delle macchine virtuali attiva questo criterio e modifica il profilo applicativo della risorsa per integrare l'applicazione.

3. Creare un'attività di correzione e modificare le risorse esistenti

Per modificare le risorse esistenti, creare una nuova attività di correzione.

Annotazioni

Correggere gradualmente le risorse non conformi per una maggiore disponibilità e resilienza degli errori. Creare più attività di correzione, ognuna con ambito in una o più aree.

Screenshot dell'esperienza di Azure Portal che illustra come creare una nuova attività di correzione.

Rettifiche comuni

Gli esempi seguenti mostrano altre condizioni che è possibile aggiungere al blocco all'interno per restringere l'ambito dei criteri.

  • Limitare l'ambito dei criteri in base all'immagine del sistema operativo: Filtrare in base a un'offerta di immagine specifica e uno SKU:

    { "field": "Microsoft.Compute/virtualMachines/storageProfile.imageReference.offer", "equals": "[parameters('imageOffer')]" },
    { "field": "Microsoft.Compute/virtualMachines/storageProfile.imageReference.sku", "equals": "[parameters('imageSku')]" }
    
  • Limitare l'ambito dei criteri per regione: Destinare specifiche regioni Azure:

    { "field": "location", "in": "[parameters('allowedLocations')]" }
    
  • Limitare l'ambito dei criteri in base al gruppo di risorse o alla sottoscrizione: per ridurre l'ambito per la correzione, assegnare i criteri a un gruppo di risorse o a una sottoscrizione specifica. Usare l'ambito di assegnazione quando si assegnano i criteri anziché modificare la definizione dei criteri. Per un controllo più granulare, usare le esclusioni per omettere gruppi di risorse specifici dall'assegnazione.

Passaggi successivi