Condividi tramite


Reazione agli eventi di modifica dello stato di Criteri di Azure

Criteri di Azure eventi consentono alle applicazioni di reagire alle modifiche dello stato. Questa integrazione viene eseguita senza la necessità di codice complicato o di servizi di polling costosi e inefficienti. Gli eventi vengono invece inviati tramite Griglia di eventi di Azure ai sottoscrittori, ad esempio Funzioni di Azure, App per la logica di Azure o anche al listener HTTP personalizzato. Criticamente, si paga solo per ciò che si usa.

Criteri di Azure gli eventi vengono inviati al Griglia di eventi di Azure, che fornisce servizi di recapito affidabili alle applicazioni tramite criteri avanzati di ripetizione dei tentativi e recapito di messaggi non recapitabili. Griglia di eventi si occupa del routing, del filtro e del multicast degli eventi alle destinazioni tramite sottoscrizioni di Griglia di eventi. Per altre informazioni, vedere Recapito e ripetizione dei messaggi di Griglia di eventi.

Nota

Criteri di Azure gli eventi di modifica dello stato vengono inviati a Griglia di eventi al termine della valutazione delle risorse da parte di un trigger di valutazione.

Le notifiche di Griglia di eventi per le modifiche dello stato di conformità delle risorse possono richiedere fino a 20 minuti.

Vantaggi di Griglia di eventi

Griglia di eventi offre alcuni vantaggi per i clienti e i servizi nell'ecosistema di Azure:

  • Automazione: per rimanere aggiornati con l'ambiente dei criteri, Griglia di eventi offre un meccanismo automatizzato per generare avvisi e attivare attività a seconda degli stati di conformità.
  • Recapito durevole: per consentire ai servizi e alle applicazioni utente di rispondere in tempo reale agli eventi di conformità dei criteri, Griglia di eventi cerca di offrire eventi di criteri con latenza minima. Griglia di eventi ritenta la trasmissione di un evento se l'endpoint di un sottoscrittore non riesce a confermarne la ricezione o, in caso contrario, in base a un criterio di ripetizione dei tentativi predeterminato.
  • Producer di eventi personalizzati: i producer di eventi e i consumer di Griglia di eventi non devono essere Azure o servizi Microsoft. Le applicazioni esterne possono ricevere un avviso, mostrare la creazione di un'attività di correzione o raccogliere messaggi su chi risponde alla modifica dello stato. Per un'esercitazione completa, vedere Indirizzare gli eventi di modifica dello stato dei criteri a Griglia di eventi con l'interfaccia della riga di comando di Azure.

Quando si usa Griglia di eventi sono presenti due entità principali:

  • Eventi: questi eventi possono essere qualsiasi elemento a cui un utente potrebbe voler reagire per una risorsa di Azure. Ad esempio, se viene creato, modificato ed eliminato uno stato di conformità dei criteri per una risorsa, ad esempio una macchina virtuale o account di archiviazione.
  • Sottoscrizioni di Griglia di eventi: queste sottoscrizioni di eventi sono entità configurate dall'utente che indirizzano il set corretto di eventi da un server di pubblicazione a un sottoscrittore. Le sottoscrizioni di eventi possono filtrare gli eventi in base al percorso della risorsa da cui proviene l'evento e al tipo di evento. Inoltre, le sottoscrizioni di eventi possono anche filtrare in base all'ambito tra sottoscrizione di Azure e gruppo di gestione.

Uno scenario di evento Criteri di Azure comune viene monitorato quando lo stato di conformità di una risorsa cambia durante la valutazione dei criteri. L'architettura basata su eventi è un modo efficiente per reagire a queste modifiche e supporta la reazione basata su eventi ai cambiamenti dello stato di conformità.

Un altro scenario consiste nell'attivare automaticamente le attività di correzione senza selezionare manualmente l'attività crea correzione nella pagina dei criteri. È possibile risolvere i controlli dello stato di conformità e delle risorse attualmente non conformi in Griglia di eventi. Altre informazioni sulla struttura di correzione. La correzione richiede un'identità gestita e i criteri devono essere attivatimodify.deployIfNotExists Altre informazioni sui tipi di effetto.

Griglia di eventi è utile come sistema di controllo per archiviare le modifiche dello stato e comprendere la causa della mancata conformità nel tempo. Gli scenari per Griglia di eventi sono infiniti e in base alla motivazione, Griglia di eventi è configurabile.

