Coletar registros personalizados da análise de dados de segurança

Compatível com:

Este documento explica como ingerir dados personalizados de análise de segurança no Google Security Operations usando vários métodos de ingestão. Este guia é para fontes de dados de segurança personalizadas que não têm um analisador ou tipo de registro pré-criado.

A análise de dados de segurança personalizada abrange telemetria de segurança proprietária, registros de aplicativos personalizados, ferramentas de segurança internas ou qualquer dado relevante para a segurança de fontes sem integração nativa do Google SecOps. É possível ingerir esses dados como registros não estruturados e, opcionalmente, normalizá-los usando analisadores personalizados.

Antes de começar

Verifique se você tem os pré-requisitos a seguir:

  • Uma instância do Google SecOps
  • Fonte de dados de segurança personalizada capaz de exportar registros em JSON, CSV, SYSLOG ou outros formatos estruturados
  • Acesso a uma das seguintes opções:
    • Console do Google Cloud (para criação de chaves de API e GCS)
    • Console da AWS (para S3 ou Firehose)
    • Portal do Azure (para o Armazenamento de Blobs do Azure)
    • Cliente ou aplicativo HTTP capaz de enviar solicitações de webhook
  • Permissões para criar e gerenciar feeds no Google SecOps

Escolher o método de ingestão

O Google SecOps aceita vários métodos de ingestão para dados de segurança personalizados. Selecione o método que melhor se adapta aos recursos da sua fonte de dados:

Método de ingestão Caso de uso Latência Complexidade da configuração
Webhook Push em tempo real de aplicativos Segundos Baixo
Amazon S3 V2 Exportação em lote para um bucket do S3 Minutos a horas Médio
Google Cloud Storage V2 Exportação em lote para o bucket do GCS Minutos a horas Médio
Armazenamento de blobs do Azure V2 Exportação em lote para o Azure Storage Minutos a horas Médio
Amazon Data Firehose Streaming em tempo real da AWS Segundos Alta

Opção 1: ingestão de webhook (push em tempo real)

Use esse método quando seu aplicativo de segurança personalizado puder enviar solicitações HTTP POST para um endpoint externo.

Criar um feed de webhook no Google SecOps

Criar o feed

  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, custom-security-analytics-webhook).
  5. Selecione Webhook como o Tipo de origem.
  6. Selecione Análise de dados de segurança personalizada como o Tipo de registro.
  7. Clique em Próxima.
  8. Especifique valores para os seguintes parâmetros de entrada:
    • Delimitador de divisão: opcional. Insira um delimitador para dividir eventos de várias linhas. Valores comuns:
      • \n: delimitador de nova linha (mais comum para NDJSON)
      • Deixe em branco se cada solicitação contiver um único evento.
    • 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.

Gerar e salvar a chave secreta

Depois de criar o feed, gere uma chave secreta para autenticação:

  1. Na página de detalhes do feed, clique em Gerar chave secreta.
  2. Uma caixa de diálogo mostra a chave secreta.
  3. Copie e salve a chave secreta com segurança.

Receber o URL do endpoint do feed

  1. Acesse a guia Detalhes do feed.
  2. Na seção Informações do endpoint, copie o URL do endpoint do feed.
  3. O formato do URL é:

    https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate
    

    ou

    https://<REGION>-malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate
    
  4. Salve esse URL para as próximas etapas.

  5. Clique em Concluído.

Criar chave de API do Google Cloud

O Google SecOps exige uma chave de API para autenticação. Crie uma chave de API restrita no console do Google Cloud.

Criar a chave de API

  1. Acesse a página "Credenciais" do Console do Google Cloud.
  2. Selecione seu projeto (o projeto associado à sua instância do Chronicle).
  3. Clique em Criar credenciais > Chave de API.
  4. Uma chave de API é criada e mostrada em uma caixa de diálogo.
  5. Clique em Editar chave de API para restringir a chave.

Restringir a chave de API

  1. Na página de configurações da chave de API:
    • Nome: insira um nome descritivo, por exemplo, Chronicle Webhook API Key.
  2. Em Restrições de API:
    1. Selecione Restringir chave.
    2. No menu suspenso Selecionar APIs, pesquise e selecione API Google SecOps (ou API Chronicle).
  3. Clique em Salvar.
  4. Copie o valor da chave de API do campo Chave de API na parte de cima da página.
  5. Salve a chave de API com segurança.

Configurar seu aplicativo personalizado para enviar dados

Configure seu aplicativo ou script de segurança personalizado para enviar solicitações HTTP POST ao endpoint de webhook do Chronicle.

Construa o URL do webhook:

  • Combine o URL do endpoint do Chronicle e a chave de API:

    <ENDPOINT_URL>?key=<API_KEY>
    

    Exemplo:

    https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate?key=AIzaSyD...
    

Formato da solicitação HTTP:

  • Método:POST

  • URL:

    <ENDPOINT_URL>?key=<API_KEY>
    
  • Cabeçalhos:

    Content-Type: application/json
    x-chronicle-auth: <SECRET_KEY>
    
  • Corpo (evento único):

    {
        "timestamp": "2025-01-15T10:30:00Z",
        "event_type": "authentication",
        "user": "john.doe@example.com",
        "action": "login",
        "result": "success",
        "source_ip": "203.0.113.45",
        "custom_field_1": "value1",
        "custom_field_2": "value2"
    }
    
  • Corpo (vários eventos com delimitador de nova linha):

    {"timestamp": "2025-01-15T10:30:00Z", "event_type": "authentication", "action": "login"}
    {"timestamp": "2025-01-15T10:30:05Z", "event_type": "file_access", "action": "read"}
    {"timestamp": "2025-01-15T10:30:10Z", "event_type": "authentication", "action": "logout"}
    

Exemplos:

  • Exemplo: script Python:

    import requests
    import json
    from datetime import datetime
    
    # Configuration
    ENDPOINT_URL = "https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate"
    API_KEY = "your-api-key-here"
    SECRET_KEY = "your-secret-key-here"
    
    # Construct full URL
    url = f"{ENDPOINT_URL}?key={API_KEY}"
    
    # Headers
    headers = {
        "Content-Type": "application/json",
        "x-chronicle-auth": SECRET_KEY
    }
    
    # Sample event
    event = {
        "timestamp": datetime.utcnow().isoformat() + "Z",
        "event_type": "custom_security_event",
        "severity": "high",
        "source": "custom_security_tool",
        "message": "Suspicious activity detected",
        "user": "admin@example.com",
        "ip_address": "192.168.1.100"
    }
    
    # Send request
    response = requests.post(url, headers=headers, data=json.dumps(event))
    
    if response.status_code == 200:
        print("Event sent successfully")
    else:
        print(f"Error: {response.status_code} - {response.text}")
    
  • Exemplo: comando cURL:

    curl -X POST \
        "https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate?key=YOUR_API_KEY" \
        -H "Content-Type: application/json" \
        -H "x-chronicle-auth: YOUR_SECRET_KEY" \
        -d '{
            "timestamp": "2025-01-15T10:30:00Z",
            "event_type": "security_alert",
            "severity": "critical",
            "source": "custom_tool",
            "message": "Threat detected"
        }'
    

Referência de métodos de autenticação

Os feeds de webhook do Google SecOps são compatíveis com vários métodos de autenticação. Escolha o método compatível com seu aplicativo.

Se o aplicativo for compatível com cabeçalhos HTTP personalizados, use esse método para aumentar a segurança.

  • Formato da solicitação:

    POST <ENDPOINT_URL> HTTP/1.1
    Content-Type: application/json
    x-goog-chronicle-auth: <API_KEY>
    x-chronicle-auth: <SECRET_KEY>
    
    {
      "event": "data",
      "timestamp": "2025-01-15T10:30:00Z"
    }
    
  • Vantagens:

    • A chave de API e o secret não ficam visíveis no URL.
    • Mais seguro porque os cabeçalhos não são registrados nos registros de acesso do servidor da Web.
    • Método preferido quando o aplicativo é compatível.

Método 2: parâmetros de consulta

Se o aplicativo não for compatível com cabeçalhos personalizados, adicione as credenciais ao URL.

  • Formato do URL:

    <ENDPOINT_URL>?key=<API_KEY>&secret=<SECRET_KEY>
    

    Exemplo:

    https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate?key=AIzaSyD...&secret=abcd1234...
    
  • Formato da solicitação:

    POST <ENDPOINT_URL>?key=<API_KEY>&secret=<SECRET_KEY> HTTP/1.1
    Content-Type: application/json
    
    {
      "event": "data",
      "timestamp": "2025-01-15T10:30:00Z"
    }
    
  • Desvantagens:

    • As credenciais estão visíveis no URL.
    • As credenciais podem ser registradas em registros de acesso do servidor da Web.
    • Menos seguro do que os cabeçalhos.

Método 3: híbrido (URL + cabeçalho)

Algumas configurações usam a chave de API no URL e a chave secreta no cabeçalho.

  • Formato da solicitação:

    POST <ENDPOINT_URL>?key=<API_KEY> HTTP/1.1
    Content-Type: application/json
    x-chronicle-auth: <SECRET_KEY>
    
    {
        "event": "data",
        "timestamp": "2025-01-15T10:30:00Z"
    }
    

Limites e práticas recomendadas de webhook

Limites de solicitações

Limite Valor
Tamanho máximo da solicitação 4 MB
QPS máximo (consultas por segundo) 15.000
Tempo limite da solicitação 30 segundos
Comportamento de repetição Automático com espera exponencial

Práticas recomendadas

  • Eventos em lote: envie vários eventos em uma única solicitação usando o formato JSON delimitado por nova linha (NDJSON) para reduzir a sobrecarga.
  • Inclua carimbos de data/hora: sempre inclua um campo de carimbo de data/hora no formato ISO 8601 para ordenar os eventos com precisão.
  • Use dados estruturados: envie dados no formato JSON para facilitar a análise e a extração de campos.
  • Implemente a lógica de repetição: lide com falhas temporárias com espera exponencial.
  • Monitorar códigos de resposta: registrar e alertar sobre respostas diferentes de 200.

Opção 2: ingestão do Amazon S3 V2 (exportação em lote)

Use esse método quando seu aplicativo de segurança personalizado puder exportar registros para um bucket do Amazon S3.

Criar um bucket do Amazon S3

  1. Abra o console do Amazon S3.
  2. Clique em Criar bucket.
  3. Informe os seguintes detalhes de configuração:
    • Nome do bucket: insira um nome significativo para o bucket (por exemplo, custom-security-analytics-logs).
    • Região: selecione sua região da AWS preferida (por exemplo, us-east-1).
  4. Clique em Criar.

Criar um usuário do IAM com acesso ao S3

  1. Abra o console do IAM.
  2. Clique em Usuários > Adicionar usuário.
  3. Digite um nome de usuário (por exemplo, chronicle-s3-reader).
  4. Selecione Acesso programático.
  5. Clique em Next: Permissions.
  6. Escolha Anexar políticas atuais diretamente.
  7. Pesquise e selecione AmazonS3FullAccess.
  8. Clique em Avançar: tags.
  9. Clique em PRÓXIMO: REVISAR.
  10. Clique em Criar usuário.
  11. Clique em Baixar arquivo .csv para salvar o ID da chave de acesso e a chave de acesso secreta.
  12. Clique em Fechar.

Configurar o aplicativo para exportar para o S3

Configure seu aplicativo de segurança personalizado para gravar arquivos de registro no bucket do S3. O aplicativo precisa:

  • Grave registros em um formato estruturado (JSON, CSV ou texto simples).
  • Use uma convenção de nomenclatura de arquivos consistente.
  • Opcional: organize os arquivos por data (por exemplo, logs/2025/01/15/events.json).
  • Grave arquivos completos (evite gravações parciais).

  • Exemplo de estrutura de arquivo:

    s3://custom-security-analytics-logs/
    ├── security-events/
    │   ├── 2025/01/15/
    │   │   ├── events-10-00.json
    │   │   ├── events-11-00.json
    │   │   └── events-12-00.json
    
  • Exemplo de formato de arquivo de registro (NDJSON):

    {"timestamp": "2025-01-15T10:00:00Z", "event_type": "login", "user": "alice@example.com", "result": "success"}
    {"timestamp": "2025-01-15T10:05:00Z", "event_type": "file_access", "user": "bob@example.com", "file": "/data/sensitive.txt"}
    {"timestamp": "2025-01-15T10:10:00Z", "event_type": "logout", "user": "alice@example.com"}
    

Configurar o feed do Google SecOps para o S3

  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, custom-security-analytics-s3).
  5. Selecione Amazon S3 V2 como o Tipo de origem.
  6. Selecione Análise de dados de segurança personalizada como o Tipo de registro.
  7. Clique em Próxima.
  8. Especifique valores para os seguintes parâmetros de entrada:

    • URI do S3: o URI do bucket no formato: s3://custom-security-analytics-logs/security-events/

    • Opção de exclusão da fonte: selecione a opção de exclusão de acordo com sua preferência:

      • Nunca: nunca exclui arquivos após as transferências (recomendado para testes).
      • Excluir arquivos transferidos: exclui os arquivos após a transferência ser concluída.
      • Excluir arquivos transferidos e diretórios vazios: exclui arquivos e diretórios vazios após a transferência bem-sucedida.
    • Idade máxima do arquivo: inclui arquivos modificados nos últimos dias (o padrão é 180 dias).

    • ID da chave de acesso: insira a chave de acesso do usuário do IAM.

    • Chave de acesso secreta: insira a chave secreta do usuário do IAM.

    • 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.

Opção 3: ingestão do Google Cloud Storage V2 (exportação em lote)

Use esse método quando seu aplicativo de segurança personalizado puder exportar registros para um bucket do Google Cloud Storage.

Crie o bucket do GCS

  1. Acesse o Console do Google Cloud.
  2. Selecione seu projeto ou crie um novo.
  3. No menu de navegação, acesse Cloud Storage > Buckets.
  4. Clique em Criar bucket.
  5. Informe os seguintes detalhes de configuração:

    Configuração Valor
    Nomeie seu bucket Insira um nome exclusivo globalmente, por exemplo, custom-security-analytics-logs.
    Tipo de local Escolha com base nas suas necessidades (região, birregional, multirregional)
    Local Selecione o local (por exemplo, us-central1).
    Classe de armazenamento Padrão (recomendado para registros acessados com frequência)
    Controle de acesso Uniforme (recomendado)
    Ferramentas de proteção Opcional: ativar o controle de versões de objetos ou a política de retenção
  6. Clique em Criar.

Configurar o aplicativo para exportar para o GCS

Configure seu aplicativo de segurança personalizado para gravar arquivos de registro no bucket do GCS usando um dos seguintes métodos:

  • SDK Google Cloud: use gsutil ou bibliotecas de cliente
  • Conta de serviço: crie uma conta de serviço com o papel de criador de objetos do Storage.
  • URLs assinados: gere URLs assinados para acesso temporário de gravação.

  • Exemplo usando gsutil:

    gsutil cp /path/to/logs/events.json gs://custom-security-analytics-logs/security-events/
    
  • Exemplo usando a biblioteca de cliente Python:

    from google.cloud import storage
    import json
    
    # Initialize client
    client = storage.Client()
    bucket = client.bucket('custom-security-analytics-logs')
    
    # Upload log file
    blob = bucket.blob('security-events/2025/01/15/events.json')
    
    # Write NDJSON data
    events = [
        {"timestamp": "2025-01-15T10:00:00Z", "event_type": "login"},
        {"timestamp": "2025-01-15T10:05:00Z", "event_type": "logout"}
    ]
    
    ndjson_data = '\n'.join([json.dumps(event) for event in events]) + '\n'
    blob.upload_from_string(ndjson_data, content_type='application/x-ndjson')
    

Receber a conta de serviço do Google SecOps

  1. Acesse Configurações do SIEM > Feeds.
  2. Clique em Adicionar novo feed.
  3. Clique em Configurar um único feed.
  4. No campo Nome do feed, insira um nome para o feed (por exemplo, custom-security-analytics-gcs).
  5. Selecione Google Cloud Storage V2 como o Tipo de origem.
  6. Selecione Análise de dados de segurança personalizada como o Tipo de registro.
  7. Clique em Receber conta de serviço.
  8. Um e-mail exclusivo da conta de serviço será exibido, por exemplo:

    chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com
    
  9. Copie esse endereço de e-mail para usar na próxima etapa.

Conceder permissões do IAM

  1. Acesse Cloud Storage > Buckets.
  2. Clique no nome do bucket.
  3. Acesse a guia Permissões.
  4. Clique em Conceder acesso.
  5. Informe os seguintes detalhes de configuração:
    • Adicionar participantes: cole o e-mail da conta de serviço do Google SecOps.
    • Atribuir papéis: selecione Leitor de objetos do Storage.
  6. Clique em Salvar.

Configurar o feed do Google SecOps para o GCS

  1. Continue na página de criação de feeds ou acesse Configurações do SIEM > Feeds > Adicionar novo feed.
  2. Clique em Próxima.
  3. Especifique valores para os seguintes parâmetros de entrada:

    • URL do bucket de armazenamento: insira o URI do bucket do GCS com o caminho do prefixo:

      gs://custom-security-analytics-logs/security-events/
      
    • Opção de exclusão da fonte: selecione a opção de exclusão de acordo com sua preferência:

      • Nunca: nunca exclui arquivos após as transferências (recomendado para testes).
      • Excluir arquivos transferidos: exclui os arquivos após a transferência ser concluída.
      • Excluir arquivos transferidos e diretórios vazios: exclui arquivos e diretórios vazios após a transferência bem-sucedida.
    • Idade máxima do arquivo: inclui arquivos modificados nos últimos dias (o padrão é 180 dias).

    • Namespace do recurso: o namespace do recurso.

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

  4. Clique em Próxima.

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

