Подписка Azure в качестве источника Сетки событий

В этой статье описаны свойства и схема для событий подписки Azure. Общие сведения о схемах событий см. в статье Схема событий службы "Сетка событий Azure".

Подписки и группы ресурсов Azure выдают одинаковые типы событий. Типы событий связаны с изменениями в ресурсах или действиями. Основное различие в том, что группы ресурсов выдают события для ресурсов в пределах группы ресурсов, а подписки Azure — для ресурсов во всей подписке.

События ресурса создаются для операций PUT, PATCH, POST и DELETE, которые отправляются в management.azure.com. Операции GET не создают события. Операции, передаваемые в плоскость данных (например, в myaccount.blob.core.windows.net), не создают события. События действий предоставляют данные о событиях для операций, таких как создание списка ключей для ресурса.

При оформлении подписки на события, связанные с подпиской Azure, ваша конечная точка получает все события для этой подписки. События могут включать событие, которое вы хотите увидеть, например обновление виртуальной машины, но и события, которые не важны для вас, например запись новой записи в журнале развертывания. Вы можете получать все события в конечной точке и написать код, который обрабатывает нужные события. Кроме того, вы можете задать фильтр при создании подписки на события.

Для программной обработки события можно отсортировать по значению operationName. Например, конечная точка событий может обрабатывать только события для операций Microsoft.Compute/virtualMachines/write или Microsoft.Storage/storageAccounts/write.

Тема события — это идентификатор ресурса, который является целевым объектом операции. Для фильтрации событий ресурса укажите идентификатор ресурса при создании подписки на события. Чтобы выполнить фильтрацию по типу ресурсов, используйте значение в следующем формате: /subscriptions/<subscription-id>/resourcegroups/<resource-group>/providers/Microsoft.Compute/virtualMachines

Доступные типы событий

Подписки Azure создают события управления из Azure Resource Manager, например при создании виртуальной машины или удалении учетной записи хранения.

Тип события Description
Microsoft.Resources.ResourceActionCancel Возникает при отмене выполнения действия с ресурсом.
Microsoft.Resources.ResourceActionFailure Возникает при сбое выполнения действия с ресурсом.
Microsoft.Resources.ResourceActionSuccess Возникает при успешном выполнении действия с ресурсом.
Microsoft.Resources.ResourceDeleteCancel Возникает при отмене удаления. Это событие происходит при отмене развертывания шаблона.
Microsoft.Resources.ResourceDeleteFailure Возникает при неудачном удалении.
Microsoft.Resources.ResourceDeleteSuccess Возникает при успешном удалении.
Microsoft.Resources.ResourceWriteCancel Возникает при отмене создания или обновления.
Microsoft.Resources.ResourceWriteFailure Возникает при неудачном создании или обновлении.
Microsoft.Resources.ResourceWriteSuccess Возникает при успешном создании или обновлении.

Пример события

В следующем примере показана схема события ResourceWriteSuccess. Та же схема используется для событий ResourceWriteFailure и ResourceWriteCancel с разными значениями для eventType.

