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