Subscrição do Azure como origem da Grelha de Eventos

Este artigo fornece as propriedades e o esquema para eventos de assinatura do Azure. Para obter uma introdução aos esquemas de eventos, consulte Esquema de eventos da Grade de Eventos do Azure.

As assinaturas do Azure e os grupos de recursos emitem os mesmos tipos de evento. Os tipos de evento estão relacionados a alterações ou ações de recursos. A principal diferença é que os grupos de recursos emitem eventos para recursos dentro do grupo de recursos e as assinaturas do Azure emitem eventos para recursos em toda a assinatura.

Os eventos de recurso são criados para operações PUT, PATCH, POST e DELETE que são enviadas para .management.azure.com As operações GET não criam eventos. As operações enviadas para o plano de dados (como myaccount.blob.core.windows.net) não criam eventos. Os eventos de ação fornecem dados de evento para operações como listar as chaves de um recurso.

Quando você se inscreve em eventos para uma assinatura do Azure, seu ponto de extremidade recebe todos os eventos dessa assinatura. Os eventos podem incluir eventos que você deseja ver, como atualizar uma máquina virtual, mas também eventos que não são importantes para você, como escrever uma nova entrada no histórico de implantação. Você pode receber todos os eventos em seu ponto de extremidade e escrever código que processa os eventos que deseja manipular. Ou, você pode definir um filtro ao criar a assinatura do evento.

Para manipular eventos de forma programática, você pode classificar eventos observando o operationName valor. Por exemplo, seu ponto de extremidade de evento pode processar apenas eventos para operações iguais a Microsoft.Compute/virtualMachines/write ou Microsoft.Storage/storageAccounts/write.

O assunto do evento é a ID do recurso que é o destino da operação. Para filtrar eventos para um recurso, forneça essa ID de recurso ao criar a assinatura do evento. Para filtrar por um tipo de recurso, use um valor no seguinte formato: /subscriptions/<subscription-id>/resourcegroups/<resource-group>/providers/Microsoft.Compute/virtualMachines

Tipos de eventos disponíveis

As assinaturas do Azure emitem eventos de gerenciamento do Gerenciador de Recursos do Azure, como quando uma VM é criada ou uma conta de armazenamento é excluída.

Tipo de evento Description
Microsoft.Resources.ResourceActionCancel Gerado quando a ação no recurso é cancelada.
Microsoft.Resources.ResourceActionFailure Gerado quando a ação no recurso falha.
Microsoft.Resources.ResourceActionSuccess Gerado quando a ação sobre o recurso é bem-sucedida.
Microsoft.Resources.ResourceDeleteCancel Gerado quando a operação de exclusão é cancelada. Esse evento acontece quando uma implantação de modelo é cancelada.
Microsoft.Resources.ResourceDeleteFailure Gerado quando a operação de exclusão falha.
Microsoft.Resources.ResourceDeleteSuccess Gerado quando a operação de exclusão é bem-sucedida.
Microsoft.Resources.ResourceWriteCancel Gerado quando a operação de criação ou atualização é cancelada.
Microsoft.Resources.ResourceWriteFailure Gerado quando a operação de criação ou atualização falha.
Microsoft.Resources.ResourceWriteSuccess Gerado quando a operação de criação ou atualização é bem-sucedida.

Exemplo de evento

O exemplo a seguir mostra o esquema para um evento ResourceWriteSuccess . O mesmo esquema é usado para eventos ResourceWriteFailure e ResourceWriteCancel com valores diferentes para 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"

}]

O exemplo a seguir mostra o esquema para um evento ResourceDeleteSuccess . O mesmo esquema é usado para eventos ResourceDeleteFailure e ResourceDeleteCancel com valores diferentes para 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"
}]

O exemplo a seguir mostra o esquema para um evento ResourceActionSuccess . O mesmo esquema é usado para eventos ResourceActionFailure e ResourceActionCancel com valores diferentes para 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"
}]

Propriedades do evento

Um evento tem os seguintes dados de nível superior:

Propriedade Type Description
source string Caminho completo do recurso para a origem do evento. Este campo não pode ser gravado. O Event Grid fornece este valor.
subject string Caminho definido pelo publicador para o assunto do evento.
type string Um dos tipos de eventos registados para esta origem de evento.
time string A hora em que o evento é gerado com base na hora UTC do provedor.
id string Identificador exclusivo do evento.
data objeto Dados do evento de assinatura.
specversion string Versão da especificação do esquema CloudEvents.

O objeto de dados tem as seguintes propriedades:

Propriedade Type Description
authorization objeto A autorização solicitada para a operação.
claims objeto As propriedades das reivindicações. Para obter mais informações, consulte Especificação JWT.
correlationId string Um ID de operação para solução de problemas.
httpRequest objeto Os detalhes da operação. Este objeto só é incluído ao atualizar um recurso existente ou excluir um recurso.
resourceProvider string O provedor de recursos para a operação.
resourceUri string O URI do recurso na operação.
operationName string A operação que foi feita.
status string O estado da operação.
subscriptionId string A ID de assinatura do recurso.
tenantId string A ID do locatário do recurso.

Tutorials and how-tos (Tutoriais e procedimentos)

Title Description
Tutorial: Automação do Azure com Grade de Eventos e Microsoft Teams Crie uma máquina virtual, que envia um evento. O evento dispara um runbook de automação que marca a máquina virtual e dispara uma mensagem que é enviada para um canal do Microsoft Teams.
Como: subscrever eventos através do portal Use o portal para se inscrever em eventos para uma assinatura do Azure.
CLI do Azure: inscrever-se em eventos para uma assinatura do Azure Script de exemplo que cria uma assinatura de Grade de Eventos para uma assinatura do Azure e envia eventos para um WebHook.
PowerShell: inscrever-se em eventos para uma assinatura do Azure Script de exemplo que cria uma assinatura de Grade de Eventos para uma assinatura do Azure e envia eventos para um WebHook.

Próximos passos

  • Para obter uma introdução à Grade de Eventos do Azure, consulte O que é a Grade de Eventos?.
  • Para obter mais informações sobre como criar uma assinatura da Grade de Eventos do Azure, consulte Esquema de assinatura da Grade de Eventos.