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.
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 serviciodefault
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.
- Usa el prefijo de URL
- 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:
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:
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
Ve a la página Servicios de App Engine.
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
Ve a la página Servicios de App Engine.
Selecciona el servicio que quieras editar.
Haz clic en Editar ajuste de entrada.
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
ointernal-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:
Añade el atributo
egress_setting
al campovpc_access_connector
del archivoapp.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 CloudREGION
con la región en la que se encuentra tu conectorCONNECTOR_NAME
con el nombre del conectorEGRESS_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á.
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.