[{
  "subject": "/subscriptions/{subscription-id}/resourcegroups/{resource-group}/providers/Microsoft.Storage/storageAccounts/{storage-name}",
  "topic": "/subscriptions/{subscription-id}",
  "type": "Microsoft.Resources.ResourceWriteSuccess",
  "time": "2018-07-19T18:38:04.6117357Z",
  "id": "4db48cba-50a2-455a-93b4-de41a3b5b7f6",
  "data": {
    "authorization": {
      "scope": "/subscriptions/{subscription-id}/resourcegroups/{resource-group}/providers/Microsoft.Storage/storageAccounts/{storage-name}",
      "action": "Microsoft.Storage/storageAccounts/write",
      "evidence": {
        "role": "Subscription Admin"
      }
    },
    "claims": {
      "aud": "{audience-claim}",
      "iss": "{issuer-claim}",
      "iat": "{issued-at-claim}",
      "nbf": "{not-before-claim}",
      "exp": "{expiration-claim}",
      "_claim_names": "{\"groups\":\"src1\"}",
      "_claim_sources": "{\"src1\":{\"endpoint\":\"{URI}\"}}",
      "http://schemas.microsoft.com/claims/authnclassreference": "1",
      "aio": "{token}",
      "http://schemas.microsoft.com/claims/authnmethodsreferences": "rsa,mfa",
      "appid": "{ID}",
      "appidacr": "2",
      "http://schemas.microsoft.com/2012/01/devicecontext/claims/identifier": "{ID}",
      "e_exp": "{expiration}",
      "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname": "{last-name}",
      "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname": "{first-name}",
      "ipaddr": "{IP-address}",
      "name": "{full-name}",
      "http://schemas.microsoft.com/identity/claims/objectidentifier": "{ID}",
      "onprem_sid": "{ID}",
      "puid": "{ID}",
      "http://schemas.microsoft.com/identity/claims/scope": "user_impersonation",
      "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier": "{ID}",
      "http://schemas.microsoft.com/identity/claims/tenantid": "{ID}",
      "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name": "{user-name}",
      "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn": "{user-name}",
      "uti": "{ID}",
      "ver": "1.0"
    },
    "correlationId": "{ID}",
    "resourceProvider": "Microsoft.Storage",
    "resourceUri": "/subscriptions/{subscription-id}/resourcegroups/{resource-group}/providers/Microsoft.Storage/storageAccounts/{storage-name}",
    "operationName": "Microsoft.Storage/storageAccounts/write",
    "status": "Succeeded",
    "subscriptionId": "{subscription-id}",
    "tenantId": "{tenant-id}"
  },
  "specversion": "`1.0"

}]

В следующем примере показана схема события ResourceDeleteSuccess. Та же схема используется для событий ResourceDeleteFailure и ResourceDeleteCancel с разными значениями для eventType.

[{
  "subject": "/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.Storage/storageAccounts/{storage-name}",
  "source": "/subscriptions/{subscription-id}",
  "type": "Microsoft.Resources.ResourceDeleteSuccess",
  "time": "2018-07-19T19:24:12.763881Z",
  "id": "19a69642-1aad-4a96-a5ab-8d05494513ce",
  "data": {
    "authorization": {
      "scope": "/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.Storage/storageAccounts/{storage-name}",
      "action": "Microsoft.Storage/storageAccounts/delete",
      "evidence": {
        "role": "Subscription Admin"
      }
    },
    "claims": {
      "aud": "{audience-claim}",
      "iss": "{issuer-claim}",
      "iat": "{issued-at-claim}",
      "nbf": "{not-before-claim}",
      "exp": "{expiration-claim}",
      "_claim_names": "{\"groups\":\"src1\"}",
      "_claim_sources": "{\"src1\":{\"endpoint\":\"{URI}\"}}",
      "http://schemas.microsoft.com/claims/authnclassreference": "1",
      "aio": "{token}",
      "http://schemas.microsoft.com/claims/authnmethodsreferences": "rsa,mfa",
      "appid": "{ID}",
      "appidacr": "2",
      "http://schemas.microsoft.com/2012/01/devicecontext/claims/identifier": "{ID}",
      "e_exp": "262800",
      "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname": "{last-name}",
      "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname": "{first-name}",
      "ipaddr": "{IP-address}",
      "name": "{full-name}",
      "http://schemas.microsoft.com/identity/claims/objectidentifier": "{ID}",
      "onprem_sid": "{ID}",
      "puid": "{ID}",
      "http://schemas.microsoft.com/identity/claims/scope": "user_impersonation",
      "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier": "{ID}",
      "http://schemas.microsoft.com/identity/claims/tenantid": "{ID}",
      "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name": "{user-name}",
      "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn": "{user-name}",
      "uti": "{ID}",
      "ver": "1.0"
    },
    "correlationId": "{ID}",
    "httpRequest": {
      "clientRequestId": "{ID}",
      "clientIpAddress": "{IP-address}",
      "method": "DELETE",
      "url": "https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.Storage/storageAccounts/{storage-name}?api-version=2018-02-01"
    },
    "resourceProvider": "Microsoft.Storage",
    "resourceUri": "/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.Storage/storageAccounts/{storage-name}",
    "operationName": "Microsoft.Storage/storageAccounts/delete",
    "status": "Succeeded",
    "subscriptionId": "{subscription-id}",
    "tenantId": "{tenant-id}"
  },
  "specversion": "1.0"
}]

В следующем примере показана схема события ResourceActionSuccess. Та же схема используется для событий ResourceActionFailure и ResourceActionCancel с разными значениями для eventType.

[{   
  "subject": "/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.EventHub/namespaces/{namespace}/AuthorizationRules/RootManageSharedAccessKey",
  "source": "/subscriptions/{subscription-id}",
  "type": "Microsoft.Resources.ResourceActionSuccess",
  "time": "2018-10-08T22:46:22.6022559Z",
  "id": "{ID}",
  "data": {
    "authorization": {
      "scope": "/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.EventHub/namespaces/{namespace}/AuthorizationRules/RootManageSharedAccessKey",
      "action": "Microsoft.EventHub/namespaces/AuthorizationRules/listKeys/action",
      "evidence": {
        "role": "Contributor",
        "roleAssignmentScope": "/subscriptions/{subscription-id}",
        "roleAssignmentId": "{ID}",
        "roleDefinitionId": "{ID}",
        "principalId": "{ID}",
        "principalType": "ServicePrincipal"
      }     
    },
    "claims": {
      "aud": "{audience-claim}",
      "iss": "{issuer-claim}",
      "iat": "{issued-at-claim}",
      "nbf": "{not-before-claim}",
      "exp": "{expiration-claim}",
      "aio": "{token}",
      "appid": "{ID}",
      "appidacr": "2",
      "http://schemas.microsoft.com/identity/claims/identityprovider": "{URL}",
      "http://schemas.microsoft.com/identity/claims/objectidentifier": "{ID}",
      "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier": "{ID}",       "http://schemas.microsoft.com/identity/claims/tenantid": "{ID}",
      "uti": "{ID}",
      "ver": "1.0"
    },
    "correlationId": "{ID}",
    "httpRequest": {
      "clientRequestId": "{ID}",
      "clientIpAddress": "{IP-address}",
      "method": "POST",
      "url": "https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.EventHub/namespaces/{namespace}/AuthorizationRules/RootManageSharedAccessKey/listKeys?api-version=2017-04-01"
    },
    "resourceProvider": "Microsoft.EventHub",
    "resourceUri": "/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.EventHub/namespaces/{namespace}/AuthorizationRules/RootManageSharedAccessKey",
    "operationName": "Microsoft.EventHub/namespaces/AuthorizationRules/listKeys/action",
    "status": "Succeeded",
    "subscriptionId": "{subscription-id}",
    "tenantId": "{tenant-id}"
  },
  "specversion": "1.0"
}]

Свойства событий

Событие содержит следующие высокоуровневые данные:

Свойство Type Описание:
source строка Полный путь к ресурсу источника событий. Это поле защищено от записи. Это значение предоставляет Сетка событий.
subject строка Определенный издателем путь к субъекту события.
type строка Один из зарегистрированных типов событий для этого источника событий.
time строка Время создания события с учетом времени поставщика в формате UTC.
id строка Уникальный идентификатор события.
data объект Данные события подписки.
specversion строка Версия спецификации схемы CloudEvents.

Объект данных имеет следующие свойства:

Свойство Type Описание
authorization объект Запрошенная авторизация для операции.
claims объект Свойства утверждений. Дополнительные сведения см. в спецификациях JWT.
correlationId строка Идентификатор операции для устранения неполадок.
httpRequest объект Подробные сведения об операции. Этот объект включается только при обновлении существующего ресурса или при удалении ресурса.
resourceProvider строка Поставщик ресурсов для операции.
resourceUri строка URI ресурса в операции.
operationName строка Выполненная операция.
status строка Состояние операции.
subscriptionId строка Идентификатор подписки ресурса.
tenantId строка Идентификатор клиента ресурса.

Практические руководства и другие учебные материалы

Заголовок Description
Интеграция службы автоматизации Azure со службой "Сетка событий Azure" и Microsoft Teams Создайте виртуальную машину, которая отправляет событие. Это событие вызывает модуль runbook службы автоматизации, который присваивает виртуальной машине тег и отправляет сообщение в канал Microsoft Teams.
Подписка на события через портал Использование портала для создания подписки на события, связанные с подпиской Azure.
Создание подписки на события, связанные с подпиской Azure, с использованием Azure CLI Пример сценария, который создает подписку Сетки событий для подписки Azure и отправляет события в веб-перехватчик.
Создание подписки на события, связанные с подпиской Azure, с помощью PowerShell Пример сценария, который создает подписку Сетки событий для подписки Azure и отправляет события в веб-перехватчик.

Следующие шаги