Criar regras de firewall do App Engine

No App Engine, pode criar uma firewall com até 1000 regras individuais prioritárias que permitem ou restringem um intervalo de endereços IP e sub-redes. A sua app só responde a pedidos permitidos pela firewall.

Para saber como funciona a firewall do App Engine, consulte o artigo Compreender as firewalls.

Antes de começar

Antes de poder criar regras de firewall do App Engine para a sua app, tem de ter uma das seguintes funções do IAM do App Engine, que incluem os privilégios necessários para criar ou modificar regras de firewall:

  • Administrador do App Engine
  • Editor
  • Proprietário

Criar regras de firewall

Use um dos seguintes métodos para criar uma regra de firewall. Repita estes passos para cada regra adicional:

Consola

Use a página Regras de firewall na Google Cloud consola para criar uma regra de firewall:

  1. Aceda à página Criar uma regra de firewall na Google Cloud consola:

    Aceda à página Crie uma regra de firewall

  2. Especifique os detalhes da regra de firewall:

    1. Em Prioridade, introduza um número inteiro para especificar a importância relativa da regra e definir a ordem de avaliação da regra.

      Os valores válidos são 1 a 2147483646. A prioridade 1 é a primeira regra avaliada. Prioridade 2147483647 é a última regra avaliada e está reservada para a regra "predefinição".

    2. Em Ação na correspondência, especifique se quer permitir ou negar o acesso para pedidos que correspondam à regra. Regras definidas para allow encaminhar o pedido para a app. Regras definidas para deny responder a pedidos com um erro 403 Forbidden.
    3. Em Intervalo de IPs, defina o intervalo de endereços IP que se aplicam à regra. O intervalo de endereços IP tem de ser definido na notação CIDR, pode incluir máscaras de sub-rede e suporta IPv4 e IPv6.
    4. Opcional: em Descrição, inclua uma descrição da regra com um máximo de 100 carateres.
  3. Clique em Guardar para criar a regra.
  4. Teste a regra para garantir que a prioridade e a ação proporcionam o comportamento esperado:
    1. Clique em Testar endereço IP.
    2. Introduza o endereço IP que quer validar e, de seguida, clique em Testar para garantir que a regra correspondente é avaliada corretamente.
gcloud

Execute os seguintes comandos gcloud app firewall-rules para criar uma regra de firewall:

  1. Execute o seguinte comando para criar uma regra de firewall:

    gcloud app firewall-rules create PRIORITY --action ALLOW_OR_DENY --source-range IP_RANGE --description DESCRIPTION
    where:
    • PRIORITY é um número inteiro entre 1 e 2147483646 que define a importância e a ordem pela qual a regra é avaliada. Prioridade 1 é a primeira regra avaliada. A prioridade 2147483647 é a última regra avaliada e está reservada para a regra "predefinição".
    • ALLOW_OR_DENY especifica se o acesso deve ser permitido ou recusado para pedidos que correspondam à regra. Os valores válidos são allow ou deny. Regras definidas para allow encaminhar o pedido para a app. Regras definidas para deny responder a pedidos com um erro 403 Forbidden.
    • IP_RANGE define o intervalo de endereços IP que se aplicam à regra. O intervalo de IPs tem de ser definido na notação CIDR, pode incluir máscaras de sub-rede e suportar IPv4 e IPv6.
    • DESCRIPTION é uma descrição opcional da regra que não pode ter mais de 100 carateres.
  2. Execute o seguinte comando para testar a regra e garantir que a prioridade e a ação proporcionam o comportamento esperado:
    gcloud app firewall-rules test-ip IP_ADDRESS
    onde IP_ADDRESS é o endereço IP que quer testar relativamente à sua firewall.
  3. Execute o seguinte comando para ver uma lista das regras existentes:
    gcloud app firewall-rules list
  4. Execute o seguinte comando para eliminar uma regra existente:
    gcloud app firewall-rules delete PRIORITY
    onde PRIORITY é o valor de prioridade da regra que quer eliminar.
Exemplos:
Use os exemplos seguintes para ajudar a criar a sua firewall:
  • Adicione uma regra que permita um endereço IPv6 e uma máscara de sub-rede e, em seguida, teste essa regra para garantir que é avaliada antes das suas outras regras:

    gcloud app firewall-rules create 123 --source-range fe80::3636:3bff:fecc:8778/128 --action allow
    gcloud app firewall-rules test-ip fe80::3636:3bff:fecc:8778
  • Adicione uma regra para recusar um endereço IPv4 e uma máscara de sub-rede e, em seguida, teste essa regra para garantir que é avaliada adequadamente:

    gcloud app firewall-rules create 123456 --source-range "74.125.0.0/16" --action deny
    gcloud app firewall-rules test-ip 74.125.0.8
  • Atualize e, em seguida, teste a regra predefinida para garantir que restringe todos os endereços IP que não correspondem a nenhuma outra regra:

    gcloud app firewall-rules update default --action deny
    gcloud app firewall-rules test-ip 123.456.7.89
