Coletar registros de fluxo de VPC da AWS
Este documento explica como ingerir registros de fluxo de VPC da AWS no Google Security Operations usando três métodos diferentes: Amazon S3 (formato de texto), Amazon CloudWatch Logs com Kinesis Data Firehose e formato CSV no Amazon S3. Os registros de fluxo da VPC da AWS são um recurso que permite capturar informações sobre o tráfego de IP de e para interfaces de rede na sua VPC. Com essa integração, é possível enviar esses registros ao Google SecOps para análise e monitoramento.
Formatos de registros de fluxo de VPC da AWS compatíveis
O Google SecOps é compatível com a ingestão de registros de fluxo da VPC da AWS em dois formatos de texto principais:
- Formato JSON: o tipo de registro
AWS_VPC_FLOW
analisa registros no formato JSON. Nesse formato, cada entrada de registro inclui uma chave e o valor correspondente, tornando os dados autodescritivos. - Formato CSV: o Google SecOps também oferece um analisador para registros de fluxo de VPC da AWS em formato CSV. Nesse formato, as chaves de campo são listadas apenas uma vez na linha de cabeçalho, e as linhas subsequentes contêm apenas valores separados por vírgulas.
Como o formato CSV não inclui chaves de campo em cada entrada de registro, o analisador AWS_VPC_FLOW_CSV depende de uma ordem estrita e predefinida de valores. Os arquivos CSV precisam seguir a ordem de campos abaixo para serem analisados corretamente:
Version,Account_id,Interface_id,Srcaddr,Dstaddr,Srcport,Dstport,Protocol,Packets,Bytes,Start,End,Action,Log_status,Vpc_id,Subnet_id,Instance_id,Tcp_flags,Type,Pkt_srcaddr,Pkt_dstaddr,Region,Az_id,Sublocation_type,Sublocation_id,Pkt_src_aws_service,Pkt_dst_aws_service,Flow_direction,Traffic_path,Ecs_cluster_arn,Ecs_cluster_name,Ecs_container_instance_arn,Ecs_container_instance_id,Ecs_container_id,Ecs_second_container_id,Ecs_service_name,Ecs_task_definition_arn,Ecs_task_arn,Ecs_task_id
Confira um exemplo de linha de registro CSV:
7,369096419186,eni-0520bb5efed19d33a,10.119.32.34,10.119.223.3,51256,16020,6,14,3881,1723542839,1723542871,ACCEPT,OK,vpc-0769a6844ce873a6a,subnet-0cf9b2cb32f49f258,i-088d6080f45f5744f,0,IPv4,10.119.32.34,10.119.223.3,ap-northeast-1,apne1-az4,-,-,-,-,ingress,,-,-,-,-,-,-,-,-,-,-
Para campos em que nenhum valor está disponível, um valor vazio (por exemplo, , ,) precisa ser transmitido para manter a ordem posicional correta na linha CSV.
Antes de começar
Verifique se você tem os pré-requisitos a seguir:
- Instância do Google SecOps.
- Acesso privilegiado à AWS.
Opção 1: configurar a exportação de registros de fluxo de VPC da AWS usando o AWS S3 (formato de texto)
A seção a seguir descreve como configurar as permissões do Amazon S3 e do Identity and Access Management para ativar a exportação de registros de fluxo da VPC para análise pelo Google SecOps.
Configurar o bucket do AWS S3 e o IAM para o Google SecOps
- Crie um bucket do Amazon S3 seguindo este guia do usuário: Como criar um bucket.
- Salve o Nome e a Região do bucket para referência futura (por exemplo,
aws-vpc-flowlogs
). - Crie um usuário seguindo este guia do usuário: Como criar um usuário do IAM.
- Selecione o usuário criado.
- Selecione a guia Credenciais de segurança.
- Clique em Criar chave de acesso na seção Chaves de acesso.
- Selecione Serviço de terceiros como Caso de uso.
- Clique em Próxima.
- Opcional: adicione uma tag de descrição.
- Clique em Criar chave de acesso.
- Clique em Fazer o download do arquivo CSV para salvar a chave de acesso e a chave de acesso secreta para referência futura.
- Clique em Concluído.
- Selecione a guia Permissões.
- Clique em Adicionar permissões na seção Políticas de permissões.
- Selecione Adicionar permissões.
- Selecione Anexar políticas diretamente.
- Pesquise a política AmazonS3FullAccess.
- Selecione a política.
- Clique em Próxima.
- Clique em Adicionar permissões
Criar registros de fluxo de VPC (destino: Amazon S3, formato de texto)
- Abra o console da AWS > VPC > Suas VPCs/Sub-redes/Interfaces de rede e selecione o escopo que você quer registrar.
- Clique em Ações > Criar registro de fluxo.
- Informe os seguintes detalhes de configuração:
- Filtrar: escolha Todos (ou Aceitar / Rejeitar) de acordo com sua política.
- Intervalo máximo de agregação: selecione 1 minuto (recomendado) ou 10 minutos.
- Destino: Enviar para um bucket do Amazon S3.
- ARN do bucket do S3: insira o nome do bucket criado na seção anterior no seguinte formato:
arn:aws:s3:::<your-bucket>
. - Formato do registro de log: selecione Formato padrão da AWS.
- Formato do arquivo de registro: selecione Texto (simples).
- Opcional: desative Prefixos compatíveis com o Hive e Partições por hora, a menos que você precise deles.
- Clique em Criar registro de fluxo.
Configurar um feed no Google SecOps para ingerir registros de fluxo da VPC da AWS (texto do S3)
- Acesse Configurações do SIEM > Feeds.
- Clique em + Adicionar novo feed.
- No campo Nome do feed, insira um nome para o feed (por exemplo,
AWS VPC Flow Logs - S3 (Text)
). - Selecione Amazon S3 V2 como o Tipo de origem.
- Selecione Fluxo da VPC da AWS como o Tipo de registro.
- Clique em Próxima.
- Especifique valores para os seguintes parâmetros de entrada:
- URI do S3: insira o endereço do bucket do S3 (por exemplo,
s3://<your-bucket>/AWSLogs/<account-id>/vpcflowlogs/<region>/
). - Opções de exclusão de fontes: selecione a opção de exclusão de acordo com sua preferência.
- Idade máxima do arquivo: padrão de 180 dias.
- ID da chave de acesso: chave de acesso do usuário com acesso ao bucket do S3.
- Chave de acesso secreta: chave secreta do usuário com acesso ao bucket do S3.
- Namespace do recurso: o namespace do recurso.
- Rótulos de ingestão: o rótulo aplicado aos eventos deste feed.
- URI do S3: insira o endereço do bucket do S3 (por exemplo,
- Clique em Próxima.
- Revise a nova configuração do feed na tela Finalizar e clique em Enviar.
Opção 2: configurar a exportação de registros de fluxo de VPC da AWS usando o Amazon CloudWatch Logs e o Kinesis Data Firehose
Depois de configurar os registros de fluxo para o CloudWatch, essa opção oferece uma camada extra de exportação de dados transmitindo esses dados para um destino de sua escolha usando o Kinesis Data Firehose.
Criar registros de fluxo de VPC (destino: Amazon CloudWatch Logs)
- Abra o console da AWS > VPC > Suas VPCs/sub-redes/interfaces de rede.
- Clique em Ações > Criar registro de fluxo.
- Informe os seguintes detalhes de configuração:
- Filtrar: escolha Todos (ou Aceitar/Rejeitar) de acordo com sua política.
- Intervalo máximo de agregação: selecione 1 minuto (recomendado) ou 10 minutos.
- Destino: selecione Enviar para os registros do CloudWatch.
- Grupo de registros de destino: selecione ou crie um grupo de registros (por exemplo,
/aws/vpc/flowlogs
). - Papel do IAM: selecione um papel que possa gravar nos registros do CloudWatch.
- Formato do registro de log: selecione Padrão da AWS (versão 2) ou Personalizado (inclui campos adicionais).
- Clique em Criar registro de fluxo.
Criar um feed no Google SecOps para receber o URL do endpoint e a chave secreta
- Acesse Configurações do SIEM > Feeds.
- Clique em + Adicionar novo feed.
- No campo Nome do feed, insira um nome para o feed (por exemplo,
AWS VPC Flow Logs - CloudWatch via Firehose
). - Selecione Amazon Data Firehose como o Tipo de origem.
- Selecione Fluxo da VPC da AWS como o Tipo de registro.
- Clique em Próxima.
- Especifique valores para os seguintes parâmetros de entrada:
- Delimitador de divisão:
n
opcional. - Namespace do recurso: o namespace do recurso (por exemplo,
aws.vpc.flowlogs.cwl
). - Rótulos de ingestão: o rótulo a ser aplicado aos eventos deste feed (por exemplo,
source=vpc_flow_firehose
).
- Delimitador de divisão:
- 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 uma chave de API para o feed do Amazon Data Firehose
- Acesse a página Credenciais do console do Google Cloud.
- Clique em Criar credenciais e selecione Chave de API.
- Copie e salve a chave em um local seguro.
- Restrinja o acesso da chave de API à API Google SecOps.
Configurar permissões do IAM para o CloudWatch Logs no Firehose
- No console da AWS, acesse IAM > Políticas > Criar política > JSON.
Cole o seguinte JSON de política, substituindo
<region>
e<account-id>
pela sua região da AWS e ID da conta:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "firehose:PutRecord", "firehose:PutRecordBatch" ], "Resource": "arn:aws:firehose:<region>:<account-id>:deliverystream/cwlogs-to-secops" } ] }
Nomeie a política como
CWLtoFirehoseWrite
e clique em Criar política.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" } ] }
Anexe a política
CWLtoFirehoseWrite
à função.Nomeie a função como
CWLtoFirehoseRole
e clique em Criar função.
Configurar o Amazon Kinesis Data Firehose para o Google SecOps
- No console da AWS, acesse Kinesis > Data Firehose > Criar fluxo de entrega.
- Informe os seguintes detalhes de configuração:
- Origem: selecione PUT direto ou outras origens.
- Destino: escolha Endpoint HTTP.
- Nome:
cwlogs-to-secops
- URL do endpoint HTTP: insira o URL do endpoint HTTPS do feed do Google SecOps com a chave de API anexada:
<ENDPOINT_URL>?key=<API_KEY>
- Método HTTP: selecione POST.
- Em Chave de acesso:
- Insira a chave secreta gerada no feed do Google SecOps (que se torna o cabeçalho
X-Amz-Firehose-Access-Key
). - Dicas de buffer: defina Tamanho do buffer = 1 MiB, Intervalo do buffer = 60 segundos.
- Compactação: selecione Desativada.
- Backup do S3: selecione Desativado.
- Deixe as configurações de retry e logging como default.
- Insira a chave secreta gerada no feed do Google SecOps (que se torna o cabeçalho
- Clique em Criar fluxo de entrega.
Inscrever o grupo de registros do CloudWatch no fluxo do Firehose
- Acesse CloudWatch > Registros > Grupos de registros.
- Selecione o grupo de registros de destino (por exemplo,
/aws/vpc/flowlogs
). - Abra a guia Filtros de assinatura e clique em Criar.
- Escolha Criar filtro de assinatura do Amazon Kinesis Data Firehose.
- Informe os seguintes detalhes de configuração:
- Destino: selecione o fluxo de exibição
cwlogs-to-secops
. - Conceder permissão: escolha o papel
CWLtoFirehoseRole
. - Nome do filtro: insira
all-events
. - Padrão de filtro: deixe em branco para enviar todos os eventos.
- Destino: selecione o fluxo de exibição
- Clique em Iniciar streaming.
Opção 3: configurar os registros de fluxo da VPC da AWS no formato CSV usando o Amazon S3
Transformar registros no formato CSV (opcional)
- Verifique se as linhas do CSV seguem uma ordem de colunas estrita e consistente que corresponda aos campos selecionados no formato personalizado dos registros de fluxo de VPC (por exemplo, o conjunto de campos canônicos v2 ou o conjunto v5/v7). Não inclua uma linha de cabeçalho em arquivos de produção, a menos que a opção do analisador espere uma.
- Grave arquivos CSV em um prefixo estável, por exemplo:
s3://<your-bucket>/vpcflowlogs-csv/<region>/year=<year>/month=<month>/day=<day>/
.
Configurar um feed no Google SecOps para ingerir registros de fluxo da VPC da AWS (CSV)
- Acesse Configurações do SIEM > Feeds.
- Clique em + Adicionar novo feed.
- No campo Nome do feed, insira um nome para o feed (por exemplo,
AWS VPC Flow Logs - S3 (CSV)
). - Selecione Amazon S3 V2 como o Tipo de origem.
- Selecione Fluxo de VPC da AWS (CSV) como o Tipo de registro.
- Clique em Próxima.
- Especifique valores para os seguintes parâmetros de entrada:
- URI do S3: insira o endereço do bucket do S3 (por exemplo,
s3://<your-bucket>/vpcflowlogs-csv/<region>/
). - Opções de exclusão de fontes: selecione a opção de exclusão de acordo com sua preferência.
- Idade máxima do arquivo: padrão de 180 dias.
- ID da chave de acesso: chave de acesso do usuário com acesso ao bucket do S3.
- Chave de acesso secreta: chave secreta do usuário com acesso ao bucket do S3.
- Namespace do recurso: o namespace do recurso.
- Rótulos de ingestão: o rótulo aplicado aos eventos deste feed.
- URI do S3: insira o endereço do bucket do S3 (por exemplo,
- Clique em Próxima.
- Revise a nova configuração do feed na tela Finalizar e clique em Enviar.
Tabela de mapeamento da UDM
Campo de registro | Mapeamento do UDM | Lógica |
---|---|---|
accountId | read_only_udm.metadata.product_log_id | Valor extraído do campo de registro bruto accountId . |
ação | read_only_udm.security_result.action_details | Valor extraído do campo de registro bruto action . |
ação | read_only_udm.security_result.action | Mapeado para ALLOW se action for ACCEPT e para BLOCK se action for REJECT . |
az_id | read_only_udm.principal.cloud.availability_zone | Valor extraído do campo de registro bruto az_id . |
bytes | read_only_udm.network.received_bytes | Valor extraído do campo de registro bruto bytes . |
dstaddr | read_only_udm.target.ip | Valor extraído do campo de registro bruto dstaddr . |
dstport | read_only_udm.target.port | Valor extraído do campo de registro bruto dstport . |
end_time | read_only_udm.about.resource.attribute.labels.value | Valor extraído do campo de registro bruto end_time . |
end_time | read_only_udm.metadata.ingested_timestamp | Valor extraído do campo de registro bruto end_time . |
flow_direction | read_only_udm.network.direction | Mapeado para INBOUND se flow_direction for ingress e para OUTBOUND se flow_direction for egress . |
InstanceID | read_only_udm.principal.cloud.project.id | Valor extraído do campo de registro bruto InstanceID . |
interfaceId | read_only_udm.about.resource.attribute.labels.value | Valor extraído do campo de registro bruto interfaceId . |
logStatus | read_only_udm.about.resource.attribute.labels.value | Valor extraído do campo de registro bruto logStatus . |
pacotes | read_only_udm.about.resource.attribute.labels.value | Valor extraído do campo de registro bruto packets . |
pkt_dst_aws_service | read_only_udm.about.resource.attribute.labels.value | Valor extraído do campo de registro bruto pkt_dst_aws_service . |
pkt_dstaddr | read_only_udm.intermediary.ip | Valor extraído do campo de registro bruto pkt_dstaddr . |
pkt_srcaddr | read_only_udm.intermediary.ip | Valor extraído do campo de registro bruto pkt_srcaddr . |
pkt_src_aws_service | read_only_udm.about.resource.attribute.labels.value | Valor extraído do campo de registro bruto pkt_src_aws_service . |
protocolo | read_only_udm.network.ip_protocol | Mapeado para TCP se protocol for 6, para UDP se protocol for 17 e para UNKNOWN_IP_PROTOCOL caso contrário. |
Região | read_only_udm.principal.location.country_or_region | Valor extraído do campo de registro bruto Region . |
srcaddr | read_only_udm.principal.ip | Valor extraído do campo de registro bruto srcaddr . |
srcport | read_only_udm.principal.port | Valor extraído do campo de registro bruto srcport . |
start_time | read_only_udm.about.resource.attribute.labels.value | Valor extraído do campo de registro bruto start_time . |
start_time | read_only_udm.metadata.event_timestamp | Valor extraído do campo de registro bruto start_time . |
SubnetID | read_only_udm.about.resource.attribute.labels.value | Valor extraído do campo de registro bruto SubnetID . |
tcp_flags | read_only_udm.about.resource.attribute.labels.value | Valor extraído do campo de registro bruto tcp_flags . |
traffic_path | read_only_udm.about.resource.attribute.labels.value | Valor extraído do campo de registro bruto traffic_path . |
version | read_only_udm.metadata.product_version | Valor extraído do campo de registro bruto version . |
vpcID | read_only_udm.principal.cloud.vpc.id | Valor extraído do campo de registro bruto vpcID . |
read_only_udm.metadata.vendor_name | Fixado no código como AMAZON . |
|
read_only_udm.metadata.product_name | Fixado no código como AWS VPC Flow . |
|
read_only_udm.metadata.log_type | Fixado no código como AWS_VPC_FLOW . |
|
read_only_udm.metadata.event_type | Mapeado para NETWORK_CONNECTION se dstaddr não estiver vazio. Caso contrário, será mapeado para GENERIC_EVENT . |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.