Coletar registros personalizados da análise de dados de segurança
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
- Acesse Configurações do SIEM > Feeds.
- Clique em Adicionar novo feed.
- Na próxima página, clique em Configurar um único feed.
- No campo Nome do feed, insira um nome para o feed (por exemplo,
custom-security-analytics-webhook). - Selecione Webhook como o Tipo de origem.
- Selecione Análise de dados de segurança personalizada como o Tipo de registro.
- Clique em Próxima.
- 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
- Delimitador de divisão: opcional. Insira um delimitador para dividir eventos de várias linhas. Valores comuns:
- Clique em Próxima.
- 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:
- Na página de detalhes do feed, clique em Gerar chave secreta.
- Uma caixa de diálogo mostra a chave secreta.
Copie e salve a chave secreta com segurança.
Receber o URL do endpoint do feed
- Acesse a guia Detalhes do feed.
- Na seção Informações do endpoint, copie o URL do endpoint do feed.
O formato do URL é:
https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreateou
https://<REGION>-malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreateSalve esse URL para as próximas etapas.
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
- Acesse a página "Credenciais" do Console do Google Cloud.
- Selecione seu projeto (o projeto associado à sua instância do Chronicle).
- Clique em Criar credenciais > Chave de API.
- Uma chave de API é criada e mostrada em uma caixa de diálogo.
- Clique em Editar chave de API para restringir a chave.
Restringir a chave de API
- Na página de configurações da chave de API:
- Nome: insira um nome descritivo, por exemplo,
Chronicle Webhook API Key.
- Nome: insira um nome descritivo, por exemplo,
- Em Restrições de API:
- Selecione Restringir chave.
- No menu suspenso Selecionar APIs, pesquise e selecione API Google SecOps (ou API Chronicle).
- Clique em Salvar.
- Copie o valor da chave de API do campo Chave de API na parte de cima da página.
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.
Método 1: cabeçalhos personalizados (recomendado)
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
- Abra o console do Amazon S3.
- Clique em Criar bucket.
- 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).
- Nome do bucket: insira um nome significativo para o bucket (por exemplo,
- Clique em Criar.
Criar um usuário do IAM com acesso ao S3
- Abra o console do IAM.
- Clique em Usuários > Adicionar usuário.
- Digite um nome de usuário (por exemplo,
chronicle-s3-reader). - Selecione Acesso programático.
- Clique em Next: Permissions.
- Escolha Anexar políticas atuais diretamente.
- Pesquise e selecione AmazonS3FullAccess.
- Clique em Avançar: tags.
- Clique em PRÓXIMO: REVISAR.
- Clique em Criar usuário.
- Clique em Baixar arquivo .csv para salvar o ID da chave de acesso e a chave de acesso secreta.
- 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.jsonExemplo 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
- Acesse Configurações do SIEM > Feeds.
- Clique em Adicionar novo feed.
- Na próxima página, clique em Configurar um único feed.
- No campo Nome do feed, insira um nome para o feed (por exemplo,
custom-security-analytics-s3). - Selecione Amazon S3 V2 como o Tipo de origem.
- Selecione Análise de dados de segurança personalizada como o Tipo de registro.
- Clique em Próxima.
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.
Clique em Próxima.
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
- Acesse o Console do Google Cloud.
- Selecione seu projeto ou crie um novo.
- No menu de navegação, acesse Cloud Storage > Buckets.
- Clique em Criar bucket.
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 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
gsutilou 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
- Acesse Configurações do SIEM > Feeds.
- Clique em Adicionar novo feed.
- Clique em Configurar um único feed.
- No campo Nome do feed, insira um nome para o feed (por exemplo,
custom-security-analytics-gcs). - Selecione Google Cloud Storage V2 como o Tipo de origem.
- Selecione Análise de dados de segurança personalizada como o Tipo de registro.
- Clique em Receber conta de serviço.
Um e-mail exclusivo da conta de serviço será exibido, por exemplo:
chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.comCopie esse endereço de e-mail para usar na próxima etapa.
Conceder permissões do IAM
- Acesse Cloud Storage > Buckets.
- Clique no nome do bucket.
- Acesse a guia Permissões.
- Clique em Conceder acesso.
- 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.
Clique em Salvar.
Configurar o feed do Google SecOps para o GCS
- Continue na página de criação de feeds ou acesse Configurações do SIEM > Feeds > Adicionar novo feed.
- Clique em Próxima.
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.
Clique em Próxima.
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
- No portal do Azure, pesquise Contas de armazenamento.
- Clique em Criar.
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) Clique em Revisar + criar.
Revise a visão geral da conta e clique em Criar.
Aguarde até que a implantação seja concluída.
Receber credenciais da conta de armazenamento
- Acesse a Conta de armazenamento que você acabou de criar.
- Na navegação à esquerda, selecione Chaves de acesso em Segurança e rede.
- Clique em Mostrar chaves.
- Copie e salve o seguinte para uso posterior:
- Nome da conta de armazenamento:
customsecuritylogs - Chave 1 ou Chave 2: a chave de acesso compartilhado
- Nome da conta de armazenamento:
Criar contêiner de blob
- Na mesma conta de armazenamento, selecione Contêineres na navegação à esquerda.
- Clique em + Contêiner.
- 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)
- Nome: insira um nome de contêiner (por exemplo,
- 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
- Acesse Configurações do SIEM > Feeds.
- Clique em Adicionar novo feed.
- Na próxima página, clique em Configurar um único feed.
- No campo Nome do feed, insira um nome para o feed (por exemplo,
custom-security-analytics-azure). - Selecione Microsoft Azure Blob Storage V2 como o Tipo de origem.
- Selecione Análise de dados de segurança personalizada como o Tipo de registro.
- Clique em Próxima.
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.
Clique em Próxima.
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
- Acesse Configurações do SIEM > Feeds.
- Clique em Adicionar novo feed.
- No campo Nome do feed, insira um nome para o feed (por exemplo,
custom-security-analytics-firehose). - Selecione Amazon Data Firehose como o Tipo de origem.
- Selecione Análise de dados de segurança personalizada como o Tipo de registro.
- Clique em Próxima.
- Especifique valores para os seguintes parâmetros de entrada:
- Delimitador de divisão: opcional. Insira
\npara 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.
- Delimitador de divisão: opcional. Insira
- Clique em Próxima.
- Revise a configuração do feed e clique em Enviar.
- Clique em Gerar chave secreta para autenticar o feed.
- Copie e salve a chave secreta, porque não será possível conferir esse Secret novamente.
- Acesse a guia Detalhes.
- Copie o URL do endpoint do feed no campo Informações do endpoint.
- Clique em Concluído.
Criar chave de API do Google Cloud
- Acesse a página Credenciais do console do Google Cloud em https://console.cloud.google.com/apis/credentials
- Clique em Criar credenciais e, em seguida, selecione Chave de API.
- Clique em Editar chave de API para restringir a chave.
- Em Restrições de API, selecione Restringir chave.
- Pesquise e selecione API Google SecOps.
- Clique em Salvar.
- Copie e salve a chave de API.
Criar o URL do endpoint
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...Salve esse URL completo para a próxima etapa.
Criar política do IAM para o Firehose
- No console da AWS, acesse IAM > Políticas > Criar política > guia JSON.
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" } ] }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).
Nomeie a política como
CloudWatchLogsToFirehosePolicy.Clique em Criar política.
Criar um papel do IAM para o CloudWatch Logs
- Acesse IAM > Papéis > Criar papel.
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" } ] }Substitua
<REGION>pela sua região da AWS.Clique em Próxima.
Pesquise e selecione a política
CloudWatchLogsToFirehosePolicycriada na etapa anterior.Clique em Próxima.
Nomeie a função como
CloudWatchLogsToFirehoseRole.Clique em Criar papel.
Criar um fluxo de entrega do Kinesis Data Firehose
- No console da AWS, acesse Kinesis > Data Firehose > Criar fluxo de entrega.
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.
- Nome do fluxo de entrega: insira
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
1MiB (mínimo para endpoints HTTP) - Intervalo de buffer: insira
60segundos
- Tamanho do buffer: insira
Duração da nova tentativa:
- Duração da nova tentativa: insira
300segundos (5 minutos)
- Duração da nova tentativa: insira
Clique em Criar fluxo de entrega.
Aguarde o status do fluxo de entrega mudar para Ativo (1 a 2 minutos).
Assinar o grupo de registros do CloudWatch no Firehose
- No console da AWS, acesse CloudWatch > Registros > Grupos de registros.
- Selecione o grupo de registros de destino que contém seus registros personalizados de análise de segurança.
- Clique na guia Filtros de assinatura.
- Clique em Criar > Criar filtro de assinatura do Amazon Kinesis Data Firehose.
- 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.
- Destino: selecione o fluxo de entrega
- Clique em Iniciar streaming.
- 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
- Acesse Configurações do SIEM > Tipos de registros disponíveis.
- Clique em Solicitar um tipo de registro.
- Na seção Criar um tipo de registro personalizado ou solicitar um tipo de registro predefinido, selecione Criar um tipo de registro personalizado.
- 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.
- Nome do tipo de registro: insira um nome descritivo, por exemplo,
- Clique em Enviar.
- O tipo de registro personalizado vai estar disponível em aproximadamente 10 minutos.
Criar analisador personalizado
- Acesse Configurações do SIEM > Analisadores.
- Clique em Criar analisador.
- Selecione Analisador personalizado.
- 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.
- Teste o analisador com registros de amostra.
- 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
- Acesse Configurações do SIEM > Feeds.
- Encontre seu feed na lista.
- 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
- Acesse Pesquisa > Verificação de registros brutos.
Insira uma consulta de pesquisa para encontrar seus registros personalizados:
metadata.log_type = "CUSTOM_SECURITY_DATA_ANALYTICS"Ajuste o intervalo de tempo, se necessário.
Clique em Pesquisar.
Verifique se os registros aparecem nos resultados.
Monitorar métricas de feed
- Acesse Configurações do SIEM > Feeds.
- Clique no nome do feed.
- Acesse a guia Métricas.
- 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/jsone 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
ThrottledRecordseDeliveryToHTTP.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.