En App Engine, puedes crear un cortafuegos con hasta 1000 reglas individuales priorizadas que permitan o restrinjan un intervalo de direcciones IP y subredes. Tu aplicación solo responderá a las solicitudes permitidas por el firewall.
Para saber cómo funciona el cortafuegos de App Engine, consulta el artículo Información sobre los cortafuegos.
Antes de empezar
Para poder crear reglas de cortafuegos de App Engine para tu aplicación, debes tener uno de los siguientes roles de gestión de identidades y accesos de App Engine, que incluyen los privilegios necesarios para crear o modificar reglas de cortafuegos:
- Administrador de App Engine
- Editor
- Propietario
Crear reglas de cortafuegos
Utilice uno de los siguientes métodos para crear una regla de cortafuegos. Repite estos pasos con cada regla adicional:
Usa la página Reglas de cortafuegos de la consola de Google Cloud para crear una regla de cortafuegos:
-
Ve a la página Crear una regla de cortafuegos en la Google Cloud consola:
-
Especifica los detalles de la regla de cortafuegos:
-
En Prioridad, introduzca un número entero para especificar la importancia relativa de la regla y definir el orden en el que se evalúa.
Los valores válidos van de
1
a2147483646
. La prioridad1
es la primera regla que se evalúa. Prioridad2147483647
es la última regla que se evalúa y se reserva para la regla `default`. -
En Acción tras coincidencia, especifica si quieres permitir o denegar el acceso a las solicitudes que coincidan con la regla. Las reglas configuradas en
allow
reenvían la solicitud a la aplicación. Las reglas configuradas endeny
responden a las solicitudes con un error403 Forbidden
. - En Intervalo de IP, defina el intervalo de direcciones IP que se aplican a la regla. El intervalo de direcciones IP debe definirse con la notación CIDR, puede incluir máscaras de subred y admite tanto IPv4 como IPv6.
- Opcional: En Descripción, incluya una descripción de la regla que no supere los 100 caracteres.
-
En Prioridad, introduzca un número entero para especificar la importancia relativa de la regla y definir el orden en el que se evalúa.
- Haz clic en Guardar para crear la regla.
-
Prueba la regla para asegurarte de que la prioridad y la acción proporcionan el
comportamiento esperado:
- Haga clic en Probar dirección IP.
- Introduce la dirección IP que quieras validar y, a continuación, haz clic en Probar para asegurarte de que la regla correspondiente se evalúa correctamente.
Ejecuta los siguientes comandos de gcloud
app firewall-rules
para crear una regla de cortafuegos:
-
Ejecuta el siguiente comando para crear una regla de cortafuegos:
donde:gcloud app firewall-rules create PRIORITY --action ALLOW_OR_DENY --source-range IP_RANGE --description DESCRIPTION
-
PRIORITY es un número entero entre
1
y2147483646
que define la importancia de la regla y el orden en el que se evalúa. Prioridad1
es la primera regla que se evalúa. La prioridad2147483647
es la última regla que se evalúa y se reserva para la regla `default`. -
ALLOW_OR_DENY especifica si se permite o se deniega el acceso
para las solicitudes que coincidan con la regla. Los valores válidos son
allow
ydeny
. Las reglas configuradas paraallow
reenviar la solicitud a la aplicacióndeny
. Las reglas configuradas paradeny
responder a las solicitudes con un error403 Forbidden
. - IP_RANGE define el intervalo de direcciones IP que se aplica a la regla. El intervalo de IPs debe definirse con la notación CIDR, puede incluir máscaras de subred y admite tanto IPv4 como IPv6.
- DESCRIPTION es una descripción opcional de la regla que no puede tener más de 100 caracteres.
-
PRIORITY es un número entero entre
-
Ejecuta el siguiente comando para probar la regla y asegúrate de que la prioridad y la acción proporcionan el comportamiento esperado:
donde IP_ADDRESS es la dirección IP que quieres probar con tu firewall.gcloud app firewall-rules test-ip IP_ADDRESS
-
Ejecuta el siguiente comando para ver una lista de las reglas existentes:
gcloud app firewall-rules list
-
Ejecuta el siguiente comando para eliminar una regla:
donde PRIORITY es el valor de prioridad de la regla que quieres eliminar.gcloud app firewall-rules delete PRIORITY
- Ejemplos:
-
Consulta los siguientes ejemplos para crear tu cortafuegos:
-
Añade una regla que permita una dirección IPv6 y una máscara de subred. A continuación, prueba esa regla para asegurarte de que se evalúa antes que las demás:
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
-
Añade una regla para denegar una dirección IPv4 y una máscara de subred. A continuación, prueba esa regla para asegurarte de que se evalúa correctamente:
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
-
Actualiza y prueba la regla predeterminada para asegurarte de que restringe todas las direcciones IP que no coincidan con ninguna otra regla:
gcloud app firewall-rules update default --action deny gcloud app firewall-rules test-ip 123.456.7.89
-
Para crear reglas de cortafuegos de forma programática para tu aplicación de App Engine, puedes usar los métodos
apps.firewall.ingressRules
de la API Admin.
Para probar una regla de cortafuegos y asegurarte de que la prioridad y la acción
proporcionan el comportamiento esperado, puedes usar el método
apps.firewall.ingressRules.list
y especificar
la dirección IP que quieras probar en el
parámetro matchingAddress
.
Información sobre las reglas de cortafuegos de App Engine
Un cortafuegos de App Engine consta de una lista ordenada de reglas que pueden permitir o denegar el acceso a tu aplicación desde la dirección o el intervalo de direcciones IP especificados. La regla se aplica a todos los recursos de la aplicación de App Engine.
Prioridad de las reglas de cortafuegos
Las reglas de cortafuegos se ordenan por importancia, que se define como un valor numérico en la prioridad de cada regla. Debe especificar un valor de prioridad único para cada regla, ya que define la importancia relativa a las demás reglas del cortafuegos. Los valores de la escala de prioridad de una regla van del valor más importante, 1
, al menos importante, 2147483647
.
Cada cortafuegos incluye una regla default
que se crea automáticamente con la prioridad 2147483647
y se aplica a todo el intervalo de direcciones IP de tu aplicación. La regla default
siempre se evalúa después de todas las demás reglas del cortafuegos y se aplica a todas las solicitudes de todas las direcciones IP.
El cortafuegos evalúa primero la regla de mayor prioridad.
Todas las reglas restantes del cortafuegos se evalúan secuencialmente hasta que una de ellas coincida con el intervalo de IPs de esa solicitud. Cuando se encuentra una regla que coincide, la conexión se permite o se deniega, y se omiten todas las reglas restantes del cortafuegos. Si ninguna de las reglas definidas manualmente en el cortafuegos coincide con la solicitud, se evalúa la regla default
.
Por ejemplo, si crea una regla con la prioridad 1
, siempre se evaluará primero. Si una solicitud entrante coincide con la regla de prioridad 1
, solo se evalúa esa regla y se omiten todas las demás reglas del cortafuegos, incluida la regla default
.
El ejemplo de cortafuegos que se muestra a continuación indica cómo puede cambiar el comportamiento de tu cortafuegos en función de la prioridad de una regla.
Cortafuegos de ejemplo
En este ejemplo, una empresa ha configurado un cortafuegos para conceder acceso a su aplicación en desarrollo al equipo de ingeniería y a la red corporativa interna. Las reglas de cortafuegos se han creado con grandes diferencias entre cada prioridad para permitir el crecimiento.
Prioridad | Acción | Intervalo de IP | Descripción |
---|---|---|---|
1000 | Denegar | 192.0.2.1 | Deniega el acceso a un atacante de denegación de servicio. |
2000 | Permitir | 198.51.100.2 | Permite el acceso a un ingeniero de la oficina satélite. |
3000 | Denegar | 198.51.100.0/24 | Deniega el acceso a todos los edificios que no sean de ingeniería. |
5000 | Permitir | 203.0.113.0/24 | Permite el acceso a la red del edificio principal. |
2147483647 | Denegar | * | Acción predeterminada |
Una vez creado el cortafuegos, supongamos que las siguientes solicitudes se dirigen a la aplicación de ejemplo y observe la respuesta de la aplicación:
- La solicitud de 198.51.100.2 coincide con la regla de prioridad 2000 y se permite.
- La solicitud de 198.51.100.100 coincide con la regla de prioridad 3000 y se deniega.
- La solicitud de 203.0.113.54 coincide con la regla de prioridad 5000 y se permite.
- La solicitud de 45.123.35.242 coincide con la regla predeterminada y se deniega.
Resolver reglas en conflicto
Por ejemplo, supongamos que se han intercambiado dos de las prioridades del cortafuegos de la empresa. Si se intercambian las reglas de las prioridades 2000 y 3000, se producirá un comportamiento no deseado.
Prioridad | Acción | Intervalo de IP | Descripción |
---|---|---|---|
1000 | Denegar | 192.0.2.1 | Deniega el acceso a un atacante de denegación de servicio. |
2000 | Denegar | 198.51.100.0/24 | Deniega el acceso a todos los edificios que no sean de ingeniería. |
3000 | Permitir | 198.51.100.2 | Permite acceder a un ingeniero de la oficina satélite. |
5000 | Permitir | 203.0.113.0/24 | Permite el acceso a la red del edificio principal. |
2147483647 | Denegar | * | Acción predeterminada |
El ingeniero de la oficina satélite no podrá acceder a la aplicación de la empresa, ya que la nueva prioridad de la regla implica que nunca se evaluará. La dirección IP del ingeniero 198.51.100.2
coincide con la regla que deniega el acceso a todos los usuarios que no sean ingenieros en el intervalo 198.51.100.0/24
antes de la regla que permite el acceso a la dirección IP del ingeniero.
Para solucionar este problema, debe asignar una prioridad más alta a la regla que permite el acceso a 198.51.100.2
que a la regla que deniega el acceso al intervalo de IPs 198.51.100.0/24
.
Siguientes pasos
Para asegurarte de que has configurado tu aplicación de forma segura y has definido los niveles de acceso adecuados, consulta Seguridad de aplicaciones y Control de acceso.