Reagowanie na zdarzenia zmiany stanu usługi Azure Policy
Zdarzenia usługi Azure Policy umożliwiają aplikacjom reagowanie na zmiany stanu. Ta integracja jest wykonywana bez konieczności wykonywania skomplikowanego kodu lub kosztownych i nieefektywnych usług sondowania. Zamiast tego zdarzenia są wypychane przez usługę Azure Event Grid do subskrybentów, takich jak Azure Functions, Azure Logic Apps, a nawet do własnego niestandardowego odbiornika HTTP. Krytycznie płacisz tylko za to, czego używasz.
Zdarzenia usługi Azure Policy są wysyłane do usługi Azure Event Grid, która zapewnia niezawodne usługi dostarczania do aplikacji za pomocą zaawansowanych zasad ponawiania prób i dostarczania utraconych komunikatów. Usługa Event Grid dba o właściwy routing, filtrowanie i multiemisję zdarzeń do miejsc docelowych za pośrednictwem subskrypcji usługi Event Grid. Aby dowiedzieć się więcej, zobacz Dostarczanie komunikatów usługi Event Grid i ponawianie próby.
Uwaga
Zdarzenia zmiany stanu usługi Azure Policy są wysyłane do usługi Event Grid po zakończeniu oceny wyzwalacza oceny zasobów.
Powiadomienia usługi Event Grid dotyczące zmian stanu zgodności zasobów mogą potrwać do 20 minut.
Korzyści z usługi Event Grid
Usługa Event Grid ma kilka korzyści dla klientów i usług w ekosystemie platformy Azure:
- Automatyzacja: aby zachować aktualność w środowisku zasad, usługa Event Grid oferuje zautomatyzowany mechanizm generowania alertów i wyzwalania zadań w zależności od stanów zgodności.
- Trwałe dostarczanie: aby usługi i aplikacje użytkowników reagowały w czasie rzeczywistym na zdarzenia zgodności zasad, usługa Event Grid dąży do oferowania zdarzeń zasad z minimalnym opóźnieniem. Usługa Event Grid ponawia próbę transmisji zdarzenia, jeśli punkt końcowy subskrybenta nie potwierdzi jego otrzymania lub jeśli nie, zgodnie ze wstępnie określonym harmonogramem ponawiania i ponawiania próby.
- Niestandardowy producent zdarzeń: producenci zdarzeń usługi Event Grid i odbiorcy nie muszą być platformą Azure ani usługi firmy Microsoft. Aplikacje zewnętrzne mogą odbierać alerty, wyświetlać tworzenie zadania korygowania lub zbierać komunikaty, które odpowiadają na zmianę stanu. Aby uzyskać pełny samouczek, zobacz Route policy state change events to Event Grid with Azure CLI (Kierowanie zdarzeń zmiany stanu zasad do usługi Event Grid za pomocą interfejsu wiersza polecenia platformy Azure).
W przypadku korzystania z usługi Event Grid istnieją dwie jednostki podstawowe:
- Zdarzenia: te zdarzenia mogą być czymś, co użytkownik może chcieć reagować na zasób platformy Azure. Na przykład jeśli stan zgodności zasad zostanie utworzony, zmieniony i usunięty dla zasobu, takiego jak maszyna wirtualna lub konta magazynu.
- Subskrypcje usługi Event Grid: te subskrypcje zdarzeń to jednostki skonfigurowane przez użytkownika, które kierują odpowiedni zestaw zdarzeń od wydawcy do subskrybenta. Subskrypcje zdarzeń mogą filtrować zdarzenia na podstawie ścieżki zasobu zdarzenia pochodzącego z i typu zdarzenia. Ponadto subskrypcje zdarzeń mogą również filtrować według zakresu między subskrypcją platformy Azure i grupą zarządzania.
Typowy scenariusz zdarzeń usługi Azure Policy jest śledzony, gdy stan zgodności zasobu ulegnie zmianie podczas oceny zasad. Architektura oparta na zdarzeniach to wydajny sposób reagowania na te zmiany i pomaga w reagowaniu na zmiany stanu zgodności na podstawie zdarzeń.
Innym scenariuszem jest automatyczne wyzwalanie zadań korygowania bez ręcznego wybierania zadania korygowania na stronie zasad. Usługa Event Grid sprawdza stan zgodności i zasoby, które są obecnie niezgodne, można rozwiązać. Dowiedz się więcej o strukturze korygowania. Korygowanie wymaga, aby tożsamość zarządzana i zasady obowiązywałymodify
.deployIfNotExists
Dowiedz się więcej o typach efektów.
Usługa Event Grid jest przydatna jako system inspekcji do przechowywania zmian stanu i zrozumienia przyczyny niezgodności w czasie. Scenariusze usługi Event Grid są nieskończone i oparte na motywacji usługa Event Grid jest konfigurowalna.
Dostępne typy zdarzeń
Usługa Azure Policy emituje następujące typy zdarzeń:
Typ zdarzenia | opis |
---|---|
Microsoft.PolicyInsights.PolicyStateCreated | Zgłaszane po utworzeniu stanu zgodności zasad. |
Microsoft.PolicyInsights.PolicyStateChanged | Zgłaszane po zmianie stanu zgodności zasad. |
Microsoft.PolicyInsights.PolicyStateDeleted | Zgłaszane po usunięciu stanu zgodności zasad. |
Właściwości zdarzenia
Zdarzenie ma następujące dane najwyższego poziomu:
Właściwość | Type | opis |
---|---|---|
topic |
string | Pełna ścieżka zasobu do źródła zdarzeń. To pole nie jest możliwe do zapisu. Ta wartość jest podawana przez usługę Event Grid. |
subject |
string | W pełni kwalifikowany identyfikator zasobu, dla którego jest zmieniany stan zgodności, łącznie z nazwą zasobu i typem zasobu. Używa formatu, /subscriptions/<SubscriptionID>/resourceGroups/<ResourceGroup>/providers/<ProviderNamespace>/<ResourceType>/<ResourceName> |
eventType |
string | Jeden z zarejestrowanych typów zdarzeń dla tego źródła zdarzeń. |
eventTime |
string | Czas generowania zdarzenia na podstawie czasu UTC dostawcy. |
id |
string | Unikatowy identyfikator zdarzenia. |
data |
obiekt | Dane zdarzeń usługi Azure Policy. |
dataVersion |
string | Wersja schematu obiektu danych. Wydawca definiuje wersję schematu. |
metadataVersion |
string | Wersja schematu metadanych zdarzenia. Usługa Event Grid definiuje schemat właściwości najwyższego poziomu. Ta wartość jest podawana przez usługę Event Grid. |
Obiekt danych ma następujące właściwości:
Właściwość | Type | opis |
---|---|---|
timestamp |
string | Czas (w formacie UTC) zeskanowany przez zasób przez usługę Azure Policy. W przypadku zdarzeń porządkowania użyj tej właściwości zamiast właściwości najwyższego poziomu eventTime lub time właściwości. |
policyAssignmentId |
string | Identyfikator zasobu przypisania zasad. |
policyDefinitionId |
string | Identyfikator zasobu definicji zasad. |
policyDefinitionReferenceId |
string | Identyfikator odwołania definicji zasad w definicji inicjatywy, jeśli przypisanie zasad jest dla inicjatywy. Może być pusty. |
complianceState |
string | Stan zgodności zasobu w odniesieniu do przypisania zasad. |
subscriptionId |
string | Identyfikator subskrypcji zasobu. |
complianceReasonCode |
string | Kod przyczyny zgodności. Może być pusty. |
Przykładowe zdarzenie
W poniższym przykładzie przedstawiono schemat stanu zasad utworzonego zdarzenia o określonym zakresie na poziomie subskrypcji:
[{
"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"
}]
Schemat zdarzenia zmienionego stanu zasad o określonym zakresie na poziomie subskrypcji jest podobny:
[{
"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"
}]
W poniższym przykładzie przedstawiono schemat stanu zasad utworzonego zdarzenia o określonym zakresie na poziomie grupy zarządzania:
[{
"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"
}]
Schemat zdarzenia zmienionego stanu zasad o określonym zakresie na poziomie grupy zarządzania jest podobny:
[{
"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"
}]
Praktyki dotyczące korzystania ze zdarzeń
Aplikacje obsługujące zdarzenia usługi Azure Policy powinny przestrzegać następujących zalecanych rozwiązań:
- Wiele subskrypcji można skonfigurować pod kątem kierowania zdarzeń do tej samej procedury obsługi zdarzeń, więc nie zakładaj, że zdarzenia pochodzą z określonego źródła. Zamiast tego sprawdź temat komunikatu, aby upewnić się, że przypisanie zasad, definicja zasad i zasób dotyczy zdarzenia zmiany stanu.
- Sprawdź i nie zakładaj
eventType
, że wszystkie otrzymane zdarzenia są typami, których oczekujesz. - Służy
data.timestamp
do określania kolejności zdarzeń w usłudze Azure Policy zamiast właściwości najwyższego poziomueventTime
lubtime
właściwości. - Użyj pola tematu, aby uzyskać dostęp do zasobu, który miał zmianę stanu zasad.
Następne kroki
Dowiedz się więcej o usłudze Event Grid i udostępniaj zdarzenia zmiany stanu usługi Azure Policy: