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. O registro de regras de firewall também é útil quando você precisa determinar quantas conexões são afetadas por uma determinada regra de firewall.

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

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

Ao ativar 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 rejeita 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 está disponível para regras de firewall de 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.

Especificações

A geração de registros de regras de firewall tem as seguintes especificaçõ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

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 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 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 à 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 de log do firewall é gerado no exemplo a seguir.

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 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-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 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 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 à 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
conexão src_ip=10.10.0.99
src_port=[EPHEMERAL_PORT]
dest_ip=10.20.0.99
dest_port=80
protocol=6
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-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 registro de firewall reportado pela VM2 é gerado no exemplo a seguir.

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 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
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 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 à 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 de log do firewall é gerado no exemplo a seguir.

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 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 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
connection 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
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 do 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
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 portas aplicáveis a regras.
sentido 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 Intelligence Intelligence de origem a que a regra de firewall se aplica.
destination_threat_intelligence[ ] string Lista com todos os nomes de listas de ameaças do Intelligence aos quais 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
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