Información general sobre la seguridad de las aplicaciones

ID de región

El REGION_ID es un código abreviado que Google asigna en función de la región que selecciones al crear tu aplicación. El código no corresponde a un país o provincia, aunque algunos IDs de región pueden parecerse a los códigos de país y provincia que se usan habitualmente. En las aplicaciones creadas después de febrero del 2020, REGION_ID.r se incluye en las URLs de App Engine. En las aplicaciones creadas antes de esa fecha, el ID de región es opcional en la URL.

Más información sobre los IDs de región

La seguridad es una función principal de Google Cloud, pero aún así debes tomar medidas para proteger tu aplicación de App Engine e identificar vulnerabilidades.

Usa las siguientes funciones para asegurarte de que tu aplicación de App Engine sea segura. Para obtener más información sobre el modelo de seguridad de Google y los pasos que puedes seguir para proteger tus Google Cloud proyectos, consulta Seguridad de Google Cloud Platform.

Solicitudes HTTPS

Usa solicitudes HTTPS para acceder de forma segura a tu aplicación de App Engine. En función de cómo esté configurada tu aplicación, tienes las siguientes opciones:

Dominios de appspot.com
  • Usa el prefijo de URL https para enviar solicitudes HTTPS al servicio default de tu proyecto. Por ejemplo:
    https://PROJECT_ID.REGION_ID.r.appspot.com Google Cloud
  • Para orientar los anuncios a recursos específicos de tu aplicación de App Engine, usa la sintaxis -dot- para separar cada recurso al que quieras orientar los anuncios. Por ejemplo:
    https://VERSION-dot-SERVICE-dot-PROJECT_ID.REGION_ID.r.appspot.com

  • Para convertir una URL de HTTP en una URL de HTTPS, sustituye los puntos entre cada recurso por -dot-. Por ejemplo:
    http://SERVICE_ID.PROJECT_ID.REGION_ID.r.appspot.com
    https://SERVICE_ID-dot-PROJECT_ID.REGION_ID.r.appspot.com

Para obtener más información sobre las URLs HTTPS y los recursos de segmentación, consulta Cómo se enrutan las solicitudes.

Dominios personalizados

Para enviar solicitudes HTTPS con tu dominio personalizado, puedes usar los certificados SSL gestionados que proporciona App Engine. Para obtener más información, consulta el artículo Proteger dominios personalizados con SSL.

Control de acceso

En cada Google Cloud proyecto, configura el control de acceso para determinar quién puede acceder a los servicios del proyecto, incluido App Engine. Puedes asignar diferentes roles a diferentes cuentas para asegurarte de que cada cuenta solo tenga los permisos que necesita para admitir tu aplicación. Para obtener más información, consulta Configurar el control de acceso.

Cortafuegos de App Engine

El cortafuegos de App Engine te permite controlar el acceso a tu aplicación de App Engine mediante un conjunto de reglas que pueden permitir o denegar solicitudes de los intervalos de direcciones IP especificados. No se te cobra por el tráfico ni el ancho de banda que bloquea el cortafuegos. Crea un cortafuegos para:

Permitir solo el tráfico de una red específica
Asegúrate de que solo pueda acceder a tu aplicación un intervalo de direcciones IP de redes específicas. Por ejemplo, crea reglas para permitir solo el intervalo de direcciones IP de la red privada de tu empresa durante la fase de pruebas de la aplicación. Después, puedes crear y modificar tus reglas de firewall para controlar el ámbito del acceso durante todo el proceso de lanzamiento, de forma que solo determinadas organizaciones, ya sean de tu empresa o externas, puedan acceder a tu aplicación a medida que se acerca la fecha de lanzamiento público.
Permitir solo el tráfico de un servicio específico
Asegúrate de que todo el tráfico de tu aplicación de App Engine se envíe primero a través de un servicio específico. Por ejemplo, si utilizas un cortafuegos de aplicaciones web (WAF) de terceros para proxy las solicitudes dirigidas a tu aplicación, puedes crear reglas de cortafuegos para denegar todas las solicitudes, excepto las que se reenvían desde tu WAF.
Bloquear direcciones IP abusivas
Aunque Google Cloud tiene muchos mecanismos para evitar ataques, puedes usar el cortafuegos de App Engine para bloquear el tráfico a tu aplicación desde direcciones IP que presenten intenciones maliciosas o proteger tu aplicación frente a ataques de denegación de servicio y otras formas de abuso similares. Puedes añadir direcciones IP o subredes a una lista de denegación para que se rechacen las solicitudes procedentes de esas direcciones y subredes antes de que lleguen a tu aplicación de App Engine.

