Como usar registros de fluxo da VPC

Os registros de fluxo de VPC registram uma amostra de fluxos de rede enviados e recebidos por instâncias de VM. Esses registros podem ser usados para monitoramento de rede, perícia forense, análise de segurança em tempo real e otimização de despesas.

É possível visualizar os registros de fluxo no Stackdriver Logging e exportá-los para qualquer destino aceito pela exportação do Stackdriver Logging, como Cloud Pub/Sub, BigQuery e assim por diante.

Os registros de fluxo são agregados por conexão das VMs do Compute Engine em intervalos de cinco segundos e exportados em tempo real. Quando você assina o Cloud Pub/Sub, é possível analisar os registros de fluxo com APIs de streaming em tempo real.

Principais propriedades

  • É possível ativar ou desativar os registros de fluxo da VPC por sub-rede VPC. Caso sejam ativados para uma sub-rede, os registros de fluxo da VPC coletam dados de todas as instâncias de VM nessa sub-rede.
  • As VMs relatam todos os fluxos TCP e UDP. Cada registro de fluxo inclui as informações descritas na seção Formato de registro.
  • Cada VM examina os fluxos TCP e UDP detectados por ela, as entrada e saídas, se o fluxo parte de outra VM ou se vai na direção dela, de um host no seu data center local, de um serviço do Google ou de um host na Internet. Se duas VMs do GCP estiverem se comunicando e ambas estiverem em sub-redes com registros de fluxo da VPC ativados, as duas vão informar os fluxos.
  • Você pode usar filtros para selecionar quais registros de fluxo são excluídos do Stackdriver Logging e quais são exportados para APIs externas.
  • Os registros de fluxo da VPC são integrados nativamente à pilha de rede da infraestrutura de rede VPC. Não há atraso extra e nenhuma penalidade de desempenho no roteamento dos pacotes IP registrados para seu destino.

Casos de uso

Monitoramento de rede

Os registros de fluxo de VPC fornecem visibilidade em tempo real da capacidade e do desempenho da rede. Você pode:

  • monitorar a rede VPC;
  • realizar o diagnóstico de rede;
  • filtrar os registros de fluxo por VM e por aplicativo para entender as alterações no tráfego;
  • entender o crescimento do tráfego para previsão de capacidade.

Como entender o uso da rede e como otimizar as despesas de tráfego

É possível analisar o uso da rede com os registros de fluxo de VPC. Você pode analisar os fluxos de rede de:

  • tráfego entre regiões e zonas;
  • tráfego para países específicos na Internet;
  • principais talkers.

Com base na análise, você pode otimizar as despesas de tráfego da rede.

Perícia forense da rede

É possível usar os registros de fluxo de VPC para fazer uma análise forense na rede. Por exemplo, se houver um incidente, você pode examinar:

  • quais IPs conversaram com quem e quando isso aconteceu;
  • todos os IPs comprometidos, pela análise de todos os fluxos de rede de entrada e de saída.

Análise de segurança em tempo real

É possível aproveitar as APIs de streaming em tempo real (por meio do Cloud Pub/Sub) e as integrar aos sistemas de Gerenciamento e Correlação de Eventos de Segurança (SIEM, na sigla em inglês). Isso pode fornecer monitoramento em tempo real, correlação de eventos, análise e alertas de segurança.

Coleta de registros

Os registros de fluxo são coletados para cada conexão de VM a cada cinco segundos. Esses dados são anotados e enviados ao Stackdriver Logging com os dados e o formato descritos aqui.

Os registros são armazenados no Stackdriver Logging por 30 dias. Se você quiser manter os registros por mais tempo, será preciso exportá-los para um destino compatível.

Alguns campos de registro aparecem em um formato múltiplo, com mais de um dado em cada campo. Por exemplo, o campo connection tem o formato IpConnection, que contém em um único campo a porta e o endereço IP, de origem e de destino, além do protocolo. Esses vários campos estão descritos abaixo da tabela de formatos de registro.

