Registro de regras de firewall da VPC

A geração de registros de regras de firewall da VPC permite auditar, verificar e analisar os efeitos das suas regras de firewall. Por exemplo, é possível determinar se uma regra de firewall criada para negar tráfego está funcionando conforme o esperado. O registro de regras de firewall da VPC também é útil quando é preciso determinar quantas conexões são afetadas por uma determinada regra de firewall.

Ative a geração de registros de regras de firewall da VPC individualmente para cada regra de firewall que tem as conexões que você precisa registrar. A geração de registros de regras de firewall da VPC é uma opção para qualquer regra de firewall, seja qual for a ação (allow ou deny) ou a direção (entrada ou saída) dela.

A geração de registros de regras de firewall da VPC documenta o tráfego de e para instâncias de máquina virtual (VM) do Compute Engine. Isso inclui Google Cloud produtos criados em VMs do Compute Engine, como clusters do Google Kubernetes Engine (GKE) e instâncias do ambiente flexível do App Engine.

Quando você ativa a geração de registros para uma regra de firewall,o Google Cloud cria uma entrada chamada registro de conexão toda vez que a regra permite ou nega o tráfego. É possível ver esses registros no Cloud Logging e exportá-los para qualquer destino compatível.

Cada registro de conexão contém os endereços IP de origem e de destino, o protocolo e as portas, a data e a hora e uma referência à regra de firewall aplicada ao tráfego.

A geração de registros de regras de firewall da VPC está disponível para regras de firewall da VPC e para políticas de firewall hierárquicas.

Para mais informações sobre a visualização de registros, consulte Usar a geração de registros de regras de firewall da VPC.

Especificações

A geração de registros de regras de firewall da VPC tem as seguintes especificações:

  • A geração de registros de regras de firewall da VPC pode ser ativada para o seguinte:

    • Regras de firewall em políticas hierárquicas de firewall, políticas de firewall de sistema regional, políticas de firewall de rede global e políticas de firewall de rede regional associadas a uma rede VPC comum.

    • Regras de firewall da VPC em uma rede VPC comum.

    • Regras de firewall em políticas regionais de firewall de rede associadas a uma rede VPC RoCE.

  • A geração de registros de regras de firewall da VPC não é compatível com o seguinte:

  • O registro de regras de firewall da VPC só grava conexões TCP e UDP. É possível criar uma regra de firewall que se aplique a outros protocolos, mas não será possível registrar as conexões deles. Se você também quiser registrar outros protocolos, use o Espelhamento de pacotes.

  • As entradas de registro são escritas a partir da perspectiva das VMs. Essas entradas só serão criadas se uma regra de firewall tiver a geração de registros ativada e for aplicável ao tráfego enviado de ou para a VM. As entradas são criadas de acordo com os limites de geração de registros de conexão da melhor maneira possível.

  • A geração de registros de regras de firewall da VPC cria uma entrada de registro somente quando uma conexão é estabelecida. Ele não registra todos os pacotes. Uma entrada de conexão UDP permanece ativa enquanto os pacotes são trocados pelo menos uma vez a cada 10 minutos. Cada pacote de entrada ou saída subsequente redefine o timer de inatividade, estendendo a conexão por mais 10 minutos. Como resultado, um fluxo constante de tráfego UDP gera apenas uma entrada de registro durante todo o período. Se você precisar de visibilidade contínua em fluxos ativos e de longa duração sem períodos ociosos, use os registros de fluxo de VPC.

  • O número de conexões que o registro em log de regras de firewall da VPC pode registrar por unidade de tempo:

  • As alterações nas regras de firewall podem ser visualizadas nos registros de auditoria da VPC.

Limitações

  • Quando você usa a ação apply_security_profile_group com a geração de registros ativada, o Cloud NGFW não captura registros de todas as sessões. Essa limitação não afeta a inspeção ou interceptação de tráfego.

  • Se você ativar a geração de registros para uma regra de firewall que corresponda a conexões TCP ou UDP atuais, as entradas de registro não serão geradas para essas conexões ativas. O registro dessas conexões só começa depois que elas ficam inativas por pelo menos 10 minutos.

Exemplos de geração de registros

