Posted October 30, 20231 yr 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. [ATTACH=full]54839[/ATTACH] 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. [ATTACH=full]54840[/ATTACH] 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. [ATTACH=full]54841[/ATTACH] Para construir o workbook clique em “Pin to” conforme ilustrado na imagem e selecione a opção “Send to workbook”. [ATTACH=full]54842[/ATTACH] 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. [ATTACH=full]54843[/ATTACH] Com isso temos nosso workbook que nos ajudará a visualizar os recursos criados na Azure. [ATTACH=full]54844[/ATTACH] 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 Continue reading...
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.