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:
- Integrar logs de atividades com logs do Azure Monitor
- Configurar diagnosticSettings por meio da API de Resource Manager do Azure
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.
Conteúdo relacionado
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários