Coletar registros de auditoria do Azure Storage

Compatível com:

Este documento explica como exportar registros de auditoria do Azure Storage para o Google Security Operations usando uma conta do Azure Storage. O analisador processa registros no formato JSON, transformando-os no modelo de dados unificado (UDM). Ele extrai campos do registro bruto, realiza conversões de tipo de dados, enriquece os dados com contexto adicional (como análise do user agent e detalhamento do endereço IP) e mapeia os campos extraídos para os campos correspondentes da UDM.

Antes de começar

Verifique se você atende aos seguintes pré-requisitos:

  • Instância do Google SecOps
  • Um locatário ativo do Azure
  • Acesso privilegiado ao Azure

Configurar a conta de armazenamento do Azure

  1. No console do Azure, pesquise Contas de armazenamento.
  2. Clique em Criar.
  3. Especifique valores para os seguintes parâmetros de entrada:
    • Assinatura: selecione a assinatura.
    • Grupo de recursos: selecione o grupo de recursos.
    • Região: selecione a região.
    • Performance: selecione a performance (padrão recomendado).
    • Redundância: selecione a redundância (GRS ou LRS recomendado).
    • Nome da conta de armazenamento: insira um nome para a nova conta de armazenamento.
  4. Clique em Revisar + criar.
  5. Revise a visão geral da conta e clique em Criar.
  6. Na página Visão geral da conta de armazenamento, selecione o submenu Chaves de acesso em Segurança e rede.
  7. Clique em Mostrar ao lado de key1 ou key2.
  8. Clique em Copiar para a área de transferência para copiar a chave.
  9. Salve a chave em um local seguro para uso posterior.
  10. Na página Visão geral da conta de armazenamento, selecione o submenu Endpoints em Configurações.
  11. Clique em Copiar para a área de transferência para copiar o URL do endpoint do serviço de blob. Por exemplo, https://<storageaccountname>.blob.core.windows.net.
  12. Salve o URL do endpoint em um local seguro para uso posterior.

Como configurar a exportação de registros para registros de auditoria do Azure Storage

  1. Faça login no portal do Azure usando sua conta privilegiada.
  2. Acesse Contas de armazenamento > Configurações de diagnóstico.
  3. Clique em + Adicionar configuração de diagnóstico.
  4. Selecione as configurações de diagnóstico para blob, queue, table e file.
    • Selecione a opção allLogs em Grupos de categorias para cada configuração de diagnóstico.
    • Insira um nome descritivo para cada configuração de diagnóstico.
  5. Marque a caixa de seleção Arquivar em uma conta de armazenamento como destino.
    • Especifique a Assinatura e a Conta de armazenamento.
  6. Clique em Salvar.

Configurar feeds

Há dois pontos de entrada diferentes para configurar feeds na plataforma do Google SecOps:

  • Configurações do SIEM > Feeds > Adicionar novo
  • Central de conteúdo > Pacotes de conteúdo > Começar

