Visão geral da geração de registros de regras de firewall

A geração de registros de regras de firewall 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. A geração de registro de regras de firewall também é útil para determinar quantas conexões são afetadas por uma regra de firewall específica.

Ative a geração de registros de regras de firewall individualmente para registrar as conexões de cada regra de firewall que você quiser. A geração de registros de regras de firewall é 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.

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 tráfego. É possível exportar e analisar esses registros de conexão no Cloud Logging, Pub/Sub ou BigQuery.

Cada registro de conexão tem 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.

Para mais informações sobre a visualização de registros, consulte Como usar a geração de registros de regras de firewall.

Especificações

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

  • Só é possível ativar a geração de registros de regras de firewall para regras em uma rede de nuvem privada virtual (VPC). Redes legadas não são compatíveis.
  • A geração de registros de regras de firewall só marca conexões TCP e UDP. É possível criar uma regra de firewall aplicável a outros protocolos, mas não será possível registrar as conexões dela.
  • Não é possível ativar a geração de registros de regras de firewall para regras implícitas de negação e de permissão de entrada.
  • As entradas de registro são escritas a partir da perspectiva das instâncias de máquina virtual (VM). 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 da conexão da melhor maneira possível.

Limites de geração de registros de conexão

O número máximo de conexões que podem ser registradas por instância de VM depende do tipo de máquina. Os limites de registro de conexão são expressos como o número máximo de conexões que podem ser registradas em um intervalo de cinco segundos.

Tipo de máquina de instância Número máximo de conexões registradas em um intervalo de 5 segundos
f1-micro 100 conexões
g1-small 250 conexões
Tipos de máquina com 1 a 8 vCPUs 500 conexões por vCPU
Tipos de máquinas com mais de 8 vCPUs 4.000 (500×8) conexões

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 demonstram como os registros de firewall funcionam.

Exemplo de negação de saída

Veja o que acontece neste exemplo:

  • É considerado o tráfego entre instâncias de VM na rede VPC example-net do projeto example-proj.
  • As duas instâncias de VM são estas:
    • 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-a 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 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 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 VM1 a VM2 (clique para ampliar)
Conexão 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 à medida que a VM1 tenta se conectar a 10.20.0.99 (VM2).
  • Como a regra A bloqueia o tráfego, a regra B nunca é considerada. Portanto, não há entrada de registro para a regra B da perspectiva da VM2.

O registro do firewall é gerado no exemplo a seguir.

Campo Valores
connection src_ip=10.10.0.99
src_port=[EPHEMERAL_PORT]
dest_ip=10.20.0.99
dest_port=80
protocol=tcp
disposition DENIED
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-a
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

Veja o que acontece neste exemplo:

  • É considerado o tráfego entre instâncias de VM na rede VPC example-net do projeto example-proj.
  • As duas instâncias de VM são estas:
    • 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-a 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 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 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 VM1 a VM2 (clique para ampliar)
Conexão 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 à medida que a VM2 permite conexões de entrada a partir de 10.10.0.99 (VM1).

O registro de firewall relatado pela VM1 é gerado no exemplo a seguir.

Campo Valores
connection src_ip=10.10.0.99
src_port=[EPHEMERAL_PORT]
dest_ip=10.20.0.99
dest_port=80
protocol=tcp
disposition ALLOWED
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-a
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 registro de firewall informado pela VM2 é gerado no exemplo a seguir.

Campo Valores
connection src_ip=10.10.0.99
src_port=[EPHEMERAL_PORT]
dest_ip=10.20.0.99
dest_port=80
protocol=tcp
disposition ALLOWED
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
instance project_id="example-proj"
instance_name=VM2
region=us-east1
zone=us-east1-a
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

Veja o que acontece 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 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 de Internet para VM (clique para ampliar)
Conexão de Internet para 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 à medida que 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 do Google 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 nunca é considerada. Portanto, não há entrada de registro para a regra D.

O registro do firewall é gerado no exemplo a seguir.

Campo Valores
connection src_ip=203.0.113.114
src_port=[EPHEMERAL_PORT]
dest_ip=10.10.0.99
dest_port=80
protocol=tcp
disposition ALLOWED
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 continent
country
region
city

Formato de registro de firewall

Sujeita às especificações, uma entrada de registro é criada no Cloud Logging para cada regra de firewall que tenha a geração de registros ativada, caso essa regra se aplique ao tráfego de ou para uma instância de VM.

As regras de firewall seguem o formato indicado pela tabela a seguir.

Os campos de payload JSON do LogEntry do Logging contêm mensagens no seguinte formato.

Campo Descrição
connection IpConnection
Cinco tuplas que descrevem os endereços IP de origem e destino, a porta de origem e destino e o protocolo IP desta conexão.
disposition string
Indica se a conexão foi PERMITIDA ou NEGADA.
rule_details RuleDetails
Detalhes da regra que foi aplicada a esta conexão.
instance InstanceDetails
Detalhes da instância da VM. Em uma configuração de VPC compartilhada, project_id corresponde ao do projeto de serviço.
vpc VpcDetails
Detalhes da rede VPC. Em uma configuração de VPC compartilhada, project_id corresponde ao do projeto host.
remote_instance InstanceDetails
Se o endpoint remoto da conexão for uma VM no Compute Engine, esse campo será preenchido com os detalhes da instância da VM.
remote_vpc VpcDetails
Se o endpoint remoto da conexão for uma VM na rede VPC, esse campo será preenchido com os detalhes da rede VPC.
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.

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 IP interno da interface. O endereço IP público externo não é mostrado. O registro mostra o endereço IP da VM conforme ela o vê no cabeçalho do pacote, como se você tivesse executado o TCP dump na VM.
src_port número inteiro Porta de origem
dest_ip string Endereço IP de destino. Se o destino for uma VM do Google Cloud, dest_ip será o endereço IP interno e particular da interface. O endereço IP público externo não é mostrado, 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
reference string Referência à regra de firewall. Formato:
"network:{network name}/firewall:{firewall_name}"
priority número inteiro A prioridade da regra de firewall.
action 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 porta 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.

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
region string Região da VM
zone string Zona da VM

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
country string País para endpoints externos
region string Região para endpoints externos
city string Cidade para endpoints externos

A seguir