Coletar registros de fluxo de VPC da AWS

Versão do analisador:17.0

Compatível com:

Este documento explica como ingerir registros de fluxo da 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 aceitos

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, o que torna os dados autodescritivos.
  • Formato CSV: o Google SecOps também oferece um analisador para registros de fluxo de VPC da AWS no 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

  1. Crie um bucket do Amazon S3 seguindo este guia do usuário: Como criar um bucket.
  2. Salve o Nome e a Região do bucket para referência futura (por exemplo, aws-vpc-flowlogs).
  3. Crie um usuário seguindo este guia: Como criar um usuário do IAM.
  4. Selecione o usuário criado.
  5. Selecione a guia Credenciais de segurança.
  6. Clique em Criar chave de acesso na seção Chaves de acesso.
  7. Selecione Serviço de terceiros como Caso de uso.
  8. Clique em Próxima.
  9. Opcional: adicione uma tag de descrição.
  10. Clique em Criar chave de acesso.
  11. Clique em Fazer o download do arquivo CSV para salvar a chave de acesso e a chave de acesso secreta para referência futura.
  12. Clique em Concluído.
  13. Selecione a guia Permissões.
  14. Clique em Adicionar permissões na seção Políticas de permissões.
  15. Selecione Adicionar permissões.
  16. Selecione Anexar políticas diretamente.
  17. Pesquise a política AmazonS3FullAccess.
  18. Selecione a política.
  19. Clique em Próxima.
  20. Clique em Adicionar permissões

Criar registros de fluxo de VPC (destino: Amazon S3, formato de texto)

  1. Abra o console da AWS > VPC > Suas VPCs/Sub-redes/Interfaces de rede e selecione o escopo que você quer registrar.
  2. Clique em Ações > Criar registro de fluxo.
  3. 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 (sem formatação).
    • Opcional: desative os prefixos compatíveis com o Hive e as partições por hora, a menos que você precise deles.
  4. Clique em Criar registro de fluxo.

Configurar um feed no Google SecOps para ingerir registros de fluxo da VPC da AWS (texto do S3)

  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, AWS VPC Flow Logs - S3 (Text)).
  4. Selecione Amazon S3 V2 como o Tipo de origem.
  5. Selecione Fluxo de VPC da AWS como o Tipo de registro.
  6. Clique em Próxima.
  7. 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 da fonte: 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.
  8. Clique em Próxima.
  9. 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)

  1. Abra o console da AWS > VPC > Suas VPCs/sub-redes/interfaces de rede.
  2. Clique em Ações > Criar registro de fluxo.
  3. 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 o CloudWatch Logs.
    • 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).
  4. Clique em Criar registro de fluxo.

Criar um feed no Google SecOps para receber o URL do endpoint e a chave secreta

  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, AWS VPC Flow Logs - CloudWatch via Firehose).
  4. Selecione Amazon Data Firehose como o Tipo de origem.
  5. Selecione Fluxo de VPC da AWS como o Tipo de registro.
  6. Clique em Próxima.
  7. 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).
  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 uma chave de API para o feed do Amazon Data Firehose

  1. Acesse a página Credenciais do console do Google Cloud.
  2. Clique em Criar credenciais e selecione Chave de API.
  3. Copie e salve a chave em um local seguro.
  4. Restrinja o acesso da chave de API à API Google SecOps.

Configurar permissões do IAM para o CloudWatch Logs no Firehose

  1. No console da AWS, acesse IAM > Políticas > Criar política > JSON.
  2. 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"
       }
    ]
    }
    
  3. Nomeie a política como CWLtoFirehoseWrite e clique em Criar política.

  4. Acesse IAM > Papéis > Criar papel.

  5. 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"
       }
    ]
    }
    
  6. Anexe a política CWLtoFirehoseWrite à função.

  7. Nomeie a função como CWLtoFirehoseRole e clique em Criar função.

Configurar o Amazon Kinesis Data Firehose para o Google SecOps

  1. No console da AWS, acesse Kinesis > Data Firehose > Criar fluxo de entrega.
  2. 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.
  3. 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.
  4. Clique em Criar fluxo de entrega.

Inscrever o grupo de registros do CloudWatch no fluxo do Firehose

  1. Acesse CloudWatch > Registros > Grupos de registros.
  2. Selecione o grupo de registros de destino (por exemplo, /aws/vpc/flowlogs).
  3. Abra a guia Filtros de assinatura e clique em Criar.
  4. Escolha Criar filtro de assinatura do Amazon Kinesis Data Firehose.
  5. Informe os seguintes detalhes de configuração:
    • Destino: selecione o fluxo de entrega 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.
  6. 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)

  1. 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.
  2. 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)

  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, AWS VPC Flow Logs - S3 (CSV)).
  4. Selecione Amazon S3 V2 como o Tipo de origem.
  5. Selecione Fluxo de VPC da AWS (CSV) como o Tipo de registro.
  6. Clique em Próxima.
  7. 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 da fonte: 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.
  8. Clique em Próxima.
  9. Revise a nova configuração do feed na tela Finalizar e clique em Enviar.

Tabela de mapeamento de UDM

Exemplo de registro Campo de registro Mapeamento de UDM
"entries: { data: ""7,11111111111,eni-11aa1a1a1a1aa1a,1.1.1.1,2.2.2.2,51256,16020,6,14,3881,1723542839,1723542871,ACCEPT,OK,vpc-1aa1a1a1a1aa1aa,subnet-1aa1a1a1a1aa1a1,i-1aa1a1a1a1aa1a,0,IPv4,1.1.1.1,2.2.2.2,ap-northeast-1,masked_zone,-,-,-,-,ingress,,-,-,-,-,-,-,-,-,-,-"" collection_time: { seconds: 1741159282 nanos: 254633949 } }" 7 metadata.product_version
11111111111 metadata.product_log_id
eni-11aa1a1a1a1aa1a principal.user.product_object_id
1.1.1.1 principal.ip
2.2.2.2 target.ip
51256 principal.port
16020 target.port
6 network.ip_protocol
14 network.sent_packets
3881 network.received_bytes
1723542839 metadata.event_timestamp about.resource.attribute.labels(start_time)
1723542871 metadata.ingested_timestamp about.resource.attribute.labels(end_time)
ACCEPT security_result.action security_result.action_details
OK about.resource.attribute.labels (log-status)
vpc-1aa1a1a1a1aa1a principal.resource.attribute.labels (vpcID)
subnet-a1a1a1a1a1 principal.asset_id
i-1aa1a1a1a1aa1a principal.resource_ancestors.product_object_id
0 about.resource.attribute.labels (type)
IPv4 additional.fields (pkt-srcaddr-ip)
1.1.1.1 intermediary.ip
2.2.2.2 additional.fields (tcp_flags)
ap-northeast-1 not getting mapped
masked_zone not getting mapped
- about.resource.attribute.labels (sublocation_type)
- about.resource.attribute.labels (sublocation_id)
- about.resource.attribute.labels (pkt_src_aws_service)
- about.resource.attribute.labels (pkt_dst_aws_service)
ingress network.direction
additional.fields (traffic_path)
- not getting mapped
- not getting mapped-
"entries: { data: ""7,11111111111,eni-11aa1a1a1a1aa1a,5.5.5.5,2.2.2.2,53102,16020,6,8,2112,1723542839,1723542871,ACCEPT,OK,vpc-1aa1a1a1a1aa1a,subnet-1aa1a1a1a1aa1a,i-1aa1a1a1a1aa1a,0,IPv4,5.5.5.5,2.2.2.2,ap-northeast-1,masked_zone,-,-,-,-,ingress,,-,-,-,-,-,-,-,-,-,-"" collection_time: { seconds: 1741159390 nanos: 374934225 } }" 7 metadata.product_version
11111111111 metadata.product_log_id
eni-11aa1a1a1a1aa1a principal.user.product_object_id
5.5.5.5 principal.ip
2.2.2.2 target.ip
53102 principal.port
16020 target.port
6 network.ip_protocol
8 network.sent_packets
2112 network.received_bytes
1723542839 metadata.event_timestamp about.resource.attribute.labels(start_time)
1723542871 metadata.ingested_timestamp about.resource.attribute.labels(end_time)
ACCEPT security_result.action security_result.action_details
OK about.resource.attribute.labels (log-status)
vpc-1aa1a1a1a1aa1a principal.resource.attribute.labels (vpcID)
subnet-1aa1a1a1a1aa1a principal.asset_id
i-1aa1a1a1a1aa1a principal.resource_ancestors.product_object_id
0 about.resource.attribute.labels (type)
IPv4 additional.fields (pkt-srcaddr-ip)
5.5.5.5 intermediary.ip
2.2.2.2 additional.fields (tcp_flags)
ap-northeast-1 not getting mapped
masked_zone not getting mapped
- about.resource.attribute.labels (sublocation_type)
- about.resource.attribute.labels (sublocation_id)
- about.resource.attribute.labels (pkt_src_aws_service)
- about.resource.attribute.labels (pkt_dst_aws_service)
ingress network.direction
additional.fields (traffic_path)
- not getting mapped
- not getting mapped1
"entries: { data: ""7,11111111111,eni-11aa1a1a1a1aa1a,1.1.2.2,1.1.2.1,36358,42659,6,1091,3.754327e+06,1747981553,1747981582,ACCEPT,OK,vpc-1aa1a1a1a1aa1a,subnet-1aa1a1a1a1aa1a,i-1aa1a1a1a1aa1a,0,IPv4,1.1.2.2,1.1.2.1,ap-northeast-1,apne1-az1,-,-,-,-,egress,1,-,-,-,-,-,-,-,-,-,-,604249"" collection_time: { seconds: 1748238552 nanos: 479960397 } }" 7 metadata.product_version
11111111111 metadata.product_log_id
eni-11aa1a1a1a1aa1a about.resource.attribute.labels
1.1.2.2 principal.ip
1.1.2.1 target.ip
36358 principal.port
42659 target.port
6 network.ip_protocol
1091 network.sent_packets
3.75E+06 network.sent_bytes
1747981553 metadata.event_timestamp about.resource.attribute.labels(start_time)
1747981582 metadata.ingested_timestamp about.resource.attribute.labels(end_time)
ACCEPT security_result.action security_result.action_details
OK about.resource.attribute.labels (log-status)
vpc-1aa1a1a1a1aa1a principal.resource.attribute.labels (vpcID)
subnet-1aa1a1a1a1aa1a principal.asset_id
i-1aa1a1a1a1aa1a principal.resource_ancestors.product_object_id
0 additional.fields (tcp_flags)
IPv4 about.resource.attribute.labels(type)
1.1.2.2 "additional.fields (pkt-srcaddr-ip)
Condição:
if [pkt_dstaddr_ip] != [dstaddr] will map to intermediary.ip"
1.1.2.1 "additional.fields (pkt-dstaddr-ip)
Condição:
if [pkt_srcaddr_ip] != [srcaddr] will map to intermediary.ip"
ap-northeast-1 principal.location.country_or_region
apne1-az1 principal.location.name
- about.resource.attribute.labels (sublocation_type)
- about.resource.attribute.labels (sublocation_id)
- about.resource.attribute.labels (pkt_src_aws_service)
- about.resource.attribute.labels (pkt_dst_aws_service)
egress network.direction
1 additional.fields (traffic_path)
- not getting mapped
604249 not getting mapped
Connection_info.Tcp_flags additional.fields
connection_info.tcp_flags additional.fields
Dst_endpoint.Interface_uid target.user.product_object_id
Log_status additional.fields
Src_endpoint.Instance_uid principal.user.product_object_id
Tcp_flags additional.fields
tcp_flags additional.fields
tgw_dst_az_id target.resource.attribute.cloud.availability_zone
tgw_id target.resource.product_object_id
tgw_src_az_id principal.location.name
Traffic_Bytes network.sent_bytes
Traffic_Packets network.sent_packets

