Auditar e registar alterações a tarefas de incidentes em Microsoft Sentinel no portal do Azure

As tarefas de incidentes garantem um tratamento abrangente e uniforme dos incidentes em todo o pessoal do SOC. Normalmente, as listas de tarefas são definidas de acordo com as determinações feitas por analistas seniores ou gestores de SOC e colocadas em prática através de regras de automatização ou manuais de procedimentos.

Os seus analistas podem ver a lista de tarefas que precisam de realizar para um determinado incidente na página de detalhes do incidente e marcá-las como concluídas à medida que vão avançando. Os analistas também podem criar suas próprias tarefas no local, manualmente, diretamente do incidente.

Este artigo explica como você, como gerente do SOC, pode auditar o histórico das tarefas de incidentes do Microsoft Sentinel e acompanhar as alterações feitas nelas ao longo de todo o seu ciclo de vida, a fim de avaliar a eficácia das atribuições dessas tarefas e sua contribuição para a eficiência e o bom funcionamento do seu SOC.

Estrutura da matriz Tarefas na tabela SecurityIncident

A tabela SecurityIncident é uma tabela de auditoria— armazena não os incidentes em si, mas sim registos da vida útil de um incidente: a sua criação e quaisquer alterações efetuadas ao mesmo. Sempre que um incidente é criado ou é efetuada uma alteração a um incidente, é gerado um registo nesta tabela que mostra o estado atual do incidente.

A adição de campos de detalhamento de tarefas ao esquema da tabela SecurityIncident permite auditar tarefas com maior profundidade.

As informações detalhadas adicionadas ao campo Tarefas consistem em pares chave-valor com a seguinte estrutura:

Chave Descrição do valor
createdBy A identidade que criou a tarefa:
- email: endereço de email da identidade
- nome: nome da identidade
- objectId: GUID da identidade
- userPrincipalName: UPN da identidade
createdTimeUtc Hora em que a tarefa foi criada, em UTC.
lastCompletedTimeUtc Hora em que a tarefa foi marcada como concluída, em UTC.
lastModifiedBy A identidade que modificou a tarefa pela última vez:
- email: endereço de email da identidade
- nome: nome da identidade
- objectId: GUID da identidade
- userPrincipalName: UPN da identidade
lastModifiedTimeUtc Hora em que a tarefa foi modificada pela última vez, em UTC.
status Status atual da tarefa: Novo, Concluído, Eliminado.
taskId ID do recurso da tarefa.
title Nome amigável dado à tarefa pelo respetivo criador.

Ver tarefas de incidentes na tabela SecurityIncident

Além da pasta de trabalho Tarefas de incidente, você pode auditar a atividade da tarefa consultando a tabela SecurityIncident em Logs. Esta seção mostra como consultar a tabela e ler e entender os resultados para obter informações sobre a atividade da tarefa.

  1. Na página Registos , introduza a seguinte consulta na janela de consulta e execute-a. Esta consulta devolverá todos os incidentes que têm tarefas atribuídas.

    SecurityIncident
    | where array_length( Tasks) > 0
    

    Pode adicionar qualquer número de instruções à consulta para filtrar e restringir os resultados. Para demonstrar como ver e compreender os resultados, vamos adicionar instruções para filtrar os resultados para que apenas vejamos as tarefas de um único incidente e também adicionaremos uma project instrução para vermos apenas os campos que serão úteis para os nossos fins, sem muita confusão.

    Para obter mais informações, consulte visão geral da Linguagem de Consulta Kusto.

    SecurityIncident
    | where array_length( Tasks) > 0
    | where IncidentNumber == "405211"
    | sort by LastModifiedTime desc 
    | project IncidentName, Title, LastModifiedTime, Tasks
    
  2. Vamos analisar o registo mais recente deste incidente e encontrar a lista de tarefas associadas ao mesmo.

    1. Selecione o expansor ao lado da linha superior nos resultados da consulta (que foram classificados em ordem decrescente de atualidade).

      Captura de ecrã dos resultados da consulta a mostrar um incidente com as respetivas tarefas.

    2. O campo Tarefas é uma matriz do estado atual de todas as tarefas neste incidente. Selecione o expansor para ver cada item na matriz na sua própria linha.

      Captura de ecrã dos resultados da consulta a mostrar um incidente com as respetivas tarefas expandidas.

    3. Agora, verá que existem duas tarefas neste incidente. Cada uma delas é representada por uma matriz expansível. Selecione o expansor de uma única tarefa para ver as respetivas informações.

      Captura de tela dos resultados da consulta mostrando um incidente com uma única tarefa expandida.

    4. Aqui, verá os detalhes da primeira tarefa na matriz ("0" é a posição de índice da tarefa na matriz). O campo de título mostra o nome da tarefa conforme apresentado no incidente.