Uma entrada de registro é gerada sempre que uma regra de firewall com geração de registros ativada se aplica ao tráfego. Um determinado fluxo de pacotes pode gerar mais de uma entrada de registro no total. No entanto, segundo a perspectiva de uma determinada VM, apenas uma entrada de registro poderá ser gerada se a regra de firewall que se aplica a ela tiver o registro ativado.

Os exemplos a seguir mostram como os registros de firewall funcionam.

Exemplo de negação de saída

Neste exemplo:

  • O tráfego entre instâncias de VM na rede VPC example-net do projeto example-proj é considerado.
  • As duas instâncias de VM são:
    • VM1 na zona us-west1-a com endereço IP 10.10.0.99 em west-subnet (região us-west1).
    • VM2 na zona us-east1-b com endereço IP 10.20.0.99 em east-subnet (região us-east1).
  • Regra A: uma regra de negação de saída de firewall tem como destino todas as instâncias na rede, destino em 10.20.0.99 (VM2) e se aplica à porta TCP 80.
    • A geração de registros está ativada para essa regra.
  • Regra B: uma regra de permissão de entrada de firewall tem como destino todas as instâncias na rede, origem em 10.10.0.99 (VM1) e se aplica à porta TCP 80.
    • A geração de registros também está ativada para essa regra.

Os comandos gcloud a seguir podem ser usados para criar as regras de firewall:

  • Regra A: regra de negação de saída para porta TCP 80, aplicável a todas as instâncias, destino 10.20.0.99:

    gcloud compute firewall-rules create rule-a \
        --network example-net \
        --action deny \
        --direction EGRESS \
        --rules tcp:80 \
        --destination-ranges 10.20.0.99/32 \
        --priority 10 \
        --enable-logging
    
  • Regra B: regra de permissão de entrada para porta TCP 80, aplicável a todas as instâncias, origem 10.10.0.99:

    gcloud compute firewall-rules create rule-b \
        --network example-net \
        --action allow \
        --direction INGRESS \
        --rules tcp:80 \
        --source-ranges 10.10.0.99/32 \
        --priority 10 \
        --enable-logging
    
Conexão de VM1 a VM2.
Conexão de VM1 a VM2 (clique para ampliar).

Suponha que a VM1 tente se conectar à VM2 na porta TCP 80. As seguintes regras de firewall são registradas:

  • Uma entrada de registro para a regra A da perspectiva da VM1 é gerada enquanto a VM1 tenta se conectar a 10.20.0.99 (VM2).
  • Como a regra A bloqueia o tráfego, a regra B não é considerada. Portanto, não há entrada de registro para a regra B da perspectiva da VM2.

O seguinte registro de log do firewall é informado.

Campo Valores
conexão src_ip=10.10.0.99
src_port=[EPHEMERAL_PORT]
dest_ip=10.20.0.99
dest_port=80
protocol=6
disposition NEGADO
rule_details reference = "network:example-net/firewall:rule-a"
priority = 10
action = DENY
destination_range = 10.20.0.99/32
ip_port_info = tcp:80
direction = egress
instance project_id="example-proj"
instance_name=VM1
region=us-west1
zone=us-west1-a
vpc project_id="example-proj"
vpc_name=example-net
subnetwork_name=west-subnet
remote_instance project_id="example-proj"
instance_name=VM2
region=us-east1
zone=us-east1-b
remote_vpc project_id="example-proj"
vpc_name=example-net
subnetwork_name=east-subnet
remote_location Sem informações. Este campo só será usado se o destino estiver fora da rede VPC.

Exemplo de permissão de saída e permissão de entrada

Neste exemplo:

  • O tráfego entre instâncias de VM na rede VPC example-net do projeto example-proj é considerado.
  • As duas instâncias de VM são:
    • VM1 na zona us-west1-a com endereço IP 10.10.0.99 em west-subnet (região us-west1).
    • VM2 na zona us-east1-b com endereço IP 10.20.0.99 em east-subnet (região us-east1).
  • Regra A: uma regra de permissão de saída de firewall tem como destino todas as instâncias na rede, destino em 10.20.0.99 (VM2) e se aplica à porta TCP 80.
    • A geração de registros está ativada para essa regra.
  • Regra B: uma regra de permissão de entrada de firewall tem como destino todas as instâncias na rede, origem em 10.10.0.99 (VM1) e se aplica à porta TCP 80.
    • A geração de registros também está ativada para essa regra.

