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.
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: