Coletar registros de fluxo de VPC do Cloud
Este documento explica como exportar os registros de fluxo de VPC do Cloud para o Google Security Operations usando Google Cloud. O analisador transforma os registros do formato JSON integrado no UDM das operações de segurança do Google. Ele extrai campos relevantes, como IP de origem e destino, porta, protocolo e bytes enviados, e os mapeia para os campos correspondentes do UDM, considerando a direção da rede e casos especiais para uma representação precisa no Google SecOps.
Antes de começar
- Verifique se você tem uma instância do Google SecOps.
- Verifique se o VPC Flow está configurado e ativo no ambiente Google Cloud .
- Verifique se você tem acesso privilegiado a Google Cloud.
Crie um bucket do Google Cloud Storage
- Faça login no console do Google Cloud.
Acesse a página Buckets do Cloud Storage.
Clique em Criar.
Na página Criar um bucket, insira as informações do seu bucket. Após cada uma das etapas a seguir, clique em Continuar para prosseguir para a próxima:
Na seção Começar, faça o seguinte:
- Insira um nome exclusivo que atenda aos requisitos de nome de bucket. Por exemplo, vpcflow-logs.
Para ativar o namespace hierárquico, clique na seta de expansão para abrir a seção Otimizar para cargas de trabalho orientadas a arquivos e com uso intensivo de dados e selecione Ativar namespace hierárquico neste bucket.
Para adicionar um rótulo de bucket, clique na seta de expansão para abrir a seção Rótulos.
Clique em Adicionar rótulo e especifique uma chave e um valor para o rótulo.
Na seção Escolha onde armazenar seus dados, faça o seguinte:
- Selecione um tipo de local.
Use o menu do tipo de local para selecionar um Local em que os dados de objetos no bucket serão armazenados permanentemente.
Para configurar a replicação entre buckets, abra a seção Configurar a replicação entre buckets.
Na seção Escolha uma classe de armazenamento para seus dados, selecione uma classe de armazenamento padrão para o bucket ou selecione Classe automática para gerenciamento automático da classe de armazenamento dos dados do bucket.
Na seção Escolha como controlar o acesso a objetos, selecione não para aplicar a prevenção de acesso público e selecione um modelo de controle de acesso para os objetos do bucket.
Na seção "Escolha como proteger os dados do objeto", faça o seguinte:
- Selecione qualquer uma das opções em "Proteção de dados" que você quer definir para o bucket.
- Para escolher como os dados do objeto serão criptografados, clique na seta de expansão identificada como Criptografia de dados e selecione um método de criptografia de dados.
Clique em Criar.
Configurar a exportação de registros no Google Cloud fluxo de VPC
- Faça login na conta do Google Cloud usando sua conta privilegiada.
- Na página Bem-vindo, clique em Redes VPC.
- Clique em Padrão e uma página de sub-rede vai aparecer.
- Selecione todos os registros.
- Clique em Registros de fluxo > Configurar.
- Selecione Intervalo de agregação, por exemplo, 30 seg.
- Informe a Taxa de amostragem, por exemplo, 50%.
- Clique em Salvar.
- Pesquise Registro na barra de pesquisa e clique em Enter.
- No Log Explorer, filtre os registros escolhendo VPC_flows em Nome do registro e clique em Aplicar.
- Clique em Mais ações.
- Clique em Criar coletor.
- Forneça as seguintes configurações:
- Detalhes do coletor: insira um nome e uma descrição.
- Clique em Próxima.
- Destino do coletor: selecione Bucket do Cloud Storage.
- Bucket do Cloud Storage: selecione o bucket criado anteriormente ou crie um novo.
- Clique em Próxima.
- Escolher os registros a serem incluídos no coletor: um registro padrão é preenchido quando você seleciona uma opção no bucket do Cloud Storage.
- Clique em Próxima.
- Opcional: Escolher registros para excluir do coletor: selecione os registros que você não quer enviar para o coletor.
- Clique em Criar coletor.
Configurar um feed no Google SecOps para ingerir Google Cloud registros de fluxo de VPC
- Acesse Configurações do SIEM > Feeds.
- Clique em Adicionar novo.
- No campo Nome do feed, insira um nome para o feed. Por exemplo, Google Cloud Registros de fluxo de VPC.
- Selecione Google Cloud Storage como o Tipo de origem.
- Selecione Fluxo de VPC do GCP como o Tipo de registro.
- Clique em Pegar conta de serviço como a Conta de serviço do Chronicle.
- Clique em Próxima.
Especifique valores para os seguintes parâmetros de entrada:
- URI do bucket do Cloud Storage: Google Cloud URL do bucket do Cloud Storage no formato
gs://my-bucket/<value>
. - URI Is A: selecione Directory which includes subdirectories.
Opções de exclusão da origem: selecione a opção de exclusão de acordo com sua preferência.
Namespace de recursos: o namespace de recursos.
Rótulos de ingestão: o rótulo aplicado aos eventos desse feed.
- URI do bucket do Cloud Storage: Google Cloud URL do bucket do Cloud Storage no formato
Clique em Próxima.
Revise a configuração do novo feed na tela Finalizar e clique em Enviar.
Tabela de mapeamento do UDM
Campo de registro | Mapeamento de UDM | Lógica |
---|---|---|
connection.dest_ip | target.asset.ip target.ip |
Mapeamento direto quando network.direction é SAÍDA. Mapeado de principal.ip quando network.direction é INBOUND. |
connection.dest_port | target.port | Convertido em número inteiro se for maior que -1. |
connection.protocol | network.ip_protocol | Convertido em string e depois associado a um número inteiro. Com base no valor inteiro, mapeado para o nome do protocolo IP (por exemplo, TCP, UDP, ICMP). |
connection.src_ip | principal.ip | Mapeamento direto. |
connection.src_port | principal.port | Convertido em número inteiro. |
dest_instance.region | target.location.name | Mapeamento direto. |
dest_instance.vm_name | target.asset.hostname | Mapeamento direto. |
dest_location.city | target.location.city | Mapeamento direto. |
dest_location.country | target.location.country_or_region | Mapeamento direto. |
dest_location.region | target.location.state | Mapeamento direto. |
dest_vpc.project_id | target.namespace | Usado com dest_vpc.vpc_name para formar o target.namespace. |
dest_vpc.vpc_name | target.namespace | Usado com dest_vpc.project_id para formar o target.namespace. |
insertId | metadata.product_log_id | Mapeamento direto. |
jsonPayload.bytes_sent | network.sent_bytes | Foi renomeado para network.sent_bytes e convertido em uinteger. |
jsonPayload.packets_sent | network.sent_packets | Convertido em número inteiro. |
labels.tunnel_id | additional.fields | Mesclados em additional.fields com a chave Tunnel Id e o tipo string_value . |
logName | security_result.category_details | Mapeamento direto. |
resource.labels.project_id | target.resource.name | Usado para construir o target.resource.name com o formato //cloudresourcemanager.googleapis.com/projects/{resource.labels.project_id} . |
resource.labels.region | target.location.country_or_region | Mapeamento direto. |
resource.labels.subnetwork_id | target.user.attribute.labels | Mesclado em target.user.attribute.labels com a chave subnetwork_id . |
resource.type | metadata.product_event_type | Mapeamento direto. |
gravidade, | security_result.severity | Mapeado para LOW se o valor for DEBUG . |
src_gke_details.cluster.cluster_location | principal.resource.attribute.labels | Mesclado em principal.resource.attribute.labels com a chave cluster_location . |
src_gke_details.cluster.cluster_name | principal.resource.attribute.labels | Mesclado em principal.resource.attribute.labels com a chave cluster_name . |
src_gke_details.pod.pod_name | principal.resource.attribute.labels | Mesclado em principal.resource.attribute.labels com a chave pod_name . |
src_gke_details.pod.pod_namespace | principal.resource.attribute.labels | Mesclado em principal.resource.attribute.labels com a chave pod_namespace . |
src_instance.region | principal.location.name | Mapeamento direto. |
src_instance.vm_name | principal.asset.hostname | Mapeamento direto. |
src_location.city | principal.location.city | Mapeamento direto. |
src_location.country | principal.location.country_or_region | Mapeamento direto. |
src_location.region | principal.location.state | Mapeamento direto. |
src_vpc.project_id | principal.namespace | Usado com src_vpc.vpc_name para formar o principal.namespace. |
src_vpc.vpc_name | principal.namespace | Usado com src_vpc.project_id para formar o principal.namespace. |
textPayload | additional.fields | Mesclados em additional.fields com a chave Textpayload e o tipo string_value . |
timestamp | metadata.event_timestamp | Usado para preencher event_timestamp se jsonPayload.end_time estiver vazio. |
metadata.description | Uma descrição do fluxo de rede, incluindo o informante (SRC ou DEST) e a direção (INBOUND ou OUTBOUND), é gerada com base no campo "informante". | |
metadata.event_type | Defina como NETWORK_CONNECTION para registros de fluxo de VPC e USER_RESOURCE_ACCESS para outros tipos de registro. |
|
metadata.log_type | Defina como GCP_VPC_FLOW . |
|
metadata.product_name | Defina como GCP VPC Flow Logs . |
|
metadata.product_version | Defina como 1.0 . |
|
metadata.vendor_name | Defina como Google Cloud . |
|
network.direction | Determinado com base em target.port. Se a porta for conhecida ou reservada, ela será considerada INBOUND. Caso contrário, será considerada OUTBOUND. | |
security_result.severity | Definido como LOW por padrão. |
|
target.resource.attribute.cloud.environment | Defina como GOOGLE_CLOUD_PLATFORM . |
|
target.resource.resource_type | Defina como CLOUD_PROJECT . |
Alterações
2024-10-24
Melhoria:
- Mapeamento trocado de
principal.ip
,principal.port
portarget.ip
etarget.port
, respectivamente.
2024-03-15
Melhoria:
jsonPayload.src_gke_details.pod.pod_namespace
,jsonPayload.src_gke_details.pod.pod_name
,jsonPayload.src_gke_details.cluster.cluster_name
ejsonPayload.src_gke_details.cluster.cluster_location
foram mapeados paraprincipal.resource.attribute.labels
.jsonPayload.dest_gke_details.pod.pod_namespace
,jsonPayload.dest_gke_details.pod.pod_name
,jsonPayload.dest_gke_details.cluster.cluster_name
ejsonPayload.dest_gke_details.cluster.cluster_location
foram mapeados paratarget.resource.attribute.labels
.
2023-05-23
Melhoria:
- O "metadata.event_type" foi associado a "USER_RESOURCE_ACCESS" quando o campo "logName" não contém "vpc_flows".
- O "carimbo de data/hora" foi associado a "events.timestamp".
- Mapeamos "textPayload" e "labels.tunnel_id" para "additional.fields".
- Mapeamos "resource.labels.region" para "target.location.country_or_region".
- Foram adicionadas verificações de valores nulos para vários campos, sempre que necessário.
2023-04-10
Melhoria:
- Defina
target.resource.attribute.cloud.environment
comoGOOGLE_CLOUD_PLATFORM
. - Defina
target.resource.name
como o valor do nome completo do recurso.
2022-07-22
Melhoria:
resource.labels.location
foi mapeado paraprincipal.location.name
.resource.labels.subnetwork_id
foi mapeado paratarget.user.attribute.labels
.logName
foi mapeado parasecurity_result.category_details
.
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.