Os comandos gcloud a seguir podem ser usados para criar as duas regras de firewall:

  • Regra A: regra de permissão de saída para porta TCP 80, aplicável a todas as instâncias, destino 10.20.0.99 (VM2):

    gcloud compute firewall-rules create rule-a \
        --network example-net \
        --action allow \
        --direction EGRESS \
        --rules tcp:80 \
        --destination-ranges 10.20.0.99/32 \
        --priority 10 \
        --enable-logging
    
  • Regra B: regra de permissão de entrada para porta TCP 80, aplicável a todas as instâncias, origem 10.10.0.99 (VM1):

    gcloud compute firewall-rules create rule-b \
        --network example-net \
        --action allow \
        --direction INGRESS \
        --rules tcp:80 \
        --source-ranges 10.10.0.99/32 \
        --priority 10 \
        --enable-logging
    
Conexão de VM1 a VM2.
Conexão de VM1 a VM2 (clique para ampliar).

Suponha que a VM1 tente se conectar à VM2 na porta TCP 80. As seguintes regras de firewall são registradas:

  • Uma entrada de registro para a regra A segundo a perspectiva da VM1 é gerada quando a VM1 se conecta a 10.20.0.99 (VM2).
  • Uma entrada de registro para a regra B segundo a perspectiva da VM2 é gerada enquanto a VM2 permite conexões de entrada a partir de 10.10.0.99 (VM1).

O seguinte registro de firewall é relatado pela VM1.

Campo Valores
conexão src_ip=10.10.0.99
src_port=[EPHEMERAL_PORT]
dest_ip=10.20.0.99
dest_port=80
protocol=6
disposition PERMITIDO
rule_details reference = "network:example-net/firewall:rule-a"
priority = 10
action = ALLOW
destination_range = 10.20.0.99/32
ip_port_info = tcp:80
direction = egress
instance project_id="example-proj"
instance_name=VM1
region=us-west1
zone=us-west1-a
vpc project_id="example-proj"
vpc_name=example-net
subnetwork_name=west-subnet
remote_instance project_id="example-proj"
instance_name=VM2
region=us-east1
zone=us-east1-b
remote_vpc project_id="example-proj"
vpc_name=example-net
subnetwork_name=east-subnet
remote_location Sem informações. Este campo só será usado se o destino estiver fora da rede VPC.

O seguinte registro de firewall é relatado pela VM2.

Campo Valores
conexão src_ip=10.10.0.99
src_port=[EPHEMERAL_PORT]
dest_ip=10.20.0.99
dest_port=80
protocol=6
disposition PERMITIDO
rule_details reference = "network:example-net/firewall:rule-b"
priority = 10
action = ALLOW
source_range = 10.10.0.99/32
ip_port_info = tcp:80
direction = ingress
instância project_id="example-proj"
instance_name=VM2
region=us-east1
zone=us-east1-b
vpc project_id="example-proj"
vpc_name=example-net
subnetwork_name=east-subnet
remote_instance project_id="example-proj"
instance_name=VM1
region=us-west1
zone=us-west1-a
remote_vpc project_id="example-proj"
vpc_name=example-net
subnetwork_name=west-subnet
remote_location Sem informações. Este campo só será usado se o destino estiver fora da rede VPC.

Exemplo de entrada de Internet

Neste exemplo:

  • O tráfego de um sistema fora da rede VPC example-net para uma instância de VM nessa rede é considerado. A rede está no projeto example-proj.
  • O sistema na Internet tem endereço IP 203.0.113.114.
  • A VM1 na zona us-west1-a tem endereço IP 10.10.0.99 em west-subnet (região us-west1).
  • Regra C: uma regra de permissão de entrada de firewall tem como destino todas as instâncias na rede, origem em qualquer endereço IP (0.0.0.0/0) e se aplica à porta TCP 80.
    • A geração de registros está ativada para essa regra.
  • Regra D: uma regra de firewall de negação de saída tem como destino todas as instâncias na rede, destino em qualquer endereço IP (0.0.0.0/0) e se aplica a todos os protocolos.
    • A geração de registros também está ativada para essa regra.