Ver tarefas adicionadas à lista

Execute os seguintes passos para adicionar uma tarefa a um incidente e observe como o registro do SecurityIncident muda.

  1. Vamos adicionar uma tarefa ao incidente e, em seguida, voltaremos aqui, executaremos a consulta novamente e veremos as alterações nos resultados.

    1. Na página Incidentes , introduza o número do ID do incidente na barra de Pesquisa.

    2. Abra a página de detalhes do incidente e selecione Tarefas na barra de ferramentas .

    3. Adicione uma nova tarefa, atribua-lhe o nome "Esta tarefa é uma tarefa de teste!" e, em seguida, selecione Guardar. A última tarefa mostrada abaixo é o que você deve obter:

      A captura de tela mostra o painel de tarefas do incidente.

  2. Agora vamos voltar à página Logs e executar novamente a consulta SecurityIncident .

    Nos resultados, verá que existe um novo registo na tabela para este mesmo incidente (tenha em atenção os carimbos de data/hora). Expanda o registo e verá que, embora o registo que vimos antes tivesse duas tarefas na respetiva matriz Tarefas , o novo tem três. A tarefa mais recente é aquela que acabámos de adicionar, como pode ver pelo respetivo título.

    Captura de tela dos resultados da consulta mostrando um incidente com a sua tarefa recém-criada.

Visualizar alterações de status das tarefas

Agora, se voltarmos para a tarefa intitulada "Esta tarefa é uma tarefa de teste!" na página de detalhes do incidente e marcá-la como concluída e, em seguida, voltar para Logs e executar novamente a consulta, veremos mais um novo registro para o mesmo incidente, desta vez mostrando o novo status da nossa tarefa como Concluído.

Captura de ecrã a mostrar os resultados da consulta que mostram uma tarefa de incidente com o respetivo novo status.

Ver eliminação de tarefas

Vamos voltar à lista de tarefas na página de detalhes do incidente e excluir a tarefa intitulada "Esta tarefa é uma tarefa de teste!".

Quando voltarmos aos Logs e reexecutarmos a consulta incident-tarefa, veremos outro novo registro, só que desta vez o status da nossa tarefa — o intitulado "Esta tarefa é uma tarefa de teste!" —será deletado.

No entanto, uma vez apresentada uma dessas vezes na matriz (com um status Eliminado), deixará de aparecer na matriz Tarefas em novos registos desse incidente na tabela SecurityIncident. Registros anteriores existentes do incidente continuarão a preservar as evidências de que essa tarefa já existiu.

Ver tarefas ativas pertencentes a um incidente fechado

A consulta seguinte permite-lhe ver se um incidente foi fechado, mas nem todas as tarefas atribuídas foram concluídas. Este conhecimento pode ajudá-lo a verificar se as extremidades pendentes restantes na sua investigação foram levadas a uma conclusão: todas as partes relevantes foram notificadas, todos os comentários foram introduzidos, todas as respostas foram verificadas, etc. A consulta usa a arg_max função de agregação para retornar apenas o registro mais recente de cada incidente e de cada tarefa, de modo que os resultados refletem o estado mais recente.

Execute a seguinte consulta para recuperar o registro mais recente de cada incidente, filtre incidentes encerrados e retorne quaisquer tarefas que ainda não tenham sido concluídas ou excluídas:

SecurityIncident
| summarize arg_max(TimeGenerated, *) by IncidentNumber
| where Status == 'Closed'
| mv-expand Tasks
| evaluate bag_unpack(Tasks)
| summarize arg_max(lastModifiedTimeUtc, *) by taskId
| where status !in ('Completed', 'Deleted')
| project TaskTitle = ['title'], TaskStatus = ['status'], createdTimeUtc, lastModifiedTimeUtc = column_ifexists("lastModifiedTimeUtc", datetime(null)), TaskCreator = ['createdBy'].name, lastModifiedBy, IncidentNumber, IncidentOwner = Owner.userPrincipalName
| sort by lastModifiedTimeUtc desc

Para mais informações sobre os operadores e funções de Kusto usados nas consultas de exemplo deste artigo, veja:

Para obter mais informações sobre o KQL, veja Descrição geral do Linguagem de Consulta Kusto (KQL).

Outros recursos:

Próximas etapas