Partilhar via


Aceder aos registos de atividades do Microsoft Graph

Os registos de atividades do Microsoft Graph são um registo de auditoria de todos os pedidos HTTP que o serviço Microsoft Graph recebeu e processou para um inquilino. Os administradores inquilinos podem ativar a coleção e configurar destinos a jusante para estes registos através das definições de diagnóstico no Azure Monitor. Os registos são armazenados no Log Analytics para análise; pode exportá-los para o Armazenamento do Azure para armazenamento ou transmissão em fluxo de longo prazo com Hubs de Eventos do Azure para ferramentas SIEM externas para alertas, análises ou arquivos.

Todos os registos de pedidos de API feitos a partir de aplicações de linha de negócio, clientes de API, SDKs e aplicações da Microsoft, como o Outlook, o Microsoft Teams ou o centro de administração do Microsoft Entra, estão disponíveis.

Este serviço está disponível nas seguintes implementações de cloud nacionais.

Serviço global US Government L4 US Government L5 (DOD) China operada pela 21Vianet

Pré-requisitos

Para aceder aos registos de atividades do Microsoft Graph, precisa dos seguintes privilégios.

  • Uma licença de inquilino P1 ou P2 Microsoft Entra ID no seu inquilino.
  • Um administrador com uma função de administrador Microsoft Entra suportada. O Administrador de Segurança é a única função de administrador com menos privilégios suportada para configurar as definições de diagnóstico.
  • Uma subscrição do Azure com um dos seguintes destinos de registo está configurada e permissões para aceder aos dados nos destinos de registo correspondentes.
    • Uma área de trabalho do Azure Log Analytics para enviar registos para o Azure Monitor
    • Uma Conta de Armazenamento do Azure para a qual tem permissões de Chaves de Lista
    • Um espaço de nomes Hubs de Eventos do Azure para integrar com soluções de terceiros

Que dados estão disponíveis nos registos de atividades do Microsoft Graph?

Os seguintes dados relacionados com pedidos de API estão disponíveis para os registos de atividades do Microsoft Graph na interface do Logs Analytics.

Coluna Tipo Descrição
AadTenantId string O ID de inquilino Azure AD.
ApiVersion string A versão da API do evento.
AppId string O identificador da aplicação.
ATContent cadeia de caracteres Reserved for future use.
ATContentH string Reserved for future use.
ATContentP cadeia de caracteres Reserved for future use.
_BilledSize real O tamanho do registo em bytes
ClientAuthMethod int Indica como o cliente foi autenticado. Para um cliente público, o valor é 0. Se o ID de cliente e o segredo do cliente forem utilizados, o valor é 1. Se um certificado de cliente tiver sido utilizado para autenticação, o valor é 2.
ClientRequestId string Opcional. O identificador do pedido de cliente quando enviado. Se não for enviado nenhum identificador de pedido de cliente, o valor será igual ao identificador da operação.
DurationMs int A duração do pedido em milissegundos.
IdentityProvider cadeia de caracteres O fornecedor de identidade que autenticou o assunto do token.
IPAddress string O endereço IP do cliente a partir do qual ocorreu o pedido.
_IsBillable string Especifica se a ingestão de dados é faturável. Quando _IsBillable é ingestão não é false faturada na sua conta do Azure
Local string O nome da região que serviu o pedido.
OperationId string O identificador do lote. Para pedidos não em lotes, este será exclusivo por pedido. Para pedidos em lote, este será o mesmo para todos os pedidos no lote.
RequestId string O identificador que representa o pedido.
RequestMethod cadeia de caracteres O método HTTP do evento.
RequestUri string O URI do pedido.
ResponseSizeBytes int O tamanho da resposta em Bytes.
ResponseStatusCode int A resposta HTTP status código para o evento.
Funções cadeia de caracteres As funções em afirmações de token.
Scopes string Os âmbitos em afirmações de tokens.
ServicePrincipalId string O identificador do servicePrincipal que faz o pedido.
SignInActivityId string O identificador que representa as atividades de início de sessão.
SourceSystem string O tipo de agente pelo que o evento foi recolhido. Por exemplo, OpsManager para o agente do Windows, ligação direta ou Operations Manager, Linux para todos os agentes linux ou Azure para Diagnóstico do Azure
TenantId string O ID da área de trabalho do Log Analytics
TimeGenerated datetime A data e hora em que o pedido foi recebido.
TokenIssuedAt datetime O carimbo de data/hora em que o token foi emitido.
Tipo string O nome da tabela
UserAgent string As informações do agente de utilizador relacionadas com o pedido.
UserId string O identificador do utilizador que está a fazer o pedido.
Wids cadeia de caracteres Denota as funções ao nível do inquilino atribuídas a este utilizador.

Casos de utilização comuns para registos de atividades do Microsoft Graph

  • Obtenha visibilidade total sobre as transações efetuadas por aplicações e outros clientes de API aos quais deu consentimento no inquilino.
  • Identifique as atividades que uma conta de utilizador comprometida realizou no seu inquilino.
  • Crie deteções e análise comportamental para identificar a utilização suspeita ou anómalo das APIs do Microsoft Graph.
  • Investigue a atribuição de permissões de aplicação com privilégios inesperados ou suspeitos.
  • Identifique comportamentos problemáticos ou inesperados para aplicações cliente, como volumes de chamadas extremos.
  • Correlacione os pedidos do Microsoft Graph feitos por um utilizador ou aplicação com informações de início de sessão.

Configurar para receber os registos de atividades do Microsoft Graph

Pode configurar para transmitir os registos em fluxo através da Definição de Diagnóstico no portal do Azure ou através das APIs Resource Manager do Azure. Para obter mais informações, veja a documentação de orientação nos seguintes artigos:

Os artigos seguintes guiam-no para configurar os destinos de armazenamento:

Estimativas de planeamento de custos

Se já tiver uma licença do Microsoft Entra ID P1, precisa de uma subscrição do Azure para configurar a área de trabalho do Log Analytics, a Conta de armazenamento ou os Hubs de Eventos. A subscrição do Azure não tem custos, mas tem de pagar para utilizar os recursos do Azure.

A quantidade de dados registados e, portanto, o custo incorrido, pode variar significativamente consoante o tamanho do inquilino e as aplicações no seu inquilino que interagem com as APIs do Microsoft Graph. A tabela seguinte fornece algumas estimativas para o tamanho dos dados de registo para ajudar no cálculo do preço. Utilize estas estimativas apenas para consideração geral.

Utilizadores no inquilino GiB/mês de Armazenamento Mensagens/mês dos Hubs de Eventos GiB/mês dos Registos do Azure Monitor
1000 14 62 K 15
100000 1000 4,8 M 1200

Veja os seguintes cálculos de preços para os respetivos serviços:

Redução de custos do Log Analytics

Se estiver a ingerir os registos numa Área de Trabalho do Log Analytics, mas apenas estiver interessado em registos filtrados por critérios, como omitir determinadas colunas ou linhas, pode reduzir parcialmente os custos ao aplicar uma transformação de área de trabalho na tabela Registos de Atividades do Microsoft Graph. Para saber mais sobre as transformações da área de trabalho, como afeta os custos de ingestão e como aplicar uma transformação aos Registos de Atividades do Microsoft Graph, veja Transformações de recolha de dados no Azure Monitor.

Uma abordagem alternativa para reduzir o custo do Log Analytics é mudar para o plano de dados de registo Básico, o que reduz as faturas ao fornecer capacidades reduzidas. Para obter mais informações, veja Definir o plano de dados de registo de uma tabela como Básico ou Análise.

Exemplos de consulta dos Registos do Azure Monitor

Se enviar registos de atividades do Microsoft Graph para uma área de trabalho do Log Analytics, pode consultar os registos com Linguagem de Consulta Kusto (KQL). Para obter mais informações sobre consultas na Área de Trabalho do Log Analytics, veja Analisar Microsoft Entra registos de atividades com o Log Analytics. Pode utilizar estas consultas para exploração de dados, criar regras de alerta, criar dashboards do Azure ou integrar nas suas aplicações personalizadas com a API de Registos do Azure Monitor ou o SDK de Consultas.

A seguinte consulta Kusto identifica as 20 principais entidades que fazem pedidos aos recursos de grupos que estão a falhar devido à autorização:

MicrosoftGraphActivityLogs
| where TimeGenerated >= ago(3d)
| where ResponseStatusCode == 401 or ResponseStatusCode == 403 
| where RequestUri contains "/groups"
| summarize UniqueRequests=count_distinct(RequestId) by AppId, ServicePrincipalId, UserId
| sort by UniqueRequests desc
| limit 20

A seguinte consulta Kusto identifica os recursos consultados ou modificados por utilizadores potencialmente de risco:

MicrosoftGraphActivityLogs
| where TimeGenerated > ago(30d)
| join AADRiskyUsers on $left.UserId == $right.Id
| extend resourcePath = replace_string(replace_string(replace_regex(tostring(parse_url(RequestUri).Path), @'(\/)+','/'),'v1.0/',''),'beta/','')
| summarize RequestCount=dcount(RequestId) by UserId, RiskState, resourcePath, RequestMethod, ResponseStatusCode

A seguinte consulta Kusto permite-lhe correlacionar os registos de atividades e os registos de início de sessão do Microsoft Graph. Os registos de atividades de aplicações da Microsoft podem não ter todas entradas de registo de início de sessão correspondentes. Para obter mais informações, veja Limitações conhecidas dos registos de início de sessão.

MicrosoftGraphActivityLogs
| where TimeGenerated > ago(7d)
| join kind=leftouter (union SigninLogs, AADNonInteractiveUserSignInLogs, AADServicePrincipalSignInLogs, AADManagedIdentitySignInLogs, ADFSSignInLogs
    | where TimeGenerated > ago(7d))
    on $left.SignInActivityId == $right.UniqueTokenIdentifier

A seguinte consulta Kusto identifica as aplicações que estão a ser limitadas:

MicrosoftGraphActivityLogs 
| where TimeGenerated > ago(3d) 
| where ResponseStatusCode == 429 
| extend path = replace_string(replace_string(replace_regex(tostring(parse_url(RequestUri).Path), @'(\/)+','//'),'v1.0/',''),'beta/','') 
| extend UriSegments =  extract_all(@'\/([A-z2]+|\$batch)($|\/|\(|\$)',dynamic([1]),tolower(path)) 
| extend OperationResource = strcat_array(UriSegments,'/')| summarize RateLimitedCount=count() by AppId, OperationResource, RequestMethod 
| sort by RateLimitedCount desc 
| limit 100 

A consulta seguinte permite-lhe compor um gráfico de série temporal:

MicrosoftGraphActivityLogs 
| where TimeGenerated  between (ago(3d) .. ago(1h))  
| summarize EventCount = count() by bin(TimeGenerated, 10m) 
| render timechart 
    with ( 
    title="Recent traffic patterns", 
    xtitle="Time", 
    ytitle="Requests", 
    legend=hidden 
    )

Limitações

  • A funcionalidade de registos de atividades do Microsoft Graph permite que os administradores inquilinos recolham registos para o inquilino do recurso. Esta funcionalidade não lhe permite ver as atividades de uma aplicação multi-inquilino noutro inquilino.
  • Não pode filtrar os registos de atividades do Microsoft Graph através das definições de diagnóstico no Azure Monitor. No entanto, estão disponíveis opções para reduzir os custos na Área de Trabalho do Log Analytics do Azure. Para obter mais informações, veja Transformação da área de trabalho.
  • Na maioria das regiões, os eventos estão disponíveis e entregues no destino da configuração no prazo de 30 minutos. Em casos menos comuns, alguns eventos podem demorar até 2 horas a serem entregues no destino.