Os comandos gcloud a seguir podem ser usados para criar as regras de firewall:

  • Regra C: regra de permissão de entrada para porta TCP 80, aplicável a todas as instâncias, qualquer origem:

    gcloud compute firewall-rules create rule-c \
        --network example-net \
        --action allow \
        --direction INGRESS \
        --rules tcp:80 \
        --source-ranges 0.0.0.0/0 \
        --priority 10 \
        --enable-logging
    
  • Regra D: regra de negação de saída para todos os protocolos, aplicável a todas as instâncias, a qualquer destino:

    gcloud compute firewall-rules create rule-d \
        --network example-net \
        --action deny \
        --direction EGRESS \
        --rules all \
        --destination-ranges 0.0.0.0/0 \
        --priority 10 \
        --enable-logging
    
Conexão da Internet a VM.
Conexão da Internet a VM (clique para ampliar).

Suponha que o sistema com o endereço IP 203.0.113.114 tente se conectar à VM1 na porta TCP 80. O seguinte acontece:

  • Uma entrada de registro para a regra C na perspectiva da VM1 é gerada enquanto a VM1 aceita tráfego de 203.0.113.114.
  • Desconsiderando a regra D, a VM1 tem permissão para responder à solicitação de entrada porque as regras de firewall doGoogle Cloud estão com estado. Se a solicitação de entrada for permitida, as respostas estabelecidas não poderão ser bloqueadas por nenhum tipo de regra de saída.
  • Como a regra D não é aplicável, ela não é considerada. Portanto, não há entrada de registro para a regra D.

O seguinte registro de log do firewall é informado.

Campo Valores
conexão src_ip=203.0.113.114
src_port=[EPHEMERAL_PORT]
dest_ip=10.10.0.99
dest_port=80
protocol=6
disposition PERMITIDO
rule_details reference = "network:my-vpc/firewall:rule-c"
priority = 10
action = ALLOW
source_range = 0.0.0.0/0
ip_port_info = tcp:80
direction = ingress
instance project_id="example-proj"
instance_name=VM1
region=us-west1
zone=us-west1-a
vpc project_id="example-proj"
vpc_name=example-net
subnetwork_name=west-subnet
remote_location continente
país
região
cidade

Formato de registro de firewall

Sujeita a especificações, uma entrada de registro é criada no Cloud Logging para cada regra de firewall que tenha essa função ativada, caso essa regra se aplique ao tráfego de entrada ou saída de instância de VM. Os registros são incluídos no campo de payload JSON de um LogEntry do Logging.

Os registros contêm campos básicos, que são os principais de cada registro, e campos de metadados, que acrescentam informações. É possível controlar se os campos de metadados serão incluídos. Se você os omitir, poderá economizar em custos de armazenamento.

Alguns campos de registro aceitam valores que também são campos. Esses campos podem ter mais de um conjunto de dados em um determinado campo. Por exemplo, o campo connection é do formato IpConnection, que contém o endereço IP, o protocolo e a porta de origem e destino em um único espaço. Esses campos são descritos nas tabelas a seguir.

Campo Descrição Tipo de campo: base ou metadados opcionais
conexão IpConnection
Cinco tuplas que descrevem os endereços IP e a porta de origem e destino, além do protocolo IP da conexão.
Base
disposition string
Indica se a conexão foi ALLOWED ou DENIED.
Base
rule_details RuleDetails
Detalhes da regra aplicada à conexão.
Campo rule_details.reference Base
Outros campos de detalhes da regra Metadados
instance InstanceDetails
Detalhes da instância da VM. Em uma configuração de VPC compartilhada, project_id corresponde ao ID do projeto de serviço.
Metadados
load_balancer_details LoadBalancingDetails
Detalhes do balanceador de carga de aplicativo interno ou do balanceador de carga de rede de proxy interno a que a regra de firewall se aplica. Quando o destino de uma regra de firewall é um desses balanceadores de carga, o campo instance é omitido.
Metadados
vpc VpcDetails
Detalhes da rede VPC. Em uma configuração de VPC compartilhada, project_id corresponde ao ID do projeto host.
Metadados
remote_instance InstanceDetails
Se o endpoint remoto da conexão for uma VM localizada no Compute Engine, esse campo será preenchido com os detalhes da instância da VM.
Metadados
remote_vpc VpcDetails
Se o endpoint remoto da conexão for uma VM localizada em uma rede VPC, esse campo será preenchido com os detalhes da rede.
Metadados
remote_location GeographicDetails
Se o endpoint remoto da conexão for externo à rede VPC, este campo será preenchido com os metadados de local disponíveis.
Metadados

