Recolha registos de auditoria do Azure Storage

Compatível com:

Este documento explica como exportar registos de auditoria do armazenamento do Azure para o Google Security Operations através de uma conta de armazenamento do Azure. O analisador processa registos no formato JSON, transformando-os no modelo de dados unificado (UDM). Extrai campos do registo não processado, faz conversões de tipos de dados, enriquece os dados com contexto adicional (como a análise do agente do utilizador e a discriminação do endereço IP) e mapeia os campos extraídos para os campos correspondentes do UDM.

Antes de começar

Certifique-se de que cumpre os seguintes pré-requisitos:

  • Instância do Google SecOps
  • Um inquilino do Azure ativo
  • Acesso privilegiado ao Azure

Configure a conta de armazenamento do Azure

  1. Na consola do Azure, pesquise Contas de armazenamento.
  2. Clique em Criar.
  3. Especifique valores para os seguintes parâmetros de entrada:
    • Subscrição: selecione a subscrição.
    • Grupo de recursos: selecione o grupo de recursos.
    • Região: selecione a região.
    • Desempenho: selecione o desempenho (padrão recomendado).
    • Redundância: selecione a redundância (GRS ou LRS recomendado).
    • Nome da conta de armazenamento: introduza um nome para a nova conta de armazenamento.
  4. Clique em Rever + criar.
  5. Reveja a vista geral da conta e clique em Criar.
  6. Na página Vista geral da conta de armazenamento, selecione o submenu Chaves de acesso em Segurança + rede.
  7. Clique em Mostrar junto a key1 ou key2.
  8. Clique em Copiar para a área de transferência para copiar a chave.
  9. Guarde a chave num local seguro para utilização posterior.
  10. Na página Vista geral da conta de armazenamento, selecione o submenu Pontos finais em Definições.
  11. Clique em Copiar para a área de transferência para copiar o URL do ponto final do serviço Blob; por exemplo, https://<storageaccountname>.blob.core.windows.net.
  12. Guarde o URL do ponto final numa localização segura para utilização posterior.

Como configurar a exportação de registos para registos de auditoria do armazenamento do Azure

  1. Inicie sessão no Portal do Azure com a sua conta privilegiada.
  2. Aceda a Contas de armazenamento > Definições de diagnóstico.
  3. Clique em + Adicionar definição de diagnóstico.
  4. Selecione as definições de diagnóstico para blob, queue, table e file.
    • Selecione a opção allLogs em Grupos de categorias para cada definição de diagnóstico.
    • Introduza um nome descritivo para cada definição de diagnóstico.
  5. Selecione a caixa de verificação Arquivar numa conta de armazenamento como destino.
    • Especifique a Subscrição e a Conta de armazenamento.
  6. Clique em Guardar.

Configure feeds

Existem dois pontos de entrada diferentes para configurar feeds na plataforma Google SecOps:

  • Definições do SIEM > Feeds > Adicionar novo
  • Content Hub > Pacotes de conteúdo > Começar

Como configurar o feed de auditoria do armazenamento do Azure

  1. Clique no pacote Plataforma Azure.
  2. Localize o tipo de registo Azure Storage Audit e clique em Adicionar novo feed.
  3. Especifique valores para os seguintes campos:

    • Source Type: Microsoft Azure Blob Storage V2.
    • URI do Azure: o URL do ponto final do blob.
      • ENDPOINT_URL/BLOB_NAME
        • Substitua o seguinte:
          • ENDPOINT_URL: o URL do ponto final do blob (https://<storageaccountname>.blob.core.windows.net)
          • BLOB_NAME: o nome do blob (por exemplo, <logname>-logs)
    • Opções de eliminação de origens: selecione a opção de eliminação de acordo com as suas preferências de carregamento.

    • Idade máxima do ficheiro: inclui ficheiros modificados no último número de dias. A predefinição é 180 dias.

    • Chave partilhada: a chave de acesso ao armazenamento de blobs do Azure.

    Opções avançadas

    • Nome do feed: um valor pré-preenchido que identifica o feed.
    • Espaço de nomes do recurso: espaço de nomes associado ao feed.
    • Etiquetas de carregamento: etiquetas aplicadas a todos os eventos deste feed.
  4. Clique em Criar feed.

Para mais informações sobre a configuração de vários feeds para diferentes tipos de registos nesta família de produtos, consulte o artigo Configure feeds por produto.

Tabela de mapeamento da UDM

Campo de registo Mapeamento de UDM Lógica
callerIpAddress principal.asset.ip O endereço IP é extraído do campo callerIpAddress através de um padrão grok e atribuído a principal.asset.ip.
callerIpAddress principal.ip O endereço IP é extraído do campo callerIpAddress através de um padrão grok e atribuído a principal.ip.
callerIpAddress principal.port O número da porta é extraído do campo callerIpAddress através de 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 cadeia 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 uma 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 é definido como USER_RESOURCE_UPDATE_CONTENT. Se category for StorageDelete e principal.user.userid existir, o valor é definido como USER_RESOURCE_DELETION. Caso contrário, o valor é definido como USER_RESOURCE_ACCESS. A string literal AZURE_STORAGE_AUDIT está atribuída a event.idm.read_only_udm.metadata.log_type. A string literal AZURE_STORAGE_AUDIT está 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 está 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 cadeia 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 cadeia 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 cadeia 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 cadeia 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 cadeia 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 cadeia 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 cadeia 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 cadeia 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 agente do utilizador 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 está atribuída a target.resource.resource_type.
resourceType additional.fields[x].key A cadeia 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 é definido como ALLOW.
statusCode network.http.response_code O valor do campo statusCode é convertido num número inteiro e atribuído a network.http.response_code. A string literal MICROSOFT_AZURE está atribuída a target.cloud.environment.
time timestamp O valor do campo time é analisado como uma 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 da Google SecOps.