Поделиться через


Подписка 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"
}]

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

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

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

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

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

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

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

Дальнейшие шаги