Formato do registro

Campo Formato do campo Tipo de campo: base ou metadados opcionais
connection IpConnection
Quíntuplo que descreve esta conexão.
Base
start_time string
Carimbo de data/hora (formato de string de data RFC 3339) do primeiro pacote observado durante o intervalo de tempo agregado
Base
end_time string
Carimbo de data/hora (formato de string de data RFC 3339) do último pacote observado durante o intervalo de tempo agregado
Base
bytes_sent int64
Quantidade de bytes enviados da origem para o destino
Base
packets_sent int64
Número de pacotes enviados da origem para o destino
Base
rtt_msec int64
Latência medida (somente para fluxos de TCP) durante o intervalo de tempo. É o tempo decorrido entre o envio de um SEQ e o recebimento de um ACK correspondente. Contém o RTT da rede, bem como o atraso relacionado ao aplicativo.
Base
reporter string
O lado que informou o fluxo. Pode ser "SRC" ou "DEST".
Base
src_instance InstanceDetails
Se a origem da conexão for uma VM localizada na mesma VPC, esse campo é preenchido com detalhes da instância da VM. Em uma configuração de VPC compartilhada, project_id corresponde ao projeto que é proprietário da instância, geralmente o projeto de serviço.
Metadados
dest_instance InstanceDetails
Se o destino da conexão for uma VM localizada na mesma VPC, esse campo é preenchido com detalhes da instância da VM. Em uma configuração de VPC compartilhada, project_id corresponde ao projeto que é proprietário da instância, geralmente o projeto de serviço.
Metadados
src_vpc VpcDetails
Se a origem da conexão for uma VM localizada na mesma VPC, esse campo é preenchido com detalhes da rede VPC. Em uma configuração de VPC compartilhada, project_id corresponde ao projeto host.
Metadados
dest_vpc VpcDetails
Se o destino da conexão for uma VM localizada na mesma VPC, esse campo é preenchido com detalhes da rede VPC. Em uma configuração de VPC compartilhada, project_id corresponde ao projeto host.
Metadados
src_location GeographicDetails
Se a origem da conexão for externa ao Google VPC, este campo é preenchido com os metadados de local disponíveis.
Metadados
dest_location GeographicDetails
Se o destino da conexão for externo ao Google VPC, este campo é preenchido com os metadados de local disponíveis.
Metadados

Formato do campo IpConnection

Campo Tipo Descrição
src_ip string Endereço IP de origem
src_port int32 Porta de origem
dest_ip string Endereço IP de destino
dest_port int32 Porta de destino
protocolo int32 Número do protocolo IANA

Formato do campo InstanceDetails

Campo Tipo Descrição
project_id string Código do projeto que contém a VM
vm_name string Nome da instância da VM
region string Região da VM
zone string Zona da VM

Formato do campo VpcDetails

Campo Tipo Descrição
project_id string Código do projeto que contém a VPC
vpc_name string VPC em que a VM está operando
subnetwork_name string Sub-rede em que a VM está operando

Formato do campo GeographicDetails

Campo Tipo Descrição
continent string Continente para pontos de extremidade externos
country string País para pontos de extremidade externos
region string Região para pontos de extremidade externos
city string Cidade para pontos de extremidade externos
asn int32 O número de sistema autônomo (ASN, na sigla em inglês) da rede externa a que este ponto de extremidade pertence.

Exemplos de padrão de tráfego

Esta seção demonstra como os registros de fluxo de VPC funcionam nos seguintes casos de uso:

Fluxos de VM para VM na mesma VPC

VM flui dentro de uma VPC (clique para ampliar)
VM flui dentro de uma VPC (clique para ampliar)