Para obtener más información sobre cómo crear reglas y configurar tu cortafuegos, consulta el artículo Controlar el acceso a aplicaciones con cortafuegos.

Controles de entrada

En esta sección se describe cómo usar la configuración de acceso para restringir el acceso de red a tu aplicación de App Engine. A nivel de red, de forma predeterminada, cualquier recurso de Internet puede acceder a tu aplicación de App Engine a través de su URL appspot o de un dominio personalizado configurado en App Engine. Por ejemplo, la URL appspot.com puede tener el siguiente formato: SERVICE_ID.PROJECT_ID.REGION_ID.r.appspot.com.

Puedes cambiar este ajuste predeterminado especificando otro ajuste para el ingreso. Todas las rutas de entrada, incluida la URL appspot.com predeterminada, están sujetas a su configuración de entrada. El acceso se define a nivel de servicio.

Ajustes de Ingress disponibles

Están disponibles los siguientes ajustes:

Ajuste Descripción
Interno Es el más restrictivo. Permite solicitudes de recursos asociados a las redes VPC del proyecto, como las siguientes:
Las solicitudes de estas fuentes permanecen en la red de Google, incluso si acceden a tu servicio en la URL appspot.com. Las solicitudes de otras fuentes, incluida Internet, no pueden acceder a tu servicio en la URL appspot.com ni en los dominios personalizados. No se admite la arquitectura multiempresa, es decir, varios dominios de confianza en el mismo proyecto.
Balanceo de carga interno y de Cloud Permite solicitudes de los siguientes recursos:
  • Recursos permitidos por el ajuste interno más restrictivo
  • Balanceador de carga de aplicación externo
Usa la opción Balanceo de carga interno y de Cloud para aceptar solicitudes de un balanceador de carga de aplicación externo, pero no directamente de Internet. Las solicitudes a la URL appspot.com omiten el balanceador de carga de aplicación externo, por lo que este ajuste impide que las solicitudes externas lleguen a la URL appspot.com.
Todo La menos restrictiva. Permite todas las solicitudes, incluidas las que se envían directamente desde Internet a la URL de appspot.com.

Acceder a servicios internos

Ten en cuenta lo siguiente:

  • En el caso de las solicitudes de una VPC compartida, el tráfico solo se considera interno si la aplicación de App Engine se ha desplegado en el proyecto host de la VPC compartida. Si la aplicación de App Engine se implementa en un proyecto de servicio de VPC compartida, solo el tráfico de las redes propiedad del proyecto de la aplicación será interno. El resto del tráfico, incluido el tráfico de otras VPCs compartidas, es externo.

  • Cuando accedas a servicios internos, llámalos como lo harías normalmente mediante sus URLs públicas, ya sea la URL appspot.com predeterminada o un dominio personalizado configurado en App Engine.

  • En el caso de las solicitudes procedentes de instancias de VM de Compute Engine u otros recursos que se ejecuten en una red de VPC del mismo proyecto, no es necesario realizar ninguna configuración adicional.

  • En el caso de las solicitudes de otros servicios de App Engine o de funciones de Cloud Run en el mismo proyecto, conecta el servicio o la función a una red de VPC y enruta todo el tráfico de salida a través del conector, tal como se describe en el artículo Conectarse a una red de VPC compartida.

  • Las solicitudes de recursos de redes VPC del mismo proyecto se clasifican como internas, aunque el recurso del que procedan tenga una dirección IP pública.

  • Las solicitudes de recursos on-premise conectados a la red de VPC a través de Cloud VPN se consideran internal.

Ver la configuración de Ingress

Consola

  1. Ve a la página Servicios de App Engine.

    Ir a la página Servicios

  2. Busque la columna Ingreso. En cada servicio, el valor de esta columna muestra el ajuste de entrada como Todos (valor predeterminado), Interno + Balanceo de carga o Interno.

gcloud

Para ver la configuración de entrada de un servicio con la CLI de gcloud, sigue estos pasos:

gcloud app services describe SERVICE

Sustituye SERVICE por el nombre de tu servicio.

Por ejemplo, para ver los ajustes de entrada y otra información de la ejecución del servicio predeterminado, haz lo siguiente:

gcloud app services describe default

Editar la configuración de Ingress

Consola

  1. Ve a la página Servicios de App Engine.

    Ir a la página Servicios

  2. Selecciona el servicio que quieras editar.

  3. Haz clic en Editar ajuste de entrada.

  4. Selecciona la opción de entrada que quieras en el menú y haz clic en Guardar.

gcloud

Para actualizar el ajuste de entrada de un servicio con la CLI de gcloud, sigue estos pasos:

gcloud app services update SERVICE --ingress=INGRESS

Sustituye:

  • SERVICE: el nombre de tu servicio.
  • INGRESS: el control de entrada que quieras aplicar. Uno de los valores all, internal-only o internal-and-cloud-load-balancing.

Por ejemplo:

  • Para actualizar el servicio predeterminado de una aplicación de App Engine de forma que solo acepte tráfico de Cloud Load Balancing y de redes de VPC que estén en el mismo proyecto, sigue estos pasos:

    gcloud app services update default --ingress=internal-and-cloud-load-balancing
  • Para actualizar un servicio llamado "internal-requests" para que solo acepte tráfico de redes de VPC que estén en el mismo proyecto, haz lo siguiente:

    gcloud app services update internal-requests --ingress=internal-only

Configuración de salida

Si usas Acceso a VPC sin servidor, puedes especificar la configuración de salida de tu servicio de App Engine.

De forma predeterminada, solo las solicitudes a direcciones IP internas y nombres de DNS internos se enrutan a través de un conector de Acceso a VPC sin servidor. Puedes especificar el ajuste de salida de tu servicio en el archivo app.yaml.

Los ajustes de salida no son compatibles con el servicio de obtención de URLs. Si aún no lo has hecho, inhabilitar el valor predeterminado de URL Fetch y dejar de usar explícitamente la biblioteca urlfetch. Si se usa la biblioteca urlfetch, se ignoran los ajustes de salida y las solicitudes no se enrutarán a través de un conector de Acceso a VPC sin servidor.

Para configurar el comportamiento de salida de tu servicio de App Engine, sigue estos pasos:

  1. Añade el atributo egress_setting al campo vpc_access_connector del archivo app.yaml de tu servicio:

    vpc_access_connector:
      name: projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME
      egress_setting: EGRESS_SETTING

    Sustituye:

    • PROJECT_ID con el ID de tu proyecto Google Cloud
    • REGION con la región en la que se encuentra tu conector
    • CONNECTOR_NAME con el nombre del conector
    • EGRESS_SETTING con una de las siguientes opciones:
      • private-ranges-only Predeterminado. Solo se enrutan a tu red de VPC las solicitudes a intervalos de direcciones IP RFC 1918 y RFC 6598 o nombres de DNS internos. El resto de las solicitudes se dirigen directamente a Internet.
      • all-traffic Todas las solicitudes salientes de tu servicio se dirigen a tu red de VPC. Las solicitudes están sujetas a las reglas de cortafuegos, DNS y enrutamiento de tu red de VPC. Ten en cuenta que, si enrutas todas las solicitudes salientes a tu red de VPC, aumentará la cantidad de tráfico de salida que gestiona el conector de Acceso a VPC sin servidor y se te cobrará.
  2. Despliega el servicio:

    gcloud app deploy
    

Security Scanner

Google Cloud Web Security Scanner descubre vulnerabilidades rastreando tu aplicación de App Engine, siguiendo todos los enlaces dentro del alcance de tus URLs de inicio e intentando ejecutar la máxima cantidad posible de acciones de usuario y de controladores de eventos.

Para usar el análisis de seguridad, debes ser propietario delGoogle Cloud proyecto. Para obtener más información sobre cómo asignar roles, consulta el artículo sobre cómo configurar el control de acceso.

Puedes ejecutar análisis de seguridad desde la Google Cloud consola para identificar vulnerabilidades de seguridad en tu aplicación de App Engine. Para obtener más información sobre cómo ejecutar Security Scanner, consulta el artículo Usar Web Security Scanner.