Megosztás a következőn keresztül:


Reagálás az Azure Policy állapotváltozási eseményeire

Az Azure Policy-események lehetővé teszik, hogy az alkalmazások reagáljanak az állapotváltozásra. Ez az integráció bonyolult kód vagy költséges és nem hatékony lekérdezési szolgáltatások nélkül történik. Ehelyett az eseményeket az Azure Event Griden keresztül küldi el az olyan előfizetőknek, mint az Azure Functions, az Azure Logic Apps vagy akár a saját egyéni HTTP-figyelője. Kritikus fontosságú, hogy csak azért kell fizetnie, amit használ.

Az Azure Policy-eseményeket az Azure Event Grid küldi el, amely megbízható kézbesítési szolgáltatásokat nyújt az alkalmazásoknak a részletes újrapróbálkozési szabályzatok és a kézbesítetlen levelek kézbesítése révén. Az Event Grid gondoskodik az események megfelelő útválasztásáról, szűréséről és csoportos küldéséről az Event Grid-előfizetéseken keresztül. További információkért tekintse meg az Event Grid üzenetkézbesítését és újrapróbálkozása című témakört.

Feljegyzés

Az Azure Policy állapotváltozási eseményei az erőforrás-kiértékelést követően kerülnek az Event Gridbe.

Az erőforrás-megfelelőségi állapot változásaival kapcsolatos Event Grid-értesítések akár 20 percet is igénybe vehetnek.

Az Event Grid előnyei

Az Event Gridnek néhány előnye van az Azure-ökoszisztémában lévő ügyfelek és szolgáltatások számára:

  • Automatizálás: A szabályzatkörnyezet naprakészen tartásához az Event Grid automatizált mechanizmust kínál riasztások létrehozására és feladatok aktiválására a megfelelőségi állapotoktól függően.
  • Tartós teljesítés: Annak érdekében, hogy a szolgáltatások és a felhasználói alkalmazások valós időben válaszolhassanak a szabályzatmegfelelőségi eseményekre, az Event Grid a minimális késésű szabályzateseményeket kívánja kínálni. Az Event Grid újrapróbálkozza az esemény továbbítását, ha az előfizető végpontja nem nyugtázza annak átvételét, vagy ha nem, egy előre meghatározott újrapróbálkozási ütemezés és újrapróbálkozási szabályzat szerint.
  • Egyéni eseménygyártó: Az Event Grid eseménykészítőinek és felhasználóinak nem kell Azure-nak vagy Microsoft-szolgáltatások lenniük. A külső alkalmazások riasztást kaphatnak, megjeleníthetik a szervizelési feladat létrehozását, vagy üzeneteket gyűjthetnek arról, hogy ki válaszol az állapotváltozásra. A szabályzat állapotváltozási eseményeinek átirányítása az Event Gridre az Azure CLI-vel teljes oktatóanyagot biztosít.

Az Event Grid használatakor két elsődleges entitás létezik:

  • Események: Ezek az események bármi lehetnek, amire a felhasználó reagálni szeretne, beleértve azt is, ha szabályzatmegfelelőségi állapot jön létre, módosít és töröl egy erőforrást, például egy virtuális gépet vagy tárfiókot.
  • Event Grid-előfizetések: Ezek az esemény-előfizetések olyan felhasználó által konfigurált entitások, amelyek a közzétevőtől a megfelelő eseménykészletet egy előfizetőhöz irányítják. Az esemény-előfizetések az esemény forrásának és az esemény típusának megfelelően szűrhetik az eseményeket. Emellett az esemény-előfizetések hatókör szerint is szűrhetnek az Azure-előfizetés és a felügyeleti csoport között.

Az Azure Policy gyakori eseményforgatókönyve, ha egy erőforrás megfelelőségi állapota megváltozik a szabályzat kiértékelése során. Az eseményalapú architektúra hatékonyan reagál ezekre a változásokra, és segíti az eseményalapú reagálást a megfelelőségi állapot változásaira.

Egy másik forgatókönyv az, hogy automatikusan aktiválja a szervizelési feladatokat anélkül, hogy manuálisan kipipálja a létrehozási szervizelési feladatot a szabályzatoldalon. Az Event Grid ellenőrzi a megfelelőségi állapotot és az erőforrásokat, amelyek jelenleg nem megfelelőek, orvosolhatók. További információ a szervizelési struktúráról. A szervizeléshez felügyelt identitásra van szükség, és a szabályzatoknak Módosítás vagy DeployIfNotExists effektusban kell lenniük. További információ az effektustípusokról.

Emellett az Event Grid naplózási rendszerként is hasznos az állapotváltozások tárolásához és a meg nem felállás okának megértéséhez. Az Event Grid forgatókönyvei végtelenek, és a motiváció alapján az Event Grid konfigurálható.

Képernyőkép a források és kezelők Event Grid-modelljéről.

Elérhető eseménytípusok

Az Azure Policy a következő eseménytípusokat bocsátja ki:

Eseménytípus Leírás
Microsoft.Policy Elemzések. PolicyStateCreated A szabályzatmegfeleltségi állapot létrehozásakor történik.
Microsoft.Policy Elemzések. PolicyStateChanged A szabályzatmegfeleltségi állapot módosításakor jelenik meg.
Microsoft.Policy Elemzések. PolicyStateDeleted A szabályzatmegfeleltségi állapot törlésekor jelenik meg.

Esemény tulajdonságai

Egy esemény a következő legfelső szintű adatokkal rendelkezik:

Tulajdonság Típus Leírás
topic húr Az eseményforrás teljes erőforrás-elérési útja. Ez a mező nem írható. Az értéket az Event Grid adja meg.
subject húr Annak az erőforrásnak a teljes azonosítója, amelynél a megfelelőségi állapot változik, beleértve az erőforrás nevét és az erőforrás típusát. A formátumot használja, /subscriptions/<SubscriptionID>/resourceGroups/<ResourceGroup>/providers/<ProviderNamespace>/<ResourceType>/<ResourceName>
eventType húr Az eseményforráshoz felvett eseménytípusok egyike.
eventTime húr Az esemény létrehozásának időpontja a szolgáltató UTC-ideje alapján.
id húr Az esemény egyedi azonosítója.
data object Azure Policy-eseményadatok.
dataVersion húr Az adatobjektum sémaverziója. A sémaverziót a közzétevő határozza meg.
metadataVersion húr Az esemény metaadatok sémaverziója. A legfelső szintű tulajdonságokra az Event Grid határozza meg a sémát. Az értéket az Event Grid adja meg.

Az adatobjektum a következő tulajdonságokkal rendelkezik:

Tulajdonság Típus Leírás
timestamp húr Az az időpont (UTC-ben), amikor az erőforrást az Azure Policy megvizsgálta. Események megrendeléséhez használja ezt a tulajdonságot a legfelső szintű eventTime vagy time a tulajdonságok helyett.
policyAssignmentId húr A szabályzat-hozzárendelés erőforrás-azonosítója.
policyDefinitionId húr A szabályzatdefiníció erőforrás-azonosítója.
policyDefinitionReferenceId húr A kezdeményezés definíciójának szabályzatdefiníciójának referenciaazonosítója, ha a szabályzat-hozzárendelés kezdeményezéshez tartozik. Lehet, hogy üres.
complianceState húr Az erőforrás megfelelőségi állapota a szabályzat-hozzárendelés tekintetében.
subscriptionId húr Az erőforrás előfizetés-azonosítója.
complianceReasonCode húr A megfelelőségi ok kódja. Lehet, hogy üres.

Példaesemény

Az alábbi példa egy előfizetési szinten hatókörrel rendelkező szabályzatállapot által létrehozott esemény sémáját mutatja be:

[{
    "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"
}]

Az előfizetés szintjén módosított házirendállapot-esemény sémája hasonló:

[{
    "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"
}]

Az alábbi példa egy szabályzatállapot által létrehozott esemény sémáját mutatja be a felügyeleti csoport szintjén:

[{
    "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"
}]

A felügyeleti csoport szintjén hatókörönként módosított házirendállapot-változási esemény sémája hasonló:

[{
    "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"
}]

Az események felhasználásának gyakorlata

Az Azure Policy-eseményeket kezelő alkalmazásoknak az alábbi ajánlott eljárásokat kell követniük:

  • Több előfizetés is konfigurálható úgy, hogy az eseményeket ugyanahhoz az eseménykezelőhöz irányítsa, ezért ne feltételezze, hogy az események egy adott forrásból származnak. Ehelyett ellenőrizze az üzenet témakörét, és győződjön meg arról, hogy a szabályzat-hozzárendelés, a szabályzatdefiníció és az állapotváltozási esemény erőforrása az.
  • Ellenőrizze, eventType és ne feltételezze, hogy minden kapott esemény a várt típus.
  • Az data.timestamp Azure Policy eseményeinek sorrendjét határozza meg a legfelső szintű eventTime vagy time a tulajdonságok helyett.
  • A tárgymezővel elérheti azt az erőforrást, amely módosult a szabályzatállapotban.

Következő lépések

További információ az Event Gridről, és az Azure Policy állapotváltozási eseményeinek kipróbálása: