Acessar logs de atividades do Microsoft Graph

Os logs de atividades do Microsoft Graph são um rastro de auditoria de todas as solicitações HTTP recebidas e processadas pelo serviço Microsoft Graph para um locatário. Os administradores de locatários podem habilitar a coleção e configurar destinos downstream para esses logs usando configurações de diagnóstico no Azure Monitor. Os logs são armazenados no Log Analytics para análise e você pode exportá-los para o Armazenamento do Azure para armazenamento de longo prazo ou transmitir com Hubs de Eventos do Azure para ferramentas SIEM externas para alerta, análise ou arquivamento.

Todos os logs para solicitações de API feitas de aplicativos de negócios, clientes de API, SDKs e aplicativos da Microsoft, como Outlook, Microsoft Teams ou centro de administração do Microsoft Entra estão disponíveis.

Esse serviço está disponível nas seguintes implantações nacionais de nuvem.

Serviço global Governo dos EUA L4 GOVERNO DOS EUA L5 (DOD) China operada pela 21Vianet

Pré-requisitos

Para acessar os logs de atividades do Microsoft Graph, você precisa dos seguintes privilégios.

  • Um Microsoft Entra ID licença de locatário P1 ou P2 em seu locatário.
  • Um administrador com uma das seguintes funções de administrador Microsoft Entra listadas na ordem de função menos privilegiada.
    • Administrador de Segurança – Para configurar as configurações de diagnóstico
    • Administrador Global – Para configurar as configurações de diagnóstico
  • Uma assinatura do Azure com um dos seguintes destinos de log estão configuradas e permissões para acessar dados nos destinos de log correspondentes.
    • Um workspace do Azure Log Analytics para enviar logs para o Azure Monitor
    • Uma conta de armazenamento do Azure para a qual você tem permissões de Chaves de Lista
    • Um namespace Hubs de Eventos do Azure para integrar com soluções de terceiros

Quais dados estão disponíveis nos logs de atividades do Microsoft Graph?

Os dados a seguir relacionados a solicitações de API estão disponíveis para logs de atividades do Microsoft Graph na interface do Logs Analytics.

Coluna Tipo Descrição
AadTenantId string A Azure AD ID do locatário.
ApiVersion string A versão da API do evento.
Appid string O identificador do aplicativo.
ATContent string Reserved for future use.
_BilledSize Real O tamanho do registro em bytes
ClientAuthMethod int Indica como o cliente foi autenticado. Para um cliente público, o valor é 0. Se a ID do cliente e o segredo do cliente forem usados, o valor será 1. Se um certificado de cliente foi usado para autenticação, o valor será 2.
ClientRequestId string Opcional. O identificador de solicitação do cliente quando enviado. Se nenhum identificador de solicitação de cliente for enviado, o valor será igual ao identificador de operação.
DurationMs int A duração da solicitação em milissegundos.
IdentityProvider cadeia de caracteres O provedor de identidade que autenticou o assunto do token.
IPAddress cadeia de caracteres O endereço IP do cliente de onde a solicitação ocorreu.
_IsBillable string Especifica se a ingestão dos dados é faturada. Quando _IsBillable é false ingestão não é cobrado para sua conta do Azure
Local string O nome da região que atendeu à solicitação.
Operationid cadeia de caracteres O identificador do lote. Para solicitações não em lotes, isso será exclusivo por solicitação. Para solicitações em lote, isso será o mesmo para todas as solicitações no lote.
RequestId cadeia de caracteres O identificador que representa a solicitação.
RequestMethod cadeia de caracteres O método HTTP do evento.
Requesturi cadeia de caracteres O URI da solicitação.
ResponseSizeBytes int O tamanho da resposta em Bytes.
ResponseStatusCode int A resposta HTTP status código para o evento.
Funções string As funções em declarações de token.
Scopes cadeia de caracteres Os escopos em declarações de token.
ServicePrincipalId string O identificador do servicePrincipal que faz a solicitação.
SignInActivityId cadeia de caracteres O identificador que representa as atividades de entrada.
SourceSystem string O tipo de agente pelo qual o evento foi coletado. Por exemplo, OpsManager para o agente do Windows, conectão direta ou Operations Manager, Linux para todos os agentes linux ou Azure para Diagnóstico do Azure
TenantId string A ID do workspace do Log Analytics
TimeGenerated datetime A data e a hora em que a solicitação foi recebida.
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 usuário relacionadas à solicitação.
UserId string O identificador do usuário que faz a solicitação.
Wids string Denota as funções em todo o locatário atribuídas a esse usuário.

Casos de uso comuns para logs de atividades do Microsoft Graph

  • Obtenha visibilidade total das transações feitas por aplicativos e outros clientes de API aos quais você consentiu no locatário.
  • Identifique as atividades que uma conta de usuário comprometida realizou em seu locatário.
  • Criar detecções e análise comportamental para identificar o uso suspeito ou anômômal das APIs do Microsoft Graph.
  • Investigue a atribuição privilegiada inesperada ou suspeita de permissões de aplicativo.
  • Identifique comportamentos problemáticos ou inesperados para aplicativos cliente, como volumes de chamadas extremos.
  • Correlacionar solicitações do Microsoft Graph feitas por um usuário ou aplicativo com informações de entrada.

Configurar para receber os logs de atividades do Microsoft Graph

Você pode configurar para transmitir os logs por meio da Configuração de Diagnóstico no portal do Azure ou por meio das APIs Resource Manager do Azure. Para obter mais informações, confira as diretrizes nos seguintes artigos:

Os artigos a seguir orientam você a configurar os destinos de armazenamento:

Estimativas de planejamento de custos

Se você já tiver uma licença Microsoft Entra ID P1, precisará de uma assinatura do Azure para configurar o workspace do Log Analytics, a conta de armazenamento ou os Hubs de Eventos. A assinatura do Azure não tem nenhum custo, mas você precisa pagar para utilizar recursos do Azure.

A quantidade de dados registrados e, portanto, o custo incorrido, pode variar significativamente dependendo do tamanho do locatário e dos aplicativos em seu locatário que interagem com APIs do Microsoft Graph. A tabela a seguir fornece algumas estimativas para o tamanho dos dados de log para ajudar no cálculo de preço. Use essas estimativas apenas para consideração geral.

Usuários no locatário GiB/mês de armazenamento Mensagens/mês dos Hubs de Eventos GiB/mês de logs do Azure Monitor
1000 14 62K 15
100000 1000 4.8M 1200

Confira os seguintes cálculos de preços para os respectivos serviços:

Redução de custos para o Log Analytics

Se você estiver ingerindo os logs em um Workspace do Log Analytics, mas estiver interessado apenas em logs filtrados por um critério, como omitir determinadas colunas ou linhas, poderá reduzir parcialmente os custos aplicando uma transformação de workspace na tabela Logs de Atividades do Microsoft Graph. Para saber mais sobre transformações de workspace, como ela afeta os custos de ingestão e como aplicar uma transformação aos logs de atividades do Microsoft Graph, confira Transformações de coleta de dados no Azure Monitor.

Uma abordagem alternativa para reduzir o custo do Log Analytics é alternar para o plano básico de dados de log que reduz as contas fornecendo recursos reduzidos. Para obter mais informações, consulte Definir o plano de dados de log de uma tabela como Básico ou Análise.

Exemplos de consulta de logs do Azure Monitor

Se você enviar logs de atividades do Microsoft Graph para um workspace do Log Analytics, poderá consultar os logs usando Linguagem de Consulta Kusto (KQL). Para obter mais informações sobre consultas no Workspace do Log Analytics, consulte Analisar Microsoft Entra logs de atividades com o Log Analytics. Você pode usar essas consultas para exploração de dados, criar regras de alerta, criar painéis do Azure ou integrar em seus aplicativos personalizados usando a API de Logs do Azure Monitor ou o SDK de Consulta.

A consulta kusto a seguir identifica as 20 principais entidades que fazem solicitações aos grupos de recursos que estão falhando 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 consulta kusto a seguir identifica recursos consultados ou modificados por usuários potencialmente arriscados:

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 consulta Kusto a seguir permite correlacionar os logs de atividade e os logs de entrada do Microsoft Graph. Os logs de atividades de aplicativos da Microsoft podem não ter entradas de log correspondentes. Para obter mais informações, confira Limitações conhecidas de logs de entrada.

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

A consulta Kusto a seguir identifica aplicativos que estão sendo limitados:

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 a seguir permite que você renderize 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

  • O recurso logs de atividades do Microsoft Graph permite que os administradores de locatário coletem logs para o locatário do recurso. Esse recurso não permite que você veja as atividades de um aplicativo multilocatário em outro locatário.
  • Você não pode filtrar logs de atividades do Microsoft Graph por meio de configurações de diagnóstico no Azure Monitor. No entanto, as opções estão disponíveis para reduzir custos no Workspace do Log Analytics do Azure. Para obter mais informações, confira Transformação do Workspace.
  • Na maioria das regiões, os eventos estarão disponíveis entregues ao destino de configuração dentro de 30 minutos. Em casos menos comuns, alguns eventos podem levar até duas horas para serem entregues ao destino.