Opção 4: ingestão do Azure Blob Storage V2 (exportação em lote)

Use esse método quando seu aplicativo de segurança personalizado puder exportar registros para o Armazenamento de Blobs do Azure.

Criar conta de armazenamento do Azure

  1. No portal do Azure, pesquise Contas de armazenamento.
  2. Clique em Criar.
  3. Informe os seguintes detalhes de configuração:

    Configuração Valor
    Assinatura Selecione sua assinatura do Azure
    Grupo de recursos Selecionar ou criar
    Nome da conta de armazenamento Insira um nome exclusivo (por exemplo, customsecuritylogs).
    Região Selecione a região (por exemplo, East US).
    Desempenho Padrão (recomendado)
    Redundância GRS (armazenamento com redundância geográfica) ou LRS (armazenamento com redundância local)
  4. Clique em Revisar + criar.

  5. Revise a visão geral da conta e clique em Criar.

  6. Aguarde até que a implantação seja concluída.

Receber credenciais da conta de armazenamento

  1. Acesse a Conta de armazenamento que você acabou de criar.
  2. Na navegação à esquerda, selecione Chaves de acesso em Segurança e rede.
  3. Clique em Mostrar chaves.
  4. Copie e salve o seguinte para uso posterior:
    • Nome da conta de armazenamento: customsecuritylogs
    • Chave 1 ou Chave 2: a chave de acesso compartilhado

Criar contêiner de blob

  1. Na mesma conta de armazenamento, selecione Contêineres na navegação à esquerda.
  2. Clique em + Contêiner.
  3. Informe os seguintes detalhes de configuração:
    • Nome: insira um nome de contêiner (por exemplo, security-events)
    • Nível de acesso público: selecione Privado (sem acesso anônimo)
  4. Clique em Criar.

Configurar o aplicativo para exportar para o Azure Blob

Configure seu aplicativo de segurança personalizado para gravar arquivos de registro no contêiner de blobs do Azure usando um dos seguintes métodos:

  • CLI do Azure: use az storage blob upload
  • SDK do Azure: use bibliotecas de cliente para sua linguagem de programação
  • AzCopy: use a ferramenta de linha de comando AzCopy.

Exemplos:

  • Exemplo usando a CLI do Azure:

    az storage blob upload \
        --account-name customsecuritylogs \
        --container-name security-events \
        --name logs/2025/01/15/events.json \
        --file /path/to/events.json \
        --account-key <YOUR_ACCESS_KEY>
    
  • Exemplo usando o SDK do Python:

    from azure.storage.blob import BlobServiceClient
    import json
    
    # Initialize client
    connection_string = "DefaultEndpointsProtocol=https;AccountName=customsecuritylogs;AccountKey=<YOUR_KEY>;EndpointSuffix=core.windows.net"
    blob_service_client = BlobServiceClient.from_connection_string(connection_string)
    
    # Get container client
    container_client = blob_service_client.get_container_client("security-events")
    
    # Upload log file
    blob_client = container_client.get_blob_client("logs/2025/01/15/events.json")
    
    # Write NDJSON data
    events = [
        {"timestamp": "2025-01-15T10:00:00Z", "event_type": "login"},
        {"timestamp": "2025-01-15T10:05:00Z", "event_type": "logout"}
    ]
    
    ndjson_data = '\n'.join([json.dumps(event) for event in events]) + '\n'
    blob_client.upload_blob(ndjson_data, overwrite=True)
    

Configurar o feed do Google SecOps para o Blob do Azure

  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, custom-security-analytics-azure).
  5. Selecione Microsoft Azure Blob Storage V2 como o Tipo de origem.
  6. Selecione Análise de dados de segurança personalizada como o Tipo de registro.
  7. Clique em Próxima.
  8. Especifique valores para os seguintes parâmetros de entrada:

    • URI do Azure: insira o URL do endpoint do serviço de blobs com o caminho do contêiner:

      https://customsecuritylogs.blob.core.windows.net/security-events/
      
    • Opção de exclusão da fonte: selecione a opção de exclusão de acordo com sua preferência:

      • Nunca: nunca exclui arquivos após as transferências.
      • Excluir arquivos transferidos: exclui os arquivos após a transferência ser concluída.
      • Excluir arquivos transferidos e diretórios vazios: exclui arquivos e diretórios vazios após a transferência bem-sucedida.
    • Idade máxima do arquivo: inclui arquivos modificados nos últimos dias (o padrão é 180 dias).

    • Chave compartilhada: insira o valor da chave compartilhada (chave de acesso) da conta de armazenamento.

    • 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.

Opção 5: ingestão do Amazon Data Firehose (streaming em tempo real)

Use esse método quando seu aplicativo de segurança personalizado gravar registros no Amazon CloudWatch Logs e você precisar de streaming em tempo real para o Google SecOps.

Criar um feed do Firehose do Google SecOps

  1. Acesse Configurações do SIEM > Feeds.
  2. Clique em Adicionar novo feed.
  3. No campo Nome do feed, insira um nome para o feed (por exemplo, custom-security-analytics-firehose).
  4. Selecione Amazon Data Firehose como o Tipo de origem.
  5. Selecione Análise de dados de segurança personalizada como o Tipo de registro.
  6. Clique em Próxima.
  7. Especifique valores para os seguintes parâmetros de entrada:
    • Delimitador de divisão: opcional. Insira \n para dividir registros delimitados por nova linha.
    • Namespace do recurso: o namespace do recurso.
    • Rótulos de ingestão: o rótulo a ser aplicado aos eventos deste feed.
  8. Clique em Próxima.
  9. Revise a configuração do feed e clique em Enviar.
  10. Clique em Gerar chave secreta para autenticar o feed.
  11. Copie e salve a chave secreta, porque não será possível conferir esse Secret novamente.
  12. Acesse a guia Detalhes.
  13. Copie o URL do endpoint do feed no campo Informações do endpoint.
  14. Clique em Concluído.

Criar chave de API do Google Cloud

  1. Acesse a página Credenciais do console do Google Cloud em https://console.cloud.google.com/apis/credentials
  2. Clique em Criar credenciais e, em seguida, selecione Chave de API.
  3. Clique em Editar chave de API para restringir a chave.
  4. Em Restrições de API, selecione Restringir chave.
  5. Pesquise e selecione API Google SecOps.
  6. Clique em Salvar.
  7. Copie e salve a chave de API.

Criar o URL do endpoint

  1. Adicione a chave de API ao URL do endpoint do feed no seguinte formato:

    <FEED_ENDPOINT_URL>?key=<API_KEY>
    

    Exemplo:

    https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate?key=AIzaSyD...
    
  2. Salve esse URL completo para a próxima etapa.

Criar política do IAM para o Firehose

  1. No console da AWS, acesse IAM > Políticas > Criar política > guia JSON.
  2. Cole o seguinte JSON de política:

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "firehose:PutRecord",
                    "firehose:PutRecordBatch"
                ],
                "Resource": "arn:aws:firehose:<REGION>:<ACCOUNT_ID>:deliverystream/CustomSecurityToChronicle"
            }
        ]
    }
    
  3. Substitua:

    • <REGION>: sua região da AWS (por exemplo, us-east-1).
    • <ACCOUNT_ID>: seu ID da conta da AWS (número de 12 dígitos).
  4. Nomeie a política como CloudWatchLogsToFirehosePolicy.

  5. Clique em Criar política.

Criar um papel do IAM para o CloudWatch Logs

  1. Acesse IAM > Papéis > Criar papel.
  2. Selecione Política de confiança personalizada e cole:

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Principal": {
                    "Service": "logs.<REGION>.amazonaws.com"
                },
                "Action": "sts:AssumeRole"
            }
        ]
    }
    
  3. Substitua <REGION> pela sua região da AWS.

  4. Clique em Próxima.

  5. Pesquise e selecione a política CloudWatchLogsToFirehosePolicy criada na etapa anterior.

  6. Clique em Próxima.

  7. Nomeie a função como CloudWatchLogsToFirehoseRole.

  8. Clique em Criar papel.

Criar um fluxo de entrega do Kinesis Data Firehose

  1. No console da AWS, acesse Kinesis > Data Firehose > Criar fluxo de entrega.
  2. Informe os seguintes detalhes de configuração:

    • Origem e destino:

      • Origem: selecione PUT direto ou outras origens.
      • Destino: selecione Endpoint HTTP.
    • Nome do fluxo de entrega:

      • Nome do fluxo de entrega: insira CustomSecurityToChronicle.
    • Destino do endpoint HTTP:

      • URL do endpoint HTTP: insira o URL completo do endpoint que você criou antes (endpoint do feed + chave de API).
      • Codificação de conteúdo: selecione GZIP (recomendado para economizar largura de banda).
    • Cabeçalhos HTTP personalizados:

      • Clique em Adicionar cabeçalho HTTP personalizado.
      • Nome do cabeçalho: insira X-Goog-Chronicle-Auth.
      • Valor do cabeçalho: insira a chave secreta que você salvou em uma etapa anterior.
    • Configurações de backup:

      • Backup do registro de origem no Amazon S3: selecione Somente dados com falha (recomendado).
      • Bucket do S3: selecione um bucket atual ou crie um para registros com falha.
    • Dicas de buffer:

      • Tamanho do buffer: insira 1 MiB (mínimo para endpoints HTTP)
      • Intervalo de buffer: insira 60 segundos
    • Duração da nova tentativa:

      • Duração da nova tentativa: insira 300 segundos (5 minutos)
  3. Clique em Criar fluxo de entrega.

  4. Aguarde o status do fluxo de entrega mudar para Ativo (1 a 2 minutos).

Assinar o grupo de registros do CloudWatch no Firehose

  1. No console da AWS, acesse CloudWatch > Registros > Grupos de registros.
  2. Selecione o grupo de registros de destino que contém seus registros personalizados de análise de segurança.
  3. Clique na guia Filtros de assinatura.
  4. Clique em Criar > Criar filtro de assinatura do Amazon Kinesis Data Firehose.
  5. Informe os seguintes detalhes de configuração:
    • Destino: selecione o fluxo de entrega CustomSecurityToChronicle.
    • Conceder permissão: selecione o papel CloudWatchLogsToFirehoseRole.
    • Nome do filtro de assinatura: insira CustomSecurityToChronicle.
    • Formato do registro: selecione Outro. O Google SecOps processa a análise.
    • Padrão de filtro de assinatura: deixe em branco para enviar todos os eventos ou insira um padrão de filtro para enviar apenas eventos específicos.
  6. Clique em Iniciar streaming.
  7. Os registros agora serão transmitidos em tempo real para o Google SecOps via Firehose.

Criar um analisador personalizado (opcional)

Depois de ingerir dados de segurança personalizados como registros não estruturados, você pode criar um analisador personalizado para normalizar os dados no formato UDM e melhorar a capacidade de pesquisa e detecção.

Quando criar um analisador personalizado

Crie um analisador personalizado quando:

  • Você precisa extrair campos específicos do formato de registro personalizado.
  • Você quer ativar a pesquisa UDM nos seus dados personalizados
  • É necessário mapear campos personalizados para campos padrão do UDM em regras de detecção
  • Você quer melhorar o desempenho da pesquisa indexando campos específicos

Criar tipo de registro personalizado

  1. Acesse Configurações do SIEM > Tipos de registros disponíveis.
  2. Clique em Solicitar um tipo de registro.
  3. Na seção Criar um tipo de registro personalizado ou solicitar um tipo de registro predefinido, selecione Criar um tipo de registro personalizado.
  4. Informe o seguinte:
    • Nome do tipo de registro: insira um nome descritivo, por exemplo, CUSTOM_SECURITY_ANALYTICS.
    • Descrição: insira uma descrição do tipo de registro.
    • Registros de amostra: cole de 5 a 10 entradas de registro de amostra no formato bruto.
  5. Clique em Enviar.
  6. O tipo de registro personalizado vai estar disponível em aproximadamente 10 minutos.

Criar analisador personalizado

  1. Acesse Configurações do SIEM > Analisadores.
  2. Clique em Criar analisador.
  3. Selecione Analisador personalizado.
  4. Informe o seguinte:
    • Nome do analisador: insira um nome descritivo.
    • Tipo de registro: selecione seu tipo de registro personalizado (por exemplo, CUSTOM_SECURITY_ANALYTICS).
    • Código do analisador: insira a configuração do analisador usando a linguagem de configuração do analisador do Google SecOps.
  5. Teste o analisador com registros de amostra.
  6. Clique em Enviar para ativar o analisador.

Exemplo de configuração do analisador

  • Para um formato de registro JSON personalizado:

    {
        "timestamp": "2025-01-15T10:30:00Z",
        "event_type": "authentication",
        "user": "john.doe@example.com",
        "action": "login",
        "result": "success",
        "source_ip": "203.0.113.45"
    }
    

    Exemplo de configuração do analisador:

    filter {
        json {
            fields {
                timestamp: timestamp
                event_type: event_type
                user: user
                action: action
                result: result
                source_ip: source_ip
            }
        }
    }
    
    event {
        $e.metadata.event_timestamp.seconds = parseTimestamp(timestamp, "yyyy-MM-dd'T'HH:mm:ss'Z'")
        $e.metadata.event_type = "USER_LOGIN"
        $e.principal.user.email_addresses = user
        $e.target.ip = source_ip
        $e.security_result.action = if(result == "success", "ALLOW", "BLOCK")
    }
    

    Para mais informações sobre como criar analisadores personalizados, consulte Gerenciar analisadores predefinidos e personalizados.

