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:
Use a página Regras de firewall na Google Cloud consola para criar uma regra de firewall:
-
Aceda à página Criar uma regra de firewall na Google Cloud consola:
-
Especifique os detalhes da regra de firewall:
-
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
a2147483646
. A prioridade1
é a primeira regra avaliada. Prioridade2147483647
é a última regra avaliada e está reservada para a regra "predefinição". -
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 paradeny
responder a pedidos com um erro403 Forbidden
. - 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.
- Opcional: em Descrição, inclua uma descrição da regra com um máximo de 100 carateres.
-
Em Prioridade, introduza um número inteiro para especificar a importância relativa da regra e definir a ordem de avaliação da regra.
- Clique em Guardar para criar a regra.
-
Teste a regra para garantir que a prioridade e a ação proporcionam o comportamento esperado:
- Clique em Testar endereço IP.
- Introduza o endereço IP que quer validar e, de seguida, clique em Testar para garantir que a regra correspondente é avaliada corretamente.
Execute os seguintes comandos gcloud
app firewall-rules
para criar uma regra de firewall:
-
Execute o seguinte comando para criar uma regra de firewall:
where:gcloud app firewall-rules create PRIORITY --action ALLOW_OR_DENY --source-range IP_RANGE --description DESCRIPTION
-
PRIORITY é um número inteiro entre
1
e2147483646
que define a importância e a ordem pela qual a regra é avaliada. Prioridade1
é a primeira regra avaliada. A prioridade2147483647
é 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
oudeny
. Regras definidas paraallow
encaminhar o pedido para a app. Regras definidas paradeny
responder a pedidos com um erro403 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.
-
PRIORITY é um número inteiro entre
-
Execute o seguinte comando para testar a regra e garantir que a prioridade e a ação proporcionam o comportamento esperado:
onde IP_ADDRESS é o endereço IP que quer testar relativamente à sua firewall.gcloud app firewall-rules test-ip IP_ADDRESS
-
Execute o seguinte comando para ver uma lista das regras existentes:
gcloud app firewall-rules list
-
Execute o seguinte comando para eliminar uma regra existente:
onde PRIORITY é o valor de prioridade da regra que quer eliminar.gcloud app firewall-rules delete PRIORITY
- 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
-
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.