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
  • Central de conteúdo > Pacotes de conteúdo

Configure feeds em Configurações do SIEM > Feeds

Para configurar vários feeds para diferentes tipos de registros nessa família de produtos, consulte Configurar feeds por produto.

Para configurar um único feed, siga estas etapas:

  1. Acesse Configurações do SIEM > Feeds.
  2. Clique em Adicionar novo feed.
  3. Na próxima página, clique em Configurar um único feed.
  4. No campo Nome do feed, insira um nome para o feed, por exemplo, Registros de auditoria do Armazenamento do Azure.
  5. Selecione Microsoft Azure Blob Storage como o Tipo de origem.
  6. Selecione Auditoria do Azure Storage como o Tipo de registro.
  7. Clique em Próxima.
  8. Especifique valores para os seguintes parâmetros de entrada:

    • 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)
    • URI é um: selecione o TIPO DE URI de acordo com a configuração do fluxo de registros (Arquivo único | Diretório | Diretório que inclui subdiretórios).
    • Opções de exclusão de origem: selecione a opção de exclusão de acordo com suas preferências de ingestão.

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

    • Namespace do recurso: o namespace do recurso.

    • Rótulos de ingestão: o rótulo a ser aplicado aos eventos deste feed.

  9. Clique em Próxima.

  10. Revise a nova configuração do feed na tela Finalizar e clique em Enviar.

Configurar feeds na Central de conteúdo

Especifique valores para os seguintes campos:

  • 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)
  • URI é um: selecione o TIPO DE URI de acordo com a configuração do fluxo de registros (Arquivo único | Diretório | Diretório que inclui subdiretórios).
  • Opções de exclusão de origem: selecione a opção de exclusão de acordo com suas preferências de ingestão.
  • 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.
  • Tipo de origem: método usado para coletar registros no Google SecOps.
  • Namespace do recurso: namespace associado ao feed.
  • Rótulos de ingestão: rótulos aplicados a todos os eventos deste feed.

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.