Reakce na události změn stavu služby Azure Policy
Události Azure Policy umožňují aplikacím reagovat na změny stavu. Tato integrace se provádí bez nutnosti složitého nebo nákladného a neefektivního dotazování služeb. Místo toho se události odsílají prostřednictvím Azure Event Gridu odběratelům, jako jsou Azure Functions, Azure Logic Apps nebo dokonce vlastnímu naslouchacímu procesu HTTP. Kriticky platíte jenom za to, co používáte.
Události Služby Azure Policy se odesílají do služby Azure Event Grid, která poskytuje spolehlivé služby doručování aplikací prostřednictvím bohatých zásad opakování a doručení nedoručených dopisů. Event Grid se stará o správné směrování, filtrování a vícesměrové vysílání událostí do cílů prostřednictvím odběrů Event Gridu. Další informace najdete v tématu Doručování zpráv event Gridu a opakování.
Poznámka:
Události změn stavu služby Azure Policy se po dokončení vyhodnocení triggeru pro vyhodnocení odešlou do Event Gridu.
Oznámení služby Event Grid o změnách stavu dodržování předpisů prostředků můžou trvat až 20 minut.
Výhody Event Gridu
Event Grid má několik výhod pro zákazníky a služby v ekosystému Azure:
- Automatizace: Aby služba Event Grid zůstala aktuální s prostředím zásad, nabízí automatizovaný mechanismus pro generování výstrah a spouštění úloh v závislosti na stavech dodržování předpisů.
- Trvalé doručování: Aby služby a uživatelské aplikace reagovaly v reálném čase na události dodržování zásad, služba Event Grid se snaží nabízet události zásad s minimální latencí. Event Grid opakuje přenos události, pokud koncový bod odběratele nepotvrdí jeho přijetí nebo pokud ne, podle předem určeného plánu opakování a zásady opakování.
- Vlastní producent událostí: Producenti a příjemci událostí Event Gridu nemusí být Azure ani služby Microsoft. Externí aplikace můžou obdržet upozornění, zobrazit vytvoření úlohy nápravy nebo shromažďovat zprávy o tom, kdo reaguje na změnu stavu. Úplný kurz najdete v tématu Události změny stavu zásad směrování do Event Gridu pomocí Azure CLI .
Při použití Event Gridu existují dvě primární entity:
- Události: Tyto události můžou být cokoli, na co může uživatel chtít reagovat na prostředek Azure. Pokud se například vytvoří, změní a odstraní stav dodržování zásad pro prostředek, jako je virtuální počítač nebo účty úložiště.
- Odběry služby Event Grid: Tato odběry událostí jsou entity nakonfigurované uživatelem, které směrují správnou sadu událostí od vydavatele k odběrateli. Odběry událostí můžou filtrovat události na základě cesty prostředku, ze které událost pochází, a typu události. Odběry událostí také můžou filtrovat podle rozsahu mezi předplatným Azure a skupinou pro správu.
Běžný scénář události Azure Policy sleduje, kdy se stav dodržování předpisů prostředku během vyhodnocení zásad změní. Architektura založená na událostech představuje efektivní způsob reakce na tyto změny a pomáhá v reakci na události na změny stavu dodržování předpisů.
Dalším scénářem je automatické spuštění úloh nápravy bez ručního výběru úlohy vytvoření nápravy na stránce zásad. Event Grid kontroluje stav dodržování předpisů a prostředky, které momentálně nedodržují předpisy, je možné napravit. Přečtěte si další informace o struktuře nápravy. Náprava vyžaduje spravovanou identitu a zásady musí být nebo modify
deployIfNotExists
musí platit. Přečtěte si další informace o typech efektů.
Event Grid je užitečný jako systém auditu pro ukládání změn stavu a pochopení příčiny nedodržení předpisů v průběhu času. Scénáře pro Event Grid jsou nekonečné a na základě motivace je Event Grid konfigurovatelný.
Dostupné typy událostí
Azure Policy generuje následující typy událostí:
Typ události | Popis |
---|---|
Microsoft.PolicyInsights.PolicyStateCreated | Vyvolá se při vytvoření stavu dodržování předpisů zásad. |
Microsoft.PolicyInsights.PolicyStateChanged | Vyvolá se při změně stavu dodržování předpisů zásad. |
Microsoft.PolicyInsights.PolicyStateDeleted | Vyvolá se při odstranění stavu dodržování předpisů zásad. |
Vlastnosti události
Událost má následující data nejvyšší úrovně:
Vlastnost | Type | Description |
---|---|---|
topic |
string | Úplná cesta prostředku ke zdroji událostí. Toto pole není zapisovatelné. Tuto hodnotu poskytuje Event Grid. |
subject |
string | Plně kvalifikované ID prostředku, pro který se mění stav dodržování předpisů, včetně názvu prostředku a typu prostředku. Používá formát. /subscriptions/<SubscriptionID>/resourceGroups/<ResourceGroup>/providers/<ProviderNamespace>/<ResourceType>/<ResourceName> |
eventType |
string | Jeden z registrovaných typů události pro tento zdroj události. |
eventTime |
string | Čas vygenerování události na základě času UTC poskytovatele. |
id |
string | Jedinečný identifikátor události. |
data |
objekt | Data událostí Služby Azure Policy |
dataVersion |
string | Verze schématu datového objektu. Verzi schématu definuje vydavatel. |
metadataVersion |
string | Verze schématu metadat události. Schéma vlastností nejvyšší úrovně definuje Event Grid. Tuto hodnotu poskytuje Event Grid. |
Datový objekt má následující vlastnosti:
Vlastnost | Type | Description |
---|---|---|
timestamp |
string | Čas (v UTC), kdy služba Azure Policy naskenovala prostředek Pro řazení událostí použijte tuto vlastnost místo vlastností nejvyšší úrovně eventTime nebo time vlastností. |
policyAssignmentId |
string | ID prostředku přiřazení zásady. |
policyDefinitionId |
string | ID prostředku definice zásady. |
policyDefinitionReferenceId |
string | Referenční ID definice zásady uvnitř definice iniciativy, pokud je přiřazení zásady pro iniciativu. Může být prázdný. |
complianceState |
string | Stav dodržování předpisů prostředku s ohledem na přiřazení zásady. |
subscriptionId |
string | ID předplatného prostředku. |
complianceReasonCode |
string | Kód důvodu dodržování předpisů. Může být prázdný. |
Příklad události
Následující příklad ukazuje schéma události vytvořené stavem zásad s vymezeným oborem na úrovni předplatného:
[{
"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"
}]
Schéma pro událost změněnou stav zásad vymezenou na úrovni předplatného je podobné:
[{
"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"
}]
Následující příklad ukazuje schéma události vytvořené stavem zásad s vymezeným oborem na úrovni skupiny pro správu:
[{
"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"
}]
Schéma změněné události stavu zásad s oborem na úrovni skupiny pro správu je podobné:
[{
"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"
}]
Postupy pro využívání událostí
Aplikace, které zpracovávají události Azure Policy, by měly dodržovat tyto doporučené postupy:
- Pro směrování událostí do stejné obslužné rutiny události je možné nakonfigurovat více odběrů, takže nepředpokládáte, že události pocházejí z určitého zdroje. Místo toho zkontrolujte téma zprávy, abyste zajistili přiřazení zásad, definici zásad a prostředek, pro které je událost změny stavu určená.
eventType
Zkontrolujte a nepředpokládáte, že všechny události, které obdržíte, jsou očekávané typy.- Slouží
data.timestamp
k určení pořadí událostí ve službě Azure Policy místo vlastností nejvyšší úrovněeventTime
nebotime
vlastností. - Pole předmětu použijte pro přístup k prostředku, u kterého došlo ke změně stavu zásad.
Další kroky
Přečtěte si další informace o Event Gridu a poskytněte událostem změny stavu Služby Azure Policy vyzkoušení: