Crear reglas de cortafuegos de App Engine

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:

Consola

Usa la página Reglas de cortafuegos de la consola de Google Cloud para crear una regla de cortafuegos:

  1. Ve a la página Crear una regla de cortafuegos en la Google Cloud consola:

    Ir a la página Crear una regla de cortafuegos

  2. Especifica los detalles de la regla de cortafuegos:

    1. 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 a 2147483646. La prioridad 1 es la primera regla que se evalúa. Prioridad 2147483647 es la última regla que se evalúa y se reserva para la regla `default`.

    2. 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 en deny responden a las solicitudes con un error 403 Forbidden.
    3. 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.
    4. Opcional: En Descripción, incluya una descripción de la regla que no supere los 100 caracteres.
  3. Haz clic en Guardar para crear la regla.
  4. Prueba la regla para asegurarte de que la prioridad y la acción proporcionan el comportamiento esperado:
    1. Haga clic en Probar dirección IP.
    2. 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.
gcloud

Ejecuta los siguientes comandos de gcloud app firewall-rules para crear una regla de cortafuegos:

  1. Ejecuta el siguiente comando para crear una regla de cortafuegos:

    gcloud app firewall-rules create PRIORITY --action ALLOW_OR_DENY --source-range IP_RANGE --description DESCRIPTION
    donde:
    • PRIORITY es un número entero entre 1 y 2147483646 que define la importancia de la regla y el orden en el que se evalúa. Prioridad 1 es la primera regla que se evalúa. La prioridad 2147483647 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 y deny. Las reglas configuradas para allow reenviar la solicitud a la aplicacióndeny. Las reglas configuradas para deny responder a las solicitudes con un error 403 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.
  2. Ejecuta el siguiente comando para probar la regla y asegúrate de que la prioridad y la acción proporcionan el comportamiento esperado:
    gcloud app firewall-rules test-ip IP_ADDRESS
    donde IP_ADDRESS es la dirección IP que quieres probar con tu firewall.
  3. Ejecuta el siguiente comando para ver una lista de las reglas existentes:
    gcloud app firewall-rules list
  4. Ejecuta el siguiente comando para eliminar una regla:
    gcloud app firewall-rules delete PRIORITY
    donde PRIORITY es el valor de prioridad de la regla que quieres eliminar.
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
API

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 las aplicaciones y Control de acceso.