Como configurar o feed de auditoria do armazenamento do Azure

  1. Clique no pacote Plataforma do Azure.
  2. Localize o tipo de registro Auditoria do armazenamento do Azure e clique em Adicionar novo feed.
  3. Especifique valores para os seguintes campos:

    • Tipo de origem: armazenamento de blobs V2 do Microsoft Azure.
    • URI do Azure: o URL do endpoint do blob.
      • ENDPOINT_URL/BLOB_NAME
        • Substitua:
          • ENDPOINT_URL: o URL do endpoint do blob (https://<storageaccountname>.blob.core.windows.net)
          • BLOB_NAME: o nome do blob (por exemplo, <logname>-logs)
    • Opções de exclusão de origem: selecione a opção de exclusão de acordo com suas preferências de ingestão.

    • Idade máxima do arquivo: inclui arquivos modificados no último número de dias. O padrão é de 180 dias.

    • Chave compartilhada: a chave de acesso ao Azure Blob Storage.

    Opções avançadas

    • Nome do feed: um valor pré-preenchido que identifica o feed.
    • Namespace do recurso: namespace associado ao feed.
    • Rótulos de ingestão: rótulos aplicados a todos os eventos deste feed.
  4. Clique em Criar feed.

Para mais informações sobre como configurar vários feeds para diferentes tipos de registros nessa família de produtos, consulte Configurar feeds por produto.

Tabela de mapeamento do UDM

Campo de registro Mapeamento do UDM Lógica
callerIpAddress principal.asset.ip O endereço IP é extraído do campo callerIpAddress usando um padrão grok e atribuído a principal.asset.ip.
callerIpAddress principal.ip O endereço IP é extraído do campo callerIpAddress usando um padrão grok e atribuído a principal.ip.
callerIpAddress principal.port O número da porta é extraído do campo callerIpAddress usando um padrão grok e atribuído a principal.port.
category security_result.category_details O valor do campo category é atribuído a security_result.category_details.
correlationId security_result.detection_fields[0].key A string literal correlationId é atribuída ao campo de chave.
correlationId security_result.detection_fields[0].value O valor do campo correlationId é atribuído a security_result.detection_fields[0].value. O valor do campo time é analisado como um carimbo de data/hora e atribuído a event.idm.read_only_udm.metadata.event_timestamp. Se category for StorageWrite e principal.user.userid existir (derivado de properties.accountName), o valor será definido como USER_RESOURCE_UPDATE_CONTENT. Se category for StorageDelete e principal.user.userid existir, o valor será definido como USER_RESOURCE_DELETION. Caso contrário, o valor será definido como USER_RESOURCE_ACCESS. A string literal AZURE_STORAGE_AUDIT é atribuída a event.idm.read_only_udm.metadata.log_type. A string literal AZURE_STORAGE_AUDIT é atribuída a event.idm.read_only_udm.metadata.product_name. O valor do campo schemaVersion é atribuído a event.idm.read_only_udm.metadata.product_version. A string literal AZURE_STORAGE_AUDIT é atribuída a event.idm.read_only_udm.metadata.vendor_name.
location target.location.name O valor do campo location é atribuído a target.location.name.
operationName additional.fields[x].key A string literal operationName é atribuída ao campo de chave.
operationName additional.fields[x].value.string_value O valor do campo operationName é atribuído a additional.fields[x].value.string_value.
operationVersion additional.fields[x].key A string literal operationVersion é atribuída ao campo de chave.
operationVersion additional.fields[x].value.string_value O valor do campo operationVersion é atribuído a additional.fields[x].value.string_value.
properties.accountName principal.user.userid O valor do campo properties.accountName é atribuído a principal.user.userid.
properties.clientRequestId additional.fields[x].key A string literal clientRequestId é atribuída ao campo de chave.
properties.clientRequestId additional.fields[x].value.string_value O valor do campo properties.clientRequestId é atribuído a additional.fields[x].value.string_value.
properties.etag additional.fields[x].key A string literal etag é atribuída ao campo de chave.
properties.etag additional.fields[x].value.string_value O valor do campo properties.etag é atribuído a additional.fields[x].value.string_value.
properties.objectKey additional.fields[x].key A string literal objectKey é atribuída ao campo de chave.
properties.objectKey additional.fields[x].value.string_value O valor do campo properties.objectKey é atribuído a additional.fields[x].value.string_value.
properties.requestMd5 additional.fields[x].key A string literal requestMd5 é atribuída ao campo de chave.
properties.requestMd5 additional.fields[x].value.string_value O valor do campo properties.requestMd5 é atribuído a additional.fields[x].value.string_value.
properties.responseMd5 additional.fields[x].key A string literal responseMd5 é atribuída ao campo de chave.
properties.responseMd5 additional.fields[x].value.string_value O valor do campo properties.responseMd5 é atribuído a additional.fields[x].value.string_value.
properties.serviceType additional.fields[x].key A string literal serviceType é atribuída ao campo de chave.
properties.serviceType additional.fields[x].value.string_value O valor do campo properties.serviceType é atribuído a additional.fields[x].value.string_value.
properties.tlsVersion network.tls.version O valor do campo properties.tlsVersion é atribuído a network.tls.version.
properties.userAgentHeader network.http.parsed_user_agent O valor do campo properties.userAgentHeader é analisado como uma string de user agent e atribuído a network.http.parsed_user_agent.
properties.userAgentHeader network.http.user_agent O valor do campo properties.userAgentHeader é atribuído a network.http.user_agent.
protocol network.application_protocol O valor do campo protocol é atribuído a network.application_protocol.
resourceId target.resource.id O valor do campo resourceId é atribuído a target.resource.id.
resourceId target.resource.product_object_id O valor do campo resourceId é atribuído a target.resource.product_object_id. A string literal DATABASE é atribuída a target.resource.resource_type.
resourceType additional.fields[x].key A string literal resourceType é atribuída ao campo de chave.
resourceType additional.fields[x].value.string_value O valor do campo resourceType é atribuído a additional.fields[x].value.string_value. Se statusText for Success, o valor será definido como ALLOW.
statusCode network.http.response_code O valor do campo statusCode é convertido em um número inteiro e atribuído a network.http.response_code. A string literal MICROSOFT_AZURE é atribuída a target.cloud.environment.
time timestamp O valor do campo time é analisado como um carimbo de data/hora e atribuído a timestamp.
uri network.http.referral_url O valor do campo uri é atribuído a network.http.referral_url.

Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.