Реагирование на события изменения состояния Политики Azure
События политики Azure позволяют приложениям реагировать на изменения состояния. Такая интеграция выполняется без необходимости в сложном коде или дорогостоящих и неэффективных службах опроса. Вместо этого события проталкиваются через Azure Event Grid подписчикам, таким как Функции Azure, Azure Logic Apps, или даже вашему собственному прослушивателю HTTP. Особенно важно, что вы платите только за то, что используете.
События Политики Azure отправляются в службу "Сетка событий Azure", которая предоставляет приложениям службы надежной доставки. Это становится возможным благодаря политикам повтора с широкими возможностями и доставке недоставленных сообщений. Сетка событий заботится о правильной маршрутизации, фильтрации и многоадресной рассылке событий в назначения с помощью подписок Сетки событий. Дополнительные сведения см. в разделе Доставка сообщения сетки событий и повторная попытка.
Примечание.
События изменения состояния Политики Azure отправляются в службу "Сетка событий" после завершения оценки ресурса триггером оценки.
Уведомления сетки событий для изменений состояния соответствия ресурсам могут занять до 20 минут.
Преимущества сетки событий
Сетка событий имеет несколько преимуществ для клиентов и служб в экосистеме Azure:
- Автоматизация. Чтобы оставаться в текущей среде политики, Сетка событий предлагает автоматизированный механизм для создания оповещений и активации задач в зависимости от состояний соответствия.
- Устойчивая доставка: чтобы службы и пользовательские приложения реагировали в режиме реального времени на события соответствия политике, Сетка событий стремится предложить события политики с минимальной задержкой. Сетка событий повторяет передачу события, если конечная точка подписчика не может подтвердить получение или если это не так, в соответствии с предопределенным расписанием повторных попыток и политикой повторных попыток.
- Пользовательский производитель событий: производители событий сетки событий и потребители не должны быть Azure или службы Майкрософт. Внешние приложения могут получать оповещение, показывать создание задачи исправления или собирать сообщения о том, кто отвечает на изменение состояния. См. полное руководство Маршрутизация событий изменения состояния политики в службу "Сетка событий" с помощью Azure CLI.
При использовании сетки событий существует две основные сущности:
- События. Эти события могут быть любым пользователем, который может реагировать на ресурс Azure. Например, если состояние соответствия политик создается, изменяется и удаляется для ресурса, например виртуальной машины или учетных записей хранения.
- Подписки сетки событий. Эти подписки на события — это пользовательские сущности, которые направляют правильный набор событий от издателя к подписчику. Подписки на события могут фильтровать события на основе пути к ресурсу, из которого произошло событие, и типа события. Кроме того, подписки на события также могут фильтроваться по области между подпиской Azure и группой управления.
Распространенный сценарий события Политика Azure отслеживается при изменении состояния соответствия ресурсов во время оценки политики. Архитектура на основе событий — эффективный способ реагирования на эти изменения и вспомогательные средства в реакции на состояние соответствия событиям.
Другим сценарием является автоматическое активация задач исправления без ручного выбора задачи создания исправления на странице политики. Сетка событий проверяет состояние соответствия требованиям и ресурсы, которые в настоящее время не соответствуют требованиям, можно устранить. Дополнительные сведения о структуре исправления. Исправление требует наличия управляемого удостоверения и политик modify
deployIfNotExists
. Дополнительные сведения о типах эффектов.
Сетка событий полезна в качестве системы аудита для хранения изменений состояния и понимания причины несоответствия с течением времени. Сценарии сетки событий бесконечны и основаны на мотивации, сетка событий настраивается.
Доступные типы событий
Политика Azure выдает следующие типы событий:
Тип события | Description |
---|---|
Microsoft.PolicyInsights.PolicyStateCreated | Возникает при создании состояния соответствия требованиям политики. |
Microsoft.PolicyInsights.PolicyStateChanged | Возникает при изменении состояния соответствия требованиям политики. |
Microsoft.PolicyInsights.PolicyStateDeleted | Возникает при удалении состояния соответствия требованиям политики. |
Свойства событий
Событие содержит следующие высокоуровневые данные:
Свойство | Type | Описание: |
---|---|---|
topic |
строка | Полный путь к ресурсу источника событий. Это поле защищено от записи. Это значение предоставляет Сетка событий. |
subject |
строка | Полный идентификатор ресурса, состояние соответствия требованиям которого изменяется, содержит имя и тип ресурса. Использует формат /subscriptions/<SubscriptionID>/resourceGroups/<ResourceGroup>/providers/<ProviderNamespace>/<ResourceType>/<ResourceName> |
eventType |
строка | Один из зарегистрированных типов событий для этого источника событий. |
eventTime |
строка | Время создания события с учетом времени поставщика в формате UTC. |
id |
строка | Уникальный идентификатор события. |
data |
объект | Данные события Политики Azure. |
dataVersion |
строка | Версия схемы для объекта данных. Версию схемы определяет издатель. |
metadataVersion |
строка | Версия схемы для метаданных события. Служба "Сетка событий" определяет схему свойств верхнего уровня. Это значение предоставляет Сетка событий. |
Объект данных имеет следующие свойства:
Свойство | Type | Описание: |
---|---|---|
timestamp |
строка | Время (в формате UTC) сканирования ресурса Политикой Azure. Для упорядочивания событий используйте это свойство вместо свойств верхнего уровня eventTime или time . |
policyAssignmentId |
строка | Идентификатор ресурса назначения политики. |
policyDefinitionId |
строка | Идентификатор ресурса определения политики. |
policyDefinitionReferenceId |
строка | Идентификатор ссылки для определения политики в определении инициативы, если назначение политики выполняется для инициативы. Значение может быть пустым. |
complianceState |
строка | Состояние соответствия ресурса требованиям по отношению к назначению политики. |
subscriptionId |
строка | Идентификатор подписки ресурса. |
complianceReasonCode |
строка | Код причины соответствия требованиям. Значение может быть пустым. |
Пример события
В следующем примере показана схема для события, созданного состоянием политики, на уровне подписки:
[{
"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"
}]
Схема события изменения состояния политики на уровне подписки аналогична:
[{
"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"
}]
В следующем примере показана схема для события, созданного состоянием политики, на уровне группы управления:
[{
"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"
}]
Схема события изменения состояния политики на уровне группы управления аналогична:
[{
"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"
}]
Рекомендации по потреблению событий
Приложения, которые обрабатывают события Политики Azure, должны соответствовать следующим рекомендациям.
- Для маршрутизации событий в один обработчик событий можно настроить несколько подписок, поэтому не следует рассчитывать на то, что события приходят из определенного источника. Вместе этого, проверьте тему сообщения, чтобы убедиться в правильности назначения политики, определения политики и ресурса, для которого задано событие изменения состояния.
- Проверьте
eventType
. Не следует предполагать, что все получаемые события имеют ожидаемые типы. - Используйте
data.timestamp
для определения порядка событий в Политике Azure вместо свойств верхнего уровняeventTime
илиtime
. - Используйте поле темы для доступа к ресурсу, для которого предназначено изменение состояние политики.
Следующие шаги
Узнайте больше о службе "Сетка событий Azure" и изучите работу с событиями изменения состояния Политики Azure:
- Маршрутизация событий изменения состояния политики в службе "Сетка событий" с помощью Azure CLI
- Сведения о схеме политики Azure для службы "Сетка событий"
- An introduction to Azure Event Grid (Общие сведения о службе "Сетка событий Azure")