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:
- 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. Você pode criar uma regra de firewall aplicável a outros protocolos, mas não será possível registrar suas conexões. Se você também quiser registrar outros protocolos, use o Espelhamento de pacotes.
- 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 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.
- O número de conexões que podem ser registradas em um determinado intervalo depende do tipo de máquina.
- As alterações nas regras de firewall podem ser visualizadas nos registros de auditoria da VPC.
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 projetoexample-proj
é considerado. - As duas instâncias de VM são:
- VM1 na zona
us-west1-a
com endereço IP10.10.0.99
emwest-subnet
(regiãous-west1
). - VM2 na zona
us-east1-b
com endereço IP10.20.0.99
emeast-subnet
(regiãous-east1
).
- VM1 na zona
- 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
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 | 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 projetoexample-proj
é considerado. - As duas instâncias de VM são:
- VM1 na zona
us-west1-a
com endereço IP10.10.0.99
emwest-subnet
(regiãous-west1
). - VM2 na zona
us-east1-b
com endereço IP10.20.0.99
emeast-subnet
(regiãous-east1
).
- VM1 na zona
- 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
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 | 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 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 | 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 projetoexample-proj
. - O sistema na Internet tem endereço IP
203.0.113.114
. - A VM1 na zona
us-west1-a
tem endereço IP10.10.0.99
emwest-subnet
(regiãous-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
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 | 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 |
---|---|---|
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 |
---|---|---|
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 de origem do Google Threat Intelligence a que a regra de firewall se aplica. |
destination_threat_intelligence[ ] | string | Lista com todos os nomes de listas de destino do Google Threat Intelligence 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 |
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
- Para configurar a geração e a visualização de registros, consulte Usar a geração de registros de regras de firewall.
- Para ver insights sobre como suas regras de firewall estão sendo usadas, consulte Firewall Insights.
- Para armazenar, pesquisar, analisar, monitorar e alertar dados e eventos de registros, consulte Cloud Logging.
- Para rotear entradas de registro, consulte Configurar e gerenciar coletores.