Para os fluxos de VM para VM na mesma VPC, os registros de fluxo são informados tanto pela VM solicitante quanto pela que VM que responde, desde que ambas estejam em sub-redes com registros de fluxo de VPC ativados. Neste exemplo, a VM 10.10.0.1 envia uma solicitação com 1224 bytes para a VM 10.50.0.2, que também está em uma sub-rede com o registro ativado. Por sua vez, 10.50.0.2 responde ao pedido com uma réplica com 5342 bytes. Tanto a solicitação quanto a resposta são registradas nas duas VMs, a que solicitou e a que respondeu.

Conforme informado pela VM solicitante (10.10.0.1)
solicitação/resposta connection.src_ip connection.dest_ip sent_bytes Anotações de VPC
solicitação 10.10.0.1 10.50.0.2 1.224 src_instance.*
dest_instance.*
src_vpc.*
dest_vpc.*
resposta 10.50.0.2 10.10.0.1 5.342 src_instance.*
dest_instance.*
src_vpc.*
dest_vpc.*
Conforme informado pela VM respondente (10.50.0.2)
solicitação/resposta connection.src_ip connection.dest_ip bytes Anotações de VPC
solicitação 10.10.0.1 10.50.0.2 1.224 src_instance.*
dest_instance.*
src_vpc.*
dest_vpc.*
resposta 10.50.0.2 10.10.0.1 5.342 src_instance.*
dest_instance.*
src_vpc.*
dest_vpc.*

Fluxos de VM para elementos externos

Fluxos de VM para elemento externo (clique para ampliar)
Fluxos de VM para elemento externo (clique para ampliar)

Para fluxos entre uma VM e uma entidade externa, os registros de fluxo são informados apenas a partir da VM:

  • Para fluxos de saída, os registros são informados pela VM de que o tráfego se origina.
  • Para fluxos de entrada, os registros são informados pela VM para que o tráfego se destina.

Isso se aplica a:

  • Tráfego entre uma rede VPC e uma rede local por meio de uma VPN ou do Cloud Interconnect.
  • Tráfego entre VMs e locais na Internet.

Neste exemplo, a VM 10.10.0.1 e o ponto de extremidade local 10.30.0.2 estão conectados por meio de um gateway de VPN ou pelo Cloud Interconnect. O tráfego de saída de 1224 bytes enviados de 10.10.0.1 para 10.30.0.2 é relatado a partir da VM de origem, 10.10.0.1. O tráfego de entrada de 5342 bytes enviados de 10.30.0.2 para 10.10.0.1 é informado a partir do destino do tráfego, a VM 10.10.0.1.

solicitação/resposta connection.src_ip connection.dest_ip sent_bytes Anotações de VPC
solicitação 10.10.0.1 10.30.0.2 1.224 src_instance.*
src_vpc.*
dest_location.*
resposta 10.30.0.2 10.10.0.1 5.342 dest_instance.*
dest_vpc.*
src_location.*

Fluxos de VM para VM na VPC compartilhada

Fluxos de VPC compartilhada (clique para ampliar)
Fluxos de VPC compartilhada (clique para ampliar)

Para os fluxos de VM para VM em uma VPC compartilhada, é possível ativar os registros de fluxo de VPC para a sub-rede no projeto host. Por exemplo, a sub-rede 10.10.0.0/20 pertence a uma rede VPC compartilhada definida em um projeto host. É possível visualizar os registros de fluxo das VMs pertencentes a essa sub-rede, incluindo aqueles criados por projetos de serviço. Neste exemplo, os projetos de serviço são chamados de "webserver", "recommendation" e "database".

Para fluxos de VM para VM, quando as duas VMs estão no mesmo projeto ou, no caso de uma rede compartilhada, no mesmo projeto host, as anotações para código do projeto e similares serão fornecidas para o outro ponto de extremidade na conexão. Se a outra VM estiver em um projeto diferente, a anotação para a outra VM não será fornecida.

A tabela a seguir mostra um fluxo conforme informado por 10.10.0.1 ou 10.10.0.20.

  • src_vpc.project_id e dest_vpc.project_id são para o projeto host porque a sub-rede VPC pertence ao projeto host.
  • src_instance.project_id e dest_instance.project_id são para os projetos de serviço porque as instâncias pertencem aos projetos de serviço.