IpConnection

Campo Tipo Descrição
src_ip string Endereço IP de origem. Se a origem for uma VM do Compute Engine, src_ip será o endereço de IP interno principal ou um endereço em um intervalo de IP de alias da interface de rede da VM. O endereço IP externo não é exibido. O Logging indica o endereço IP da VM conforme ela o vê no cabeçalho do pacote, como se você tivesse executado o dump de TCP na VM.
src_port número inteiro Porta de origem
dest_ip string Endereço IP de destino. Se o destino for uma VM Google Cloud , dest_ip será o endereço IP interno principal ou um endereço em um intervalo de IP de alias da interface de rede da VM. O endereço IP externo não é exibido, mesmo que tenha sido usado para fazer a conexão.
dest_port número inteiro Porta de destino
protocol número inteiro Protocolo IP da conexão

RuleDetails

Campo Tipo Descrição
referência string Referência à regra de firewall. Formato:
"network:{network name}/firewall:{firewall_name}"
priority número inteiro A prioridade da regra de firewall.
ação string PERMITIR ou NEGAR
source_range[ ] string Lista de intervalos de origem a que a regra de firewall se aplica.
destination_range[ ] string Lista de intervalos de destino aos quais a regra de firewall se aplica.
ip_port_info[ ] IpPortDetails Lista de protocolos IP e intervalos de portas aplicáveis a regras.
direction string A direção em que a regra de firewall se aplica (entrada ou saída).
source_tag[ ] string Lista de todas as tags de origem a que a regra de firewall se aplica.
target_tag[ ] string Lista de todas as tags de destino a que a regra de firewall se aplica.
source_service_account[ ] string Lista de todas as contas de serviço de origem a que a regra de firewall se aplica.
target_service_account[ ] string Lista de todas as contas de serviço de destino a que a regra de firewall se aplica.
source_region_code[ ] string Lista de todos os códigos de países de origem a que a regra de firewall se aplica.
destination_region_code[ ] string Lista de todos os códigos de países de destino a que a regra de firewall se aplica.
source_fqdn[ ] string Lista de todos os nomes de domínio de origem a que a regra de firewall se aplica.
destination_fqdn[ ] string Lista de todos os nomes de domínio de destino a que a regra de firewall se aplica.
source_threat_intelligence[ ] string Lista de todos os nomes de lista do Google Threat Intelligence de origem a que a regra de firewall se aplica.
destination_threat_intelligence[ ] string Lista de todos os nomes de listas de ameaças do Google de destino a que a regra de firewall se aplica.
source_address_groups[ ] string Lista de todos os grupos de endereços de origem aos quais a regra de firewall se aplica.
destination_address_groups[ ] string Lista de todos os grupos de endereços de destino aos quais a regra de firewall se aplica.

IpPortDetails

Campo Tipo Descrição
ip_protocol string Protocolo IP ao qual a regra de firewall se aplica. “ALL” se aplica a todos os protocolos.
port_range[ ] string Lista de intervalos de porta aplicáveis às regras, como por exemplo, 8080-9090.

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
região string Região da VM
zona string Zona da VM

LoadBalancingDetails

Campo Tipo Descrição
forwarding_rule_project_id string Google Cloud ID do projeto que contém a regra de encaminhamento.
tipo string Tipo de balanceador de carga: APPLICATION_LOAD_BALANCER indica um balanceador de carga de aplicativo interno. PROXY_NETWORK_LOAD_BALANCER indica um balanceador de carga de rede de proxy interno.
esquema string Esquema do balanceador de carga, INTERNAL_MANAGED.
url_map_name string Nome do mapa de URL. Preenchido apenas se o type for APPLICATION_LOAD_BALANCER.
forwarding_rule_name string Nome da regra de encaminhamento.

VpcDetails

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

GeographicDetails

Campo Tipo Descrição
continent string Continente para endpoints externos
país string País para endpoints externos
região string Região para endpoints externos
cidade string Cidade para endpoints externos

A seguir