API

Para criar regras de firewall de forma programática para a sua app do App Engine, pode usar os métodos apps.firewall.ingressRules na API Admin.

Para testar uma regra de firewall e garantir que a prioridade e a ação proporcionam o comportamento esperado, pode usar o método apps.firewall.ingressRules.list e especificar o endereço IP que quer testar no parâmetro matchingAddress.

Compreender as regras de firewall do App Engine

Uma firewall do App Engine consiste numa lista ordenada de regras que podem permitir ou negar o acesso à sua app a partir do endereço IP ou do intervalo especificado. A regra aplica-se a todos os recursos da aplicação App Engine.

Prioridade da regra de firewall

As regras de firewall são ordenadas por importância, que define como um valor numérico na prioridade de cada regra. Tem de especificar um valor de prioridade único para cada regra, uma vez que define a importância relativa às outras regras na firewall. Os valores da prioridade de uma regra variam do valor mais importante de 1 até ao valor menos importante de 2147483647.

Cada firewall inclui uma regra default criada automaticamente com a prioridade 2147483647 e aplica-se a todo o intervalo de IPs da sua app. A regra default é sempre avaliada após todas as outras regras na firewall e aplicada a todos os pedidos em todos os endereços IP.

A firewall avalia primeiro a regra de prioridade mais elevada. Todas as regras restantes na firewall são avaliadas sequencialmente até que uma regra corresponda ao intervalo de IPs desse pedido. Quando é encontrada uma regra correspondente, a ligação é permitida ou recusada e todas as regras restantes na firewall são ignoradas. Se nenhuma das regras definidas manualmente na firewall corresponder ao pedido, a regra default é avaliada.

Por exemplo, se criar uma regra com a prioridade 1, esta é sempre avaliada primeiro. Se um pedido recebido corresponder à regra com a prioridade 1, apenas essa regra é avaliada e todas as outras regras na firewall são ignoradas, incluindo a regra default.

A firewall de exemplo abaixo mostra como a prioridade de uma regra pode alterar o comportamento da sua firewall.

Exemplo de firewall

Neste exemplo, uma empresa configurou uma firewall para conceder acesso à app em desenvolvimento à equipa de engenharia e à rede corporativa interna. As regras da firewall foram criadas com grandes lacunas entre cada prioridade para permitir o crescimento.

Prioridade Ação Intervalo de IP Descrição
1000 Recusar 192.0.2.1 Nega o acesso a um atacante de DoS.
2000 Permitir 198.51.100.2 Permite o acesso a um engenheiro no escritório satélite.
3000 Recusar 198.51.100.0/24 Nega o acesso a todos os edifícios que não sejam de engenharia.
5000 Permitir 203.0.113.0/24 Permite o acesso à rede do edifício principal.
2147483647 Recusar * Ação predefinida

Depois de criar a firewall, suponha que os seguintes pedidos são direcionados para a app de exemplo e tome nota da resposta da app:

  • O pedido de 198.51.100.2 corresponde à regra com prioridade 2000 e é permitido.
  • O pedido de 198.51.100.100 corresponde à regra com prioridade 3000 e é recusado.
  • O pedido de 203.0.113.54 corresponde à regra com prioridade 5000 e é permitido.
  • O pedido de 45.123.35.242 corresponde à regra predefinida e é recusado.

Resolver regras em conflito

Por exemplo, suponha que duas das prioridades na firewall da empresa são trocadas. Se as regras para as prioridades 2000 e 3000 forem trocadas, repare no comportamento não intencional.

Prioridade Ação Intervalo de IP Descrição
1000 Recusar 192.0.2.1 Nega o acesso a um atacante de DoS.
2000 Recusar 198.51.100.0/24 Nega o acesso a todos os edifícios que não sejam de engenharia.
3000 Permitir 198.51.100.2 Permite o acesso a um engenheiro no escritório satélite.
5000 Permitir 203.0.113.0/24 Permite o acesso à rede do edifício principal.
2147483647 Recusar * Ação predefinida

O engenheiro no escritório satélite não vai poder aceder à app da empresa, uma vez que a nova prioridade da regra significa que nunca vai ser avaliada. O endereço IP do engenheiro 198.51.100.2 corresponde à regra que nega todos os não engenheiros no intervalo 198.51.100.0/24 antes da regra que permite o acesso ao endereço IP do engenheiro.

Para corrigir este problema, tem de definir a prioridade da regra que permite o acesso a 198.51.100.2 como superior à regra que nega o acesso para o intervalo de IPs 198.51.100.0/24.

O que se segue?

Para garantir que configurou a sua app em segurança e definiu os níveis de acesso adequados, reveja a segurança da aplicação, bem como o controlo de acesso.