Verificar a ingestão de dados

Depois de configurar o feed, verifique se os dados estão sendo ingeridos corretamente.

Verificar o status do feed

  1. Acesse Configurações do SIEM > Feeds.
  2. Encontre seu feed na lista.
  3. Verifique a coluna Status:
    • Ativo: o feed está em execução e ingerindo dados.
    • Erro: o feed encontrou um erro (clique para mais detalhes)
    • Pausado: o feed está pausado.

Pesquisar registros ingeridos

  1. Acesse Pesquisa > Verificação de registros brutos.
  2. Insira uma consulta de pesquisa para encontrar seus registros personalizados:

    metadata.log_type = "CUSTOM_SECURITY_DATA_ANALYTICS"
    
  3. Ajuste o intervalo de tempo, se necessário.

  4. Clique em Pesquisar.

  5. Verifique se os registros aparecem nos resultados.

Monitorar métricas de feed

  1. Acesse Configurações do SIEM > Feeds.
  2. Clique no nome do feed.
  3. Acesse a guia Métricas.
  4. Analise as seguintes métricas:
    • Eventos ingeridos: número total de eventos ingeridos
    • Bytes ingeridos: volume total de dados ingeridos
    • Taxa de ingestão: eventos por segundo
    • Erros: número de erros de ingestão

Solução de problemas

Problemas de ingestão de webhook

  • Problema: HTTP 401 não autorizado

    • Causa: chave de API ou chave secreta inválida
    • Solução: verifique se a chave de API e a chave secreta estão corretas e não expiraram.
  • Problema: HTTP 403 Forbidden

    • Causa: a chave de API não tem permissões da API Chronicle
    • Solução: edite a chave de API e verifique se a API Chronicle está selecionada em "Restrições de API".
  • Problema: solicitação inválida HTTP 400

    • Causa: formato ou payload da solicitação inválido
    • Solução: verifique se o cabeçalho Content-Type está definido como application/json e se o payload é um JSON válido.

Problemas de ingestão do S3/GCS/Azure Blob

  • Problema: nenhum dado ingerido

    • Causa: URI do bucket incorreto ou permissões ausentes
    • Solução: verifique se o URI do bucket inclui a barra invertida final e se a conta de serviço tem o papel Leitor de objetos do Storage.
  • Problema: os arquivos não foram excluídos após a ingestão

    • Causa: a conta de serviço não tem permissões de exclusão
    • Solução: conceda o papel de administrador de objetos do Storage em vez de leitor de objetos do Storage
  • Problema: arquivos antigos não ingeridos

    • Causa: a configuração "Idade máxima do arquivo" exclui arquivos antigos
    • Solução: aumente o valor de "Idade máxima do arquivo" na configuração do feed

Problemas de ingestão do Firehose

  • Problema: o fluxo de entrega mostra erros

    • Causa: URL do endpoint ou autenticação inválida
    • Solução: verifique se o URL do endpoint inclui o parâmetro da chave de API e se o cabeçalho X-Goog-Chronicle-Auth contém a chave secreta correta.
  • Problema: métrica de atualização de dados alta

    • Causa: o Firehose está limitado ou com falhas de entrega
    • Solução: verifique as métricas do CloudWatch para a taxa de ThrottledRecords e DeliveryToHTTP.Success
  • Problema: não há streaming de registros do CloudWatch

    • Causa: filtro de assinatura não configurado ou função do IAM sem permissões
    • Solução: verifique se o filtro de assinatura está ativo e se a função do IAM tem permissões firehose:PutRecord.

Tabela de mapeamento do UDM

Os registros de análise de dados de segurança personalizados são ingeridos como dados não estruturados. Para ativar o mapeamento de campos do UDM, crie um analisador personalizado conforme descrito na seção "Criar um analisador personalizado" acima.

Depois de criar um analisador personalizado, os campos do UDM serão preenchidos com base na configuração do analisador. Os campos comuns da UDM para dados de análise de segurança incluem:

Campo de UDM Descrição
metadata.event_timestamp Carimbo de data/hora do evento
metadata.event_type Tipo de evento (por exemplo, USER_LOGIN, FILE_ACCESS)
principal.user.email_addresses Endereço de e-mail do usuário
principal.ip Endereço IP de origem
target.resource.name Nome do recurso de destino
security_result.action Ação de segurança (ALLOW, BLOCK etc.)
security_result.severity Gravidade do evento

Para uma lista completa de campos da UDM, consulte a referência de campos da UDM.

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