Screenshot del modello di Griglia di eventi di origini e gestori.

Tipi di evento disponibili

Criteri di Azure genera i tipi di evento seguenti:

Tipo di evento Descrizione
Microsoft.PolicyInsights.PolicyStateCreated Generato quando viene creato uno stato di conformità dei criteri.
Microsoft.PolicyInsights.PolicyStateChanged Generato quando viene modificato uno stato di conformità dei criteri.
Microsoft.PolicyInsights.PolicyStateDeleted Generato quando viene eliminato uno stato di conformità dei criteri.

Proprietà dell'evento

Un evento presenta i seguenti dati di primo livello:

Proprietà Type Descrzione
topic stringa Percorso completo della risorsa all'origine evento. Questo campo non è scrivibile. Questo valore viene specificato da Griglia di eventi.
subject string ID completo della risorsa per cui cambia lo stato di conformità, inclusi il nome della risorsa e il tipo di risorsa. Usa il formato , /subscriptions/<SubscriptionID>/resourceGroups/<ResourceGroup>/providers/<ProviderNamespace>/<ResourceType>/<ResourceName>
eventType string Uno dei tipi di evento registrati per l'origine evento.
eventTime string Ora di generazione dell'evento in base all'ora UTC del provider.
id string Identificatore univoco per l'evento.
data oggetto Criteri di Azure dati dell'evento.
dataVersion string Versione dello schema dell'oggetto dati. La versione dello schema è definita dall'origine di pubblicazione.
metadataVersion string Versione dello schema dei metadati dell'evento. Lo schema delle proprietà di primo livello è definito da Griglia di eventi. Questo valore viene specificato da Griglia di eventi.

Di seguito sono elencate le proprietà dell'oggetto dati:

Proprietà Type Descrzione
timestamp stringa Ora (in formato UTC) in cui la risorsa è stata analizzata da Criteri di Azure. Per gli eventi di ordinamento, utilizzare questa proprietà anziché le proprietà di primo livello eventTime o time .
policyAssignmentId string ID risorsa dell'assegnazione dei criteri.
policyDefinitionId string ID risorsa della definizione dei criteri.
policyDefinitionReferenceId string ID di riferimento per la definizione di criteri all'interno della definizione dell'iniziativa, se l'assegnazione dei criteri è per un'iniziativa. Può essere vuoto.
complianceState string Stato di conformità della risorsa rispetto all'assegnazione dei criteri.
subscriptionId string L'ID sottoscrizione della risorsa.
complianceReasonCode string Codice motivo di conformità. Può essere vuoto.

Evento di esempio

L'esempio seguente illustra lo schema di un evento creato con stato dei criteri con ambito a livello di sottoscrizione:

[{
    "id": "5829794FCB5075FCF585476619577B5A5A30E52C84842CBD4E2AD73996714C4C",
    "topic": "/subscriptions/<SubscriptionID>",
    "subject": "/subscriptions/<SubscriptionID>/resourceGroups/<ResourceGroup>/providers/<ProviderNamespace>/<ResourceType>/<ResourceName>",
    "data": {
        "timestamp": "2021-03-27T18:37:42.4496956Z",
        "policyAssignmentId": "<policy-assignment-scope>/providers/microsoft.authorization/policyassignments/<policy-assignment-name>",
        "policyDefinitionId": "<policy-definition-scope>/providers/microsoft.authorization/policydefinitions/<policy-definition-name>",
        "policyDefinitionReferenceId": "",
        "complianceState": "NonCompliant",
        "subscriptionId": "<subscription-id>",
        "complianceReasonCode": ""
    },
    "eventType": "Microsoft.PolicyInsights.PolicyStateCreated",
    "eventTime": "2021-03-27T18:37:42.5241536Z",
    "dataVersion": "1",
    "metadataVersion": "1"
}]

Lo schema per uno stato dei criteri ha modificato l'ambito dell'evento a livello di sottoscrizione è simile:

[{
    "id": "5829794FCB5075FCF585476619577B5A5A30E52C84842CBD4E2AD73996714C4C",
    "topic": "/subscriptions/<SubscriptionID>",
    "subject": "/subscriptions/<SubscriptionID>/resourceGroups/<ResourceGroup>/providers/<ProviderNamespace>/<ResourceType>/<ResourceName>",
    "data": {
        "timestamp": "2021-03-27T18:37:42.4496956Z",
        "policyAssignmentId": "<policy-assignment-scope>/providers/microsoft.authorization/policyassignments/<policy-assignment-name>",
        "policyDefinitionId": "<policy-definition-scope>/providers/microsoft.authorization/policydefinitions/<policy-definition-name>",
        "policyDefinitionReferenceId": "",
        "complianceState": "NonCompliant",
        "subscriptionId": "<subscription-id>",
        "complianceReasonCode": ""
    },
    "eventType": "Microsoft.PolicyInsights.PolicyStateChanged",
    "eventTime": "2021-03-27T18:37:42.5241536Z",
    "dataVersion": "1",
    "metadataVersion": "1"
}]

L'esempio seguente mostra lo schema di un evento creato con stato dei criteri con ambito a livello di gruppo di gestione:

[{
    "id": "5829794FCB5075FCF585476619577B5A5A30E52C84842CBD4E2AD73996714C4C",
    "topic": "/tenants/<tenantId>/providers/Microsoft.Management/managementGroups/<managementGroupId>",
    "subject": "/subscriptions/<SubscriptionID>/resourceGroups/<ResourceGroup>/providers/<ProviderNamespace>/<ResourceType>/<ResourceName>",
    "data": {
        "timestamp": "2021-03-27T18:37:42.4496956Z",
        "policyAssignmentId": "<policy-assignment-scope>/providers/microsoft.authorization/policyassignments/<policy-assignment-name>",
        "policyDefinitionId": "<policy-definition-scope>/providers/microsoft.authorization/policydefinitions/<policy-definition-name>",
        "policyDefinitionReferenceId": "",
        "complianceState": "NonCompliant",
        "subscriptionId": "<subscription-id>",
        "complianceReasonCode": ""
    },
    "eventType": "Microsoft.PolicyInsights.PolicyStateCreated",
    "eventTime": "2021-03-27T18:37:42.5241536Z",
    "dataVersion": "1",
    "metadataVersion": "1"
}]

Lo schema per uno stato dei criteri ha modificato l'ambito dell'evento a livello di gruppo di gestione è simile:

[{
    "id": "5829794FCB5075FCF585476619577B5A5A30E52C84842CBD4E2AD73996714C4C",
    "topic": "/tenants/<tenantId>/providers/Microsoft.Management/managementGroups/<managementGroupId>",
    "subject": "/subscriptions/<SubscriptionID>/resourceGroups/<ResourceGroup>/providers/<ProviderNamespace>/<ResourceType>/<ResourceName>",
    "data": {
        "timestamp": "2021-03-27T18:37:42.4496956Z",
        "policyAssignmentId": "<policy-assignment-scope>/providers/microsoft.authorization/policyassignments/<policy-assignment-name>",
        "policyDefinitionId": "<policy-definition-scope>/providers/microsoft.authorization/policydefinitions/<policy-definition-name>",
        "policyDefinitionReferenceId": "",
        "complianceState": "NonCompliant",
        "subscriptionId": "<subscription-id>",
        "complianceReasonCode": ""
    },
    "eventType": "Microsoft.PolicyInsights.PolicyStateChanged",
    "eventTime": "2021-03-27T18:37:42.5241536Z",
    "dataVersion": "1",
    "metadataVersion": "1"
}]

Procedure consigliate per l'utilizzo di eventi

Le applicazioni che gestiscono eventi Criteri di Azure devono seguire queste procedure consigliate:

  • È possibile configurare più sottoscrizioni per instradare gli eventi allo stesso gestore eventi, quindi non presupporre che gli eventi provenano da una determinata origine. Controllare invece l'argomento del messaggio per assicurarsi che l'assegnazione dei criteri, la definizione dei criteri e la risorsa per cui si trova l'evento di modifica dello stato.
  • eventType Controllare e non presupporre che tutti gli eventi ricevuti siano i tipi previsti.
  • Utilizzare data.timestamp per determinare l'ordine degli eventi in Criteri di Azure, anziché le proprietà di primo livelloeventTime.time
  • Usare il campo oggetto per accedere alla risorsa con una modifica dello stato dei criteri.

Passaggi successivi

Altre informazioni su Griglia di eventi e fornire Criteri di Azure eventi di modifica dello stato a prova: