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 reagovat, včetně toho, jestli se vytvoří, změní a odstraní stav dodržování zásad, například 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 odškrtnutí ú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 v efektu Modify nebo DeployIfNotExists. Přečtěte si další informace o typech efektů.

Kromě toho je Event Grid 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ý.

Screenshot of Event Grid model of sources and handlers.

Dostupné typy událostí

Azure Policy generuje následující typy událostí:

Typ události Popis
Microsoft.Policy Přehledy. PolicyStateCreated Vyvolá se při vytvoření stavu dodržování předpisů zásad.
Microsoft.Policy Přehledy. PolicyStateChanged Vyvolá se při změně stavu dodržování předpisů zásad.
Microsoft.Policy Přehledy. 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 nebo time 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í: