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 egy Azure-erőforrás esetében. Ha például egy szabályzatmegfeleltségi állapotot hoz létre, módosít és töröl egy erőforráshoz, például egy virtuális géphez vagy tárfiókhoz.
- 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 választja ki a szervizelési feladatot a szabályzatlapon. 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ályzatnak érvényben kell lennie vagy deployIfNotExists
érvényben kell lenniemodify
. További információ az effektustípusokról.
Az Event Grid naplózási rendszerként 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ó.
Elérhető eseménytípusok
Az Azure Policy a következő eseménytípusokat bocsátja ki:
Eseménytípus | Leírás |
---|---|
Microsoft.PolicyInsights.PolicyStateCreated | A szabályzatmegfeleltségi állapot létrehozásakor történik. |
Microsoft.PolicyInsights.PolicyStateChanged | A szabályzatmegfeleltségi állapot módosításakor jelenik meg. |
Microsoft.PolicyInsights.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
vagytime
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: