Monitorando Recursos Criados na Azure com Kusto Query Language (KQL) e Log Analytics
Published Oct 30 2023 07:35 AM 1,630 Views
Microsoft

Monitorando Recursos Criados na Azure com Kusto Query Language (KQL) e Log Analytics

Este artigo técnico destina-se a fornecer uma visão geral básica de como monitorar recursos recém-criados na plataforma Microsoft Azure usando a Linguagem de Consulta Kusto (KQL) e o recurso Log Analytics. O AzureActivity é uma tabela especial do Log Analytics que registra todas as atividades do Azure. Através da análise e filtragem dos registros nesta tabela usando KQL, é possível identificar e acompanhar recursos criados recentemente, auxiliando na detecção de possíveis eventos indesejados ou suspeitos.

 

Introdução

O monitoramento de atividades em nuvem é essencial para garantir a segurança, o desempenho e a conformidade das implantações na Microsoft Azure. A tabela AzureActivity, disponível no serviço Log Analytics, fornece informações detalhadas sobre todas as atividades realizadas em uma assinatura do Azure, incluindo criação de recursos, atualizações e exclusões. Usando a Linguagem de Consulta Kusto (KQL), podemos filtrar e analisar esses registros para obter insights valiosos sobre os recursos recém-criados.

fabiodasilva_2-1690914713738.png

 

 

Pré-requisitos:

  • Uma conta do Microsoft Azure com permissões de acesso ao serviço Log Analytics.
  • Familiaridade básica com Kusto Query Language (KQL) e conceitos de Log Analytics.

Passo 1: Acessando o Log Analytics e a tabela AzureActivity

Antes de começar a consulta, certifique-se de que possui acesso ao serviço Log Analytics e à tabela AzureActivity em sua assinatura do Azure. Verifique se você possui permissões adequadas para executar consultas no Log Analytics.

Passo 2: Escrevendo a Consulta Kusto (KQL)

A consulta Kusto que utilizaremos para monitorar recursos criados na Azure é a seguinte:

 

 

 

AzureActivity
| where TimeGenerated > ago(7d)
| extend isValidGuid = Caller matches regex "[A-Fa-f0-9]{8}-[A-Fa-f0-9]{4}-[1-5][A-Fa-f0-9]{3}-[89ABab][A-Fa-f0-9]{3}-[A-Fa-f0-9]{12}"
| where OperationNameValue endswith "Write" and ActivitySubstatusValue contains "Created" and not (isValidGuid)
| where not( OperationNameValue has_any ("Deployments","SSHPUBLICKEYS","NETWORKWATCHERS","VIRTUALMACHINES/EXTENSIONS","ACTIONGROUPS","SCHEDULEDQUERYRULES"))
| order by TimeGenerated asc
| project SubscriptionId, ResourceGroup, Caller, CallerIpAddress, OperationNameValue, ActivitySubstatusValue, _ResourceId

 

 

 

Passo 3: Explicação da Consulta Agora, vamos entender cada etapa da consulta Kusto:

  • A cláusula AzureActivity indica que estamos consultando a tabela AzureActivity.
  • | where TimeGenerated > ago(7d): Filtra os registros para incluir apenas aqueles gerados nos últimos 7 dias.
  • | extend isValidGuid = Caller matches regex "[A-Fa-f0-9]{8}-[A-Fa-f0-9]{4}-[1-5][A-Fa-f0-9]{3}-[89ABab][A-Fa-f0-9]{3}-[A-Fa-f0-9]{12}": Cria uma nova coluna chamada isValidGuid que verifica se o valor da coluna Caller corresponde a um padrão de GUID válido.
  • | where OperationNameValue endswith "Write" and ActivitySubstatusValue contains "Created" and not (isValidGuid): Filtra os registros para incluir apenas aqueles em que:
    • OperationNameValue termina com a string "Write".
    • ActivitySubstatusValue contém a string "Created".
    • isValidGuid é falso, ou seja, o valor da coluna Caller não corresponde a um GUID válido.
  • | where not( OperationNameValue has_any ("Deployments","SSHPUBLICKEYS","NETWORKWATCHERS","VIRTUALMACHINES/EXTENSIONS","ACTIONGROUPS","SCHEDULEDQUERYRULES")): Filtra os registros para excluir aqueles em que o valor da coluna OperationNameValue tem algumas strings específicas, como "Deployments" e "VIRTUALMACHINES/EXTENSIONS".
  • | order by TimeGenerated asc: Classifica os resultados em ordem crescente com base no valor da coluna TimeGenerated.
  • | project SubscriptionId, ResourceGroup, Caller, CallerIpAddress, OperationNameValue, ActivitySubstatusValue, _ResourceId: Exibe apenas as colunas SubscriptionId, ResourceGroup, Caller, CallerIpAddress, OperationNameValue, ActivitySubstatusValue e _ResourceId nos resultados.

Passo 4: Verificando os registros

Ao executar esta query no workspace do log Analytics onde os logs de atividades estão sendo armazenado, consigo verificar a lista de recursos criados nos últimos 7 dias.

fabiodasilva_3-1690914713753.png

 

Passo 5: Visualizando os dados através de um workbook

Uma possibilidade será criar um alerta ou visualizar as informações através de painel de monitoramento ou de um workbook.

Iremos comentar  a linha 2 da query correspondente ao time range desejado, pois iremos usar um parâmetro de “TimeRange” do Workbook.

fabiodasilva_4-1690914713757.png

 

Para construir o workbook clique em “Pin to” conforme ilustrado na imagem e selecione a opção “Send to workbook”.

fabiodasilva_5-1690914713761.png

 

Podemos criar um workbook ou usar um existente, mas no nosso caso iremos criar um novo workbook para visualização dos recursos criados. Marque a opção “Add a time range parameter ans have generated steps reference it” e selecione o query correspondente conforme ilustrado na imagem.

fabiodasilva_6-1690914713765.png

 

Com isso temos nosso workbook que nos ajudará a visualizar os recursos criados na Azure.

fabiodasilva_7-1690914713771.png

 

Conclusão

Através da Linguagem de Consulta Kusto (KQL) e da tabela AzureActivity no Log Analytics, podemos monitorar e rastrear recursos recém-criados na plataforma Azure. A consulta apresentada neste artigo permite identificar atividades suspeitas e potencialmente indesejadas, ajudando os administradores a garantirem a segurança e o compliance de suas implantações na nuvem. Monitore constantemente a tabela AzureActivity e adapte suas consultas conforme necessário para manter seu ambiente seguro e eficiente na Microsoft Azure.

Mais informações

Azure activity log - Azure Monitor | Microsoft Learn

Kusto Query Language (KQL) overview | Microsoft Learn

Creating an Azure Workbook - Azure Monitor | Microsoft Learn

Overview of Azure Monitor alerts - Azure Monitor | Microsoft Learn

 

Co-Authors
Version history
Last update:
‎Sep 13 2023 11:38 AM
Updated by: