Recolha registos de fluxo da VPC da AWS
Este documento explica como ingerir registos de fluxo da VPC da AWS no Google Security Operations através de três métodos diferentes: Amazon S3 (formato de texto), registos do Amazon CloudWatch com o Kinesis Data Firehose e formato CSV no Amazon S3. Os registos de fluxo da VPC da AWS são uma funcionalidade que lhe permite capturar informações sobre o tráfego IP que entra e sai das interfaces de rede na sua VPC. Esta integração permite-lhe enviar estes registos para o Google SecOps para análise e monitorização.
Formatos de registos de fluxo da VPC da AWS suportados
O Google SecOps suporta a ingestão de registos de fluxo da VPC da AWS em dois formatos de texto principais:
- Formato JSON: o
AWS_VPC_FLOW
tipo de registo analisa registos no formato JSON. Neste formato, cada entrada de registo inclui uma chave e o respetivo valor, o que torna os dados autodescritivos. - Formato CSV: o Google SecOps também fornece um analisador para registos de fluxo da VPC da AWS no formato CSV. Este formato apresenta as chaves dos campos apenas uma vez na linha do cabeçalho, com as linhas subsequentes a conterem apenas valores separados por vírgulas.
Uma vez que o formato CSV não inclui chaves de campo em cada entrada de registo, o analisador AWS_VPC_FLOW_CSV baseia-se numa ordem de valores estrita e predefinida. Os seus ficheiros CSV têm de respeitar a seguinte ordem dos campos para uma análise correta:
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
Segue-se um exemplo de uma linha de registo 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 os campos em que não está disponível nenhum valor, deve ser transmitido um valor vazio (por exemplo, , ,) para manter a ordem posicional correta na linha CSV.
Antes de começar
Certifique-se de que tem os seguintes pré-requisitos:
- Instância do Google SecOps.
- Acesso privilegiado à AWS.
Opção 1: configure a exportação de registos de fluxo de VPC da AWS através do AWS S3 (formato de texto)
A secção seguinte descreve como configurar as autorizações do Amazon S3 e do Identity and Access Management para ativar a exportação de registos de fluxo de VPC para análise pelo Google SecOps.
Configure o contentor do AWS S3 e o IAM para o Google SecOps
- Crie um contentor do Amazon S3 seguindo este manual do utilizador: Criar um contentor.
- Guarde o nome e a região do contentor para referência futura (por exemplo,
aws-vpc-flowlogs
). - Crie um utilizador seguindo este guia do utilizador: criar um utilizador do IAM.
- Selecione o utilizador criado.
- Selecione o separador Credenciais de segurança.
- Clique em Criar chave de acesso na secção Chaves de acesso.
- Selecione Serviço de terceiros como Exemplo de utilização.
- Clicar em Seguinte.
- Opcional: adicione uma etiqueta de descrição.
- Clique em Criar chave de acesso.
- Clique em Transferir ficheiro CSV para guardar a chave de acesso e a chave de acesso secreta para referência futura.
- Clique em Concluído.
- Selecione o separador Autorizações.
- Clique em Adicionar autorizações na secção Políticas de autorizações.
- Selecione Adicionar autorizações.
- Selecione Anexar políticas diretamente.
- Pesquise a política AmazonS3FullAccess.
- Selecione a política.
- Clicar em Seguinte.
- Clique em Adicionar autorizações.
Crie registos de fluxo da VPC (destino: Amazon S3, formato de texto)
- Abra a consola da AWS > VPC > As suas VPCs/sub-redes/interfaces de rede e selecione o âmbito que quer registar.
- Clique em Ações > Criar registo de fluxo.
- Indique os seguintes detalhes de configuração:
- Filtro: escolha Tudo (ou Aceitar / Rejeitar) de acordo com a sua política.
- Intervalo de agregação máximo: selecione 1 minuto (recomendado) ou 10 minutos.
- Destino: enviar para um contentor do Amazon S3.
- ARN do contentor S3: introduza o nome do contentor criado na secção anterior no seguinte formato:
arn:aws:s3:::<your-bucket>
. - Formato de registo: selecione Formato predefinido da AWS.
- Formato do ficheiro de registo: selecione Texto (simples).
- Opcional: desative os prefixos compatíveis com o Hive e as partições por hora, a menos que precise deles.
- Clique em Criar registo de fluxo.
Configure um feed no Google SecOps para carregar registos de fluxo da VPC da AWS (texto S3)
- Aceda a Definições do SIEM > Feeds.
- Clique em + Adicionar novo feed.
- No campo Nome do feed, introduza um nome para o feed (por exemplo,
AWS VPC Flow Logs - S3 (Text)
). - Selecione Amazon S3 V2 como o Tipo de origem.
- Selecione AWS VPC Flow como o Tipo de registo.
- Clicar em Seguinte.
- Especifique valores para os seguintes parâmetros de entrada:
- URI do S3: introduza o endereço do contentor do S3 (por exemplo,
s3://<your-bucket>/AWSLogs/<account-id>/vpcflowlogs/<region>/
). - Opções de eliminação de origens: selecione a opção de eliminação de acordo com a sua preferência.
- Idade máxima do ficheiro: predefinição de 180 dias.
- ID da chave de acesso: chave de acesso do utilizador com acesso ao contentor do S3.
- Chave de acesso secreta: chave secreta do utilizador com acesso ao contentor do S3.
- Espaço de nomes do recurso: o espaço de nomes do recurso.
- Etiquetas de carregamento: a etiqueta aplicada aos eventos deste feed.
- URI do S3: introduza o endereço do contentor do S3 (por exemplo,
- Clicar em Seguinte.
- Reveja a nova configuração do feed no ecrã Finalizar e, de seguida, clique em Enviar.
Opção 2: configure a exportação de registos de fluxo de VPC da AWS através do Amazon CloudWatch Logs e do Kinesis Data Firehose
Depois de configurar os registos de fluxo para o CloudWatch, esta opção oferece uma camada adicional de exportação de dados através da transmissão em stream desses dados de registo para um destino à sua escolha com o Kinesis Data Firehose.
Criar registos de fluxo de VPC (destino: registos do Amazon CloudWatch)
- Abra a consola da AWS > VPC > Os seus VPCs/sub-redes/interfaces de rede.
- Clique em Ações > Criar registo de fluxo.
- Indique os seguintes detalhes de configuração:
- Filtro: escolha Tudo (ou Aceitar/Rejeitar) de acordo com a sua política.
- Intervalo de agregação máximo: selecione 1 minuto (recomendado) ou 10 minutos.
- Destino: selecione Enviar para os registos do CloudWatch.
- Grupo de registos de destino: selecione ou crie um grupo de registos (por exemplo,
/aws/vpc/flowlogs
). - Função do IAM: selecione uma função que possa escrever nos registos do CloudWatch.
- Formato de registo: selecione Predefinição da AWS (versão 2) ou Personalizado (inclui campos adicionais).
- Clique em Criar registo de fluxo.
Crie um feed no Google SecOps para obter o URL do ponto final e a chave secreta
- Aceda a Definições do SIEM > Feeds.
- Clique em + Adicionar novo feed.
- No campo Nome do feed, introduza um nome para o feed (por exemplo,
AWS VPC Flow Logs - CloudWatch via Firehose
). - Selecione Amazon Data Firehose como o Tipo de origem.
- Selecione AWS VPC Flow como o Tipo de registo.
- Clicar em Seguinte.
- Especifique valores para os seguintes parâmetros de entrada:
- Delimitador de divisão: opcional
n
. - Espaço de nomes do recurso: o espaço de nomes do recurso (por exemplo,
aws.vpc.flowlogs.cwl
). - Etiquetas de carregamento: a etiqueta a aplicar aos eventos deste feed (por exemplo,
source=vpc_flow_firehose
).
- Delimitador de divisão: opcional
- Clicar em Seguinte.
- Reveja a configuração do feed e clique em Enviar.
- Clique em Gerar chave secreta para gerar uma chave secreta para autenticar este feed.
- Copie e guarde a chave secreta, uma vez que não pode ver este segredo novamente.
- Aceda ao separador Detalhes.
- Copie o URL do ponto final do feed do campo Informações do ponto final.
- Clique em Concluído.
Crie uma chave da API para o feed do Amazon Data Firehose
- Aceda à página Credenciais da consola Google Cloud.
- Clique em Criar credenciais e, de seguida, selecione Chave de API.
- Copie e guarde a chave num local seguro.
- Restrinja o acesso da chave da API à API Google SecOps.
Configure as autorizações de IAM para o CloudWatch Logs para o Firehose
- Na consola da AWS, aceda a IAM > Políticas > Criar política > JSON.
Cole o JSON da política seguinte, 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" } ] }
Dê um nome à política
CWLtoFirehoseWrite
e clique em Criar política.Aceda a IAM > Funções > Criar função.
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.Dê o nome
CWLtoFirehoseRole
à função e clique em Criar função.
Configure o Amazon Kinesis Data Firehose para o Google SecOps
- Na consola da AWS, aceda a Kinesis > Data Firehose > Criar stream de entrega.
- Indique os seguintes detalhes de configuração:
- Origem: selecione Direct PUT ou outras origens.
- Destino: escolha Ponto final HTTP.
- Nome:
cwlogs-to-secops
- URL do ponto final HTTP: introduza o URL do ponto final HTTPS do feed do Google SecOps com a chave da API anexada:
<ENDPOINT_URL>?key=<API_KEY>
- Método HTTP: selecione POST.
- Em Chave de acesso:
- Introduza a chave secreta gerada no feed do Google SecOps (esta torna-se o cabeçalho
X-Amz-Firehose-Access-Key
). - Sugestões de colocação no buffer: defina Tamanho da memória intermédia = 1 MiB e Intervalo da memória intermédia = 60 segundos.
- Compressão: selecione Desativada.
- Cópia de segurança do S3: selecione Desativada.
- Deixe as definições de nova tentativa e registo como predefinição.
- Introduza a chave secreta gerada no feed do Google SecOps (esta torna-se o cabeçalho
- Clique em Criar stream de fornecimento.
Subscreva o grupo de registos do CloudWatch na stream do Firehose
- Aceda a CloudWatch > Registos > Grupos de registos.
- Selecione o grupo de registos de destino (por exemplo,
/aws/vpc/flowlogs
). - Abra o separador Filtros de subscrição e clique em Criar.
- Escolha Criar filtro de subscrição do Amazon Kinesis Data Firehose.
- Indique os seguintes detalhes de configuração:
- Destino: selecione a stream de fornecimento
cwlogs-to-secops
. - Conceder autorização: escolha a função
CWLtoFirehoseRole
. - Nome do filtro: introduza
all-events
. - Padrão de filtro: deixe em branco para enviar todos os eventos.
- Destino: selecione a stream de fornecimento
- Clique em Iniciar streaming.
Opção 3: configure os registos de fluxo da VPC da AWS no formato CSV através do Amazon S3
Transforme os registos no formato CSV (opcional)
- Certifique-se de que as linhas CSV seguem uma ordem de colunas rigorosa e consistente que corresponda aos campos selecionados no formato personalizado do registo de fluxo de VPC (por exemplo, o conjunto de campos canónico v2 ou o seu conjunto v5/v7). Não inclua uma linha de cabeçalho nos ficheiros de produção, a menos que a opção do analisador espere uma.
- Escreva ficheiros CSV num prefixo estável, por exemplo:
s3://<your-bucket>/vpcflowlogs-csv/<region>/year=<year>/month=<month>/day=<day>/
.
Configure um feed no Google SecOps para carregar registos de fluxo da VPC da AWS (CSV)
- Aceda a Definições do SIEM > Feeds.
- Clique em + Adicionar novo feed.
- No campo Nome do feed, introduza um nome para o feed (por exemplo,
AWS VPC Flow Logs - S3 (CSV)
). - Selecione Amazon S3 V2 como o Tipo de origem.
- Selecione AWS VPC Flow (CSV) como o Tipo de registo.
- Clicar em Seguinte.
- Especifique valores para os seguintes parâmetros de entrada:
- URI do S3: introduza o endereço do contentor do S3 (por exemplo,
s3://<your-bucket>/vpcflowlogs-csv/<region>/
). - Opções de eliminação de origens: selecione a opção de eliminação de acordo com a sua preferência.
- Idade máxima do ficheiro: predefinição de 180 dias.
- ID da chave de acesso: chave de acesso do utilizador com acesso ao contentor do S3.
- Chave de acesso secreta: chave secreta do utilizador com acesso ao contentor do S3.
- Espaço de nomes do recurso: o espaço de nomes do recurso.
- Etiquetas de carregamento: a etiqueta aplicada aos eventos deste feed.
- URI do S3: introduza o endereço do contentor do S3 (por exemplo,
- Clicar em Seguinte.
- Reveja a nova configuração do feed no ecrã Finalizar e, de seguida, clique em Enviar.
Tabela de mapeamento do UDM
Campo de registo | Mapeamento do UDM | Lógica |
---|---|---|
accountId | read_only_udm.metadata.product_log_id | Valor extraído do campo de registo não processado accountId . |
ação | read_only_udm.security_result.action_details | Valor extraído do campo de registo não processado action . |
ação | read_only_udm.security_result.action | Mapeado para ALLOW se action for ACCEPT, mapeado para BLOCK se action for REJECT . |
az_id | read_only_udm.principal.cloud.availability_zone | Valor extraído do campo de registo não processado az_id . |
bytes | read_only_udm.network.received_bytes | Valor extraído do campo de registo não processado bytes . |
dstaddr | read_only_udm.target.ip | Valor extraído do campo de registo não processado dstaddr . |
dstport | read_only_udm.target.port | Valor extraído do campo de registo não processado dstport . |
end_time | read_only_udm.about.resource.attribute.labels.value | Valor extraído do campo de registo não processado end_time . |
end_time | read_only_udm.metadata.ingested_timestamp | Valor extraído do campo de registo não processado end_time . |
flow_direction | read_only_udm.network.direction | Mapeado para INBOUND se flow_direction for ingress , mapeado para OUTBOUND se flow_direction for egress . |
InstanceID | read_only_udm.principal.cloud.project.id | Valor extraído do campo de registo não processado InstanceID . |
interfaceId | read_only_udm.about.resource.attribute.labels.value | Valor extraído do campo de registo não processado interfaceId . |
logStatus | read_only_udm.about.resource.attribute.labels.value | Valor extraído do campo de registo não processado logStatus . |
pacotes | read_only_udm.about.resource.attribute.labels.value | Valor extraído do campo de registo não processado packets . |
pkt_dst_aws_service | read_only_udm.about.resource.attribute.labels.value | Valor extraído do campo de registo não processado pkt_dst_aws_service . |
pkt_dstaddr | read_only_udm.intermediary.ip | Valor extraído do campo de registo não processado pkt_dstaddr . |
pkt_srcaddr | read_only_udm.intermediary.ip | Valor extraído do campo de registo não processado pkt_srcaddr . |
pkt_src_aws_service | read_only_udm.about.resource.attribute.labels.value | Valor extraído do campo de registo não processado pkt_src_aws_service . |
protocolo | read_only_udm.network.ip_protocol | Mapeado para TCP se protocol for 6, mapeado para UDP se protocol for 17, caso contrário, mapeado para UNKNOWN_IP_PROTOCOL. |
Região | read_only_udm.principal.location.country_or_region | Valor extraído do campo de registo não processado Region . |
srcaddr | read_only_udm.principal.ip | Valor extraído do campo de registo não processado srcaddr . |
srcport | read_only_udm.principal.port | Valor extraído do campo de registo não processado srcport . |
start_time | read_only_udm.about.resource.attribute.labels.value | Valor extraído do campo de registo não processado start_time . |
start_time | read_only_udm.metadata.event_timestamp | Valor extraído do campo de registo não processado start_time . |
SubnetID | read_only_udm.about.resource.attribute.labels.value | Valor extraído do campo de registo não processado SubnetID . |
tcp_flags | read_only_udm.about.resource.attribute.labels.value | Valor extraído do campo de registo não processado tcp_flags . |
traffic_path | read_only_udm.about.resource.attribute.labels.value | Valor extraído do campo de registo não processado traffic_path . |
versão | read_only_udm.metadata.product_version | Valor extraído do campo de registo não processado version . |
vpcID | read_only_udm.principal.cloud.vpc.id | Valor extraído do campo de registo não processado vpcID . |
read_only_udm.metadata.vendor_name | Codificado para AMAZON . |
|
read_only_udm.metadata.product_name | Codificado para AWS VPC Flow . |
|
read_only_udm.metadata.log_type | Codificado para AWS_VPC_FLOW . |
|
read_only_udm.metadata.event_type | Mapeado para NETWORK_CONNECTION se dstaddr não estiver vazio, caso contrário, mapeado para GENERIC_EVENT . |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais da Google SecOps.