connection
.src_ip
src_instance
.project_id
src_vpc
.project_id
connection
.dest_ip
dest_instance
.project_id
dest_vpc
.project_id
10.10.0.1 webserver host_project 10.10.0.20 recommendation host_project

Os projetos de serviço não têm a propriedade da rede VPC compartilhada e não têm acesso aos registros de fluxo da rede VPC compartilhada.

Fluxos VM para VM para peering de VPC

Fluxos de peering de VPC (clique para ampliar)
Fluxos de peering de VPC (clique para ampliar)

A menos que ambas as VMs estejam no mesmo projeto do GCP, os fluxos de VM para VM para VPCs em peering são informados da mesma maneira que para os pontos de extremidade externos - as informações do projeto e de outras anotações da outra VM não são fornecidas. Se ambas as VMs estiverem no mesmo projeto, mesmo que em redes diferentes, as informações do projeto e de outras anotações também são fornecidas para a outra VM.

Neste exemplo, as sub-redes da VM 10.10.0.1 (no projeto analytics-prod) e da VM 10.50.0.2 (no projeto webserver-test) são conectadas por meio do peering de VPC. Se os registros de fluxo do VPC são ativados no projeto analytics-prod, o tráfego (1224 bytes) enviado de 10.10.0.1 para 10.50.0.2 é informado a partir da VM 10.10.0.1, que é a origem do fluxo. O tráfego (5342 bytes) enviado de 10.50.0.2 para 10.10.0.1 também é informado a partir da VM 10.10.0.1, que é o destino do fluxo.

Neste exemplo, os registros de fluxo de VPC não estão ativados no projeto webserver-test, portanto nenhum registro é gravado pela VM 10.50.0.2.

reportado por connection.src_ip connection.dest_ip sent_bytes Anotações de VPC
origem 10.10.0.1 10.50.0.2 1.224 src_instance.*
src_vpc.*
destino 10.50.0.2 10.10.0.1 5.342 dest_instance.*
dest_vpc.*

Fluxos de VM para VM para balanceamento de carga interno

Fluxos de balanceamento de carga interno (clique para ampliar)
Fluxos de balanceamento de carga interno (clique para ampliar)

Quando uma VM é adicionada ao serviço de back-end para um balanceador de carga interno, o ambiente convidado do Linux ou do Windows adiciona o endereço IP do balanceador de carga à tabela de roteamento local da VM. Assim, a VM aceita pacotes de solicitação com destinos definidos para o endereço IP do balanceador de carga. Quando a VM responde, a resposta é enviada diretamente. No entanto, o endereço IP de origem dos pacotes de resposta é definido pelo endereço IP do balanceador de carga, não pela VM com balanceamento de carga.

Os fluxos de VM para VM enviados por meio de um balanceador de carga interno são informados para a origem e o destino. Para um exemplo de par solicitação/resposta HTTP, a tabela a seguir explica os campos das entradas de registro de fluxo observadas. Para este exemplo, considere a seguinte configuração de rede:

  • instância do navegador em 10.100.0.2
  • instância do servidor da Web em 10.100.0.3
  • balanceador de carga interno em 10.100.0.4
Direção do tráfego reportado por connection.src_ip connection.dest_ip connection.src_instance connection.dest_instance
Solicitação SRC 10.100.0.2 10.100.0.4 Instância do navegador
Solicitação DEST 10.100.0.2 10.100.0.4 Instância do navegador Instância do servidor da Web
Resposta SRC 10.100.0.4 10.100.0.2 Instância do servidor da Web Instância do navegador
Resposta DEST 10.100.0.4 10.100.0.2 Instância do navegador

A VM solicitante não sabe qual VM responderá à solicitação. Além disso, uma vez que a outra VM envia uma resposta tendo como endereço de origem o IP do balanceador de carga interno, ela não sabe qual VM respondeu. Por esses motivos, a VM solicitante não pode adicionar informações dest_instance ao seu relatório, mas apenas informações src_instance. Uma vez que a VM que responde sabe o endereço IP da outra VM, ela pode fornecer tanto informações src_instance quanto dest_instance.

Como ativar os registros de fluxo de VPC

Quando você ativa os registros de fluxo de VPC, isso é feito são para todas as VMs de uma sub-rede.

Ativar os registros de fluxo de VPC quando você cria uma sub-rede

Console

  1. Acesse a página "Redes VPC" no Console do Google Cloud Platform.
    Acessar a página "Redes VPC"
  2. Clique na rede em que você quer adicionar uma sub-rede.
  3. Clique em Adicionar sub-rede.
  4. Em Registros de fluxo, selecione Ativado.
  5. Preencha outros campos conforme apropriado.
  6. Clique em Adicionar.

gcloud

gcloud compute networks subnets create [NAME] \
    --enable-flow-logs
    [other flags as needed]

Como ativar os registros de fluxo de VPC para uma sub-rede existente

Console

  1. Acesse a página "Redes VPC" no Console do Google Cloud Platform.
    Acessar a página "Redes VPC"
  2. Clique na sub-rede que você quer atualizar.
  3. Clique em Editar.
  4. Em Registros de fluxo, selecione Ativado.
  5. Clique em Salvar.

gcloud

gcloud compute networks subnets update [NAME] \
    --enable-flow-logs

Como desativar os registros de fluxo de VPC para uma sub-rede

Console

  1. Acesse a página "Redes VPC" no Console do Google Cloud Platform.
    Acessar a página "Redes VPC"
  2. Clique na sub-rede que você quer atualizar.
  3. Clique em Editar.
  4. Em Registros de fluxo, selecione Desativado.
  5. Clique em Salvar.

gcloud

gcloud compute networks subnets update [NAME] \
    --no-enable-flow-logs

Como acessar registros pelo Stackdriver Logging

Configurar o IAM

Siga o guia de controle de acesso do Stackdriver Logging.

Veja os registros na página do visualizador de registros.

Você precisa do código dos seus projetos para esses comandos.

Acessar todos os registros de fluxo

  1. Acesse a página "Registros" no Console do Google Cloud Platform.
    Acessar a página "Registros"
  2. Selecione Sub-redes no primeiro menu suspenso.
  3. Selecione vpc_flows no segundo menu suspenso.

Como alternativa, acesse a página "Registros" e cole o seguinte no campo Filtrar por rótulo ou pesquisa de texto.

resource.type="gce_subnetwork"
logName="projects/{#project_id}/logs/compute.googleapis.com%2Fvpc_flows"

Acessar registros de sub-redes específicas

  1. Acesse a página "Registros" no Console do Google Cloud Platform.
    Acessar a página "Registros"
  2. Selecione Sub-rede > [SUBNET_NAME] no primeiro menu suspenso.
  3. Selecione vpc_flows no segundo menu suspenso.

Como alternativa, acesse a página "Registros" e cole o seguinte no campo Filtrar por rótulo ou pesquisa de texto.

resource.type="gce_subnetwork"
logName="projects/{#project_id}/logs/compute.googleapis.com%2Fvpc_flows"
resource.labels.subnetwork_name="{#subnetwork_name}"

Acessar registros de VMs específicas

  1. Acesse a página "Registros" no Console do Google Cloud Platform.
    Acessar a página "Registros"
  2. Cole o seguinte no campo Filtrar por rótulo ou pesquisa de texto.
    resource.type="gce_subnetwork"
    logName="projects/{#project_id}/logs/compute.googleapis.com%2Fvpc_flows"
    jsonPayload.src_instance.vm_name="{#vm_name}"
    