Delta de lançamento

O Google SecOps lançou a versão 16.0 do analisador de registros de fluxo de VPC da AWS, que inclui mudanças significativas no mapeamento de campos de registro Parser_Name para campos UDM e no mapeamento de tipos de eventos.

Delta de mapeamento de campo de registro

Campo de registro Mapeamento antigo Mapeamento atual
bytes network.sent_bytes Removed
Connection_info.Tcp_flags network.dhcp.flags additional.fields
connection_info.tcp_flags network.dhcp.flags additional.fields
Dst_endpoint.Interface_uid additional.fields target.user.product_object_id
flow_direction about.resource.attribute.labels Removed
Log_status about.resource.attribute.labels additional.fields
Src_endpoint.Instance_uid additional.fields principal.user.product_object_id
Tcp_flags network.dhcp.flags additional.fields
tcp_flags network.dhcp.flags additional.fields
tgw_dst_az_id target.resource.attribute.labels target.resource.attribute.cloud.availability_zone
tgw_id additional.fields target.resource.product_object_id
tgw_src_az_id principal.resource.attribute.labels principal.location.name
Traffic_Bytes additional.fields network.sent_bytes
Traffic_Packets additional.fields network.sent_packets

Delta de mapeamento de tipo de evento

Vários eventos que foram classificados de forma genérica agora são classificados corretamente com tipos de eventos significativos.

Tipo de evento Campos do registro Motivo
FILE_UNCATEGORIZED Bytes Ele é processado recentemente nesta solicitação de pull mapeada para um tipo de evento específico e adequado.
NETWORK_CONNECTION protocol Ele é processado recentemente nesta solicitação de pull, mapeado para um tipo de evento específico e adequado.
NETWORK_UNCATEGORIZED Class_name Ele é processado recentemente nesta solicitação de pull mapeada para um tipo de evento específico e adequado.
NETWORK_UNCATEGORIZED flow_direction Ele é processado recentemente nesta solicitação de pull mapeada para um tipo de evento específico e adequado.
STATUS_UPDATE [src_endpoint][ip] Ele é processado recentemente nesta solicitação de pull, mapeado para um tipo de evento específico e adequado.

Registro de alterações

Ver o registro de alterações deste analisador

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