Acessar registros de tráfego para um prefixo específico

  1. Acesse a página "Registros" no Console do Google Cloud Platform.
    Acessar a página "Registros"
  2. Cole o seguinte no campo Filtrar por rótulo ou pesquisa de texto.
    resource.type="gce_subnetwork"
    logName="projects/{#project_id}/logs/compute.googleapis.com%2Fvpc_flows"
    ip_in_net(jsonPayload.connection.dest_ip, {#subnet})
    

Acessar registros de portas e protocolos específicos

Para uma porta individual

  1. Acesse a página "Registros" no Console do Google Cloud Platform.
    Acessar a página "Registros"
  2. Cole o seguinte no campo Filtrar por rótulo ou pesquisa de texto.
    resource.type="gce_subnetwork"
    logName="projects/{#project_id}/logs/compute.googleapis.com%2Fvpc_flows"
    jsonPayload.connection.src_port={#port}
    jsonPayload.connection.protocol={#protocol}
    

Para mais de uma porta

  1. Acesse a página "Registros" no Console do Google Cloud Platform.
    Acessar a página "Registros"
  2. Cole o seguinte no campo Filtrar por rótulo ou pesquisa de texto.
    resource.type="gce_subnetwork"
    logName="projects/{#project_id}/logs/compute.googleapis.com%2Fvpc_flows"
    jsonPayload.connection.src_port=({#port1} OR {#port2})
    jsonPayload.connection.protocol={#protocol}
    

Exportar registros para o BigQuery, o Cloud Pub/Sub e destinos personalizados

Você pode exportar registros de fluxo do Stackdriver Logging para um destino de sua escolha, conforme descrito na documentação do Stackdriver Logging. Consulte a seção anterior, por exemplo, os filtros.

Solução de problemas

Não há nenhum vpc_flows no Stackdriver Logging no recurso gce_subnetwork.

  • Os fluxos de VPC são compatíveis apenas com redes VPC. Se você tiver uma rede legada, não verá nenhum registro.
  • Em redes VPC compartilhadas, os registros só aparecem no projeto host, não nos projetos de serviço. Procure os registros no projeto host.
  • Os filtros de exclusão do Stackdriver Logging bloqueiam registros especificados. Verifique se não há regras de exclusão que descartem os registros de fluxo de VPC.
    1. Vá para Uso de recursos.
    2. Clique na guia Exclusões.
    3. Verifique se não há regras de exclusão que possam descartar os registros de fluxo de VPC.

Nenhum valor de RTT ou byte em alguns dos registros

  • As medições de RTT talvez não sejam mostradas se não houver uma amostra com pacotes suficientes para capturar o RTT. É mais provável que isso aconteça para conexões de baixo volume.
  • Não há valores de RTT disponíveis para fluxos de UDP.
  • Alguns pacotes são enviados sem payload. Se os pacotes somente de cabeçalho foram incluídos na amostra, o valor dos bytes será 0.

Alguns fluxos não são mostrados

  • Somente protocolos UDP e TCP são aceitos. Não haverá registros para outros protocolos.
  • É preciso ter uma amostra do processo de pacotes. Alguns pacotes em fluxos de volume muito baixo podem não ser mostrados.

Preço

Os preços padrão para o Stackdriver Logging, BigQuery ou Cloud Pub/Sub são aplicados. Os preços de registros de fluxo da VPC são descritos no sistema de preços de nuvem privada virtual.

Perguntas frequentes

  • Os registros cobrem o tráfego permitido e negado com base nas regras de firewall?

    • Os registros cobrem todo o tráfego visto pela VM. Se o tráfego que deixa uma VM foi bloqueado por uma regra de saída para essa VM, o tráfego ainda é registrado pela VM. Se o tráfego de entrada for bloqueado por uma regra de entrada, esse tráfego não será visto pela VM e não será registrado para ela.
  • Os registros de fluxo da VPC funcionam com instâncias com várias interfaces?

  • Os registros de fluxo da VPC funcionam com redes legadas?

    • Os registros de fluxo de VPC não são compatíveis com redes legadas.

Próximas etapas

Esta página foi útil? Conte sua opinião sobre: