ID de región
REGION_ID
es un código abreviado que Google asigna en función de la región que eliges cuando creas la app. El código no corresponde a un país ni a una provincia, aunque algunos ID de región puedan parecer similares a los códigos de país y provincia que se suelen usar. En el caso de las apps creadas después de febrero de 2020, REGION_ID.r
se incluye en las URL de App Engine. En el caso de las apps existentes creadas antes de esta fecha, el ID de región es opcional en la URL.
Obtén más información acerca de los ID de región.
La seguridad es una característica central de Google Cloud, pero debes seguir algunos pasos para proteger la app de App Engine y, luego, identificar las vulnerabilidades.
Asegúrate de que tu app de App Engine sea segura a través de las siguientes características. Si deseas obtener más información sobre el modelo de seguridad de Google y los pasos disponibles que puedes seguir para proteger los proyectos de Google Cloud, consulta Seguridad de Google Cloud Platform.
Solicitudes HTTPS
Usa solicitudes HTTPS para acceder a tu aplicación de App Engine de manera segura. Según la configuración de tu app, tienes las siguientes opciones:
- Dominios
appspot.com
- Usa el prefijo de URL
https
para enviar una solicitud HTTPS al serviciodefault
del proyecto de Google Cloud, por ejemplo:
https://PROJECT_ID.REGION_ID.r.appspot.com
Para orientar recursos específicos de tu aplicación de App Engine, usa la sintaxis
-dot-
para separar cada recurso que quieras orientar, por ejemplo:
https://VERSION-dot-SERVICE-dot-PROJECT_ID.REGION_ID.r.appspot.com
Para convertir una URL HTTP en una URL HTTPS, reemplaza 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 URL HTTPS y sobre cómo orientar recursos, consulta Cómo enrutar solicitudes.
- Usa el prefijo de URL
- Dominios personalizados
Para enviar solicitudes HTTPS con tu dominio personalizado, puedes usar los certificados SSL administrados que aprovisiona App Engine. Para obtener más información al respecto, consulta Protege dominios personalizados con SSL.
- Controladores de app
A fin de aplicar HTTPS en los controladores de tu app, puedes especificar el elemento
secure: always
para cada controlador en tu archivoapp.yaml
, como se muestra a continuación:handlers: - url: /.* script: auto secure: always redirect_http_response_code: 301
Si usas
secure: always
, todo el tráfico HTTP se redirecciona a una URL HTTPS con la misma ruta. Para obtener más información, consulta la referencia de configuración deapp.yaml
.
Control de acceso
En cada proyecto de Google Cloud, configura el control de acceso para determinar quién puede acceder a los servicios dentro del proyecto, incluido App Engine. Puedes asignar diferentes funciones a diferentes cuentas para asegurarte de que cada cuenta tenga solo los permisos necesarios para admitir la app. Si deseas obtener más información, consulta Configura el control de acceso.
Firewall de App Engine
El firewall de App Engine te permite controlar los accesos a tu aplicación a través de un conjunto de reglas que se encargan de admitir o rechazar las solicitudes de los rangos específicos de direcciones IP. No se te cobrará por el tráfico o el ancho de banda que sea bloqueado por el firewall. Crea un firewall para:
- Permitir tráfico solo desde una red específica
- Asegúrate de que solo un rango de direcciones IP de redes específicas pueda acceder a tu aplicación. Por ejemplo, crea reglas para permitir solo el rango de direcciones IP de la red privada de tu empresa durante la fase de prueba de la aplicación. Durante la etapa de lanzamiento, puedes crear y modificar las reglas de tu firewall para controlar el alcance de los accesos, además de permitir que solo ciertas organizaciones, internas o externas a tu empresa, accedan a tu aplicación a medida que cambia la disponibilidad pública.
- Permitir tráfico solo desde un servicio específico
- Asegúrate de que todo el tráfico de tu aplicación de App Engine pase primero por un proxy de servicio específico. Por ejemplo, si utilizas un firewall de aplicación web (WAF) de terceros para que las solicitudes que se dirigen a tu aplicación pasen por un proxy, puedes crear reglas de firewall y rechazar todas las solicitudes, excepto las que se reenvían desde tu WAF.
- Bloquear direcciones IP maliciosas
- Si bien Google Cloud tiene muchos mecanismos para evitar ataques, puedes usar el firewall de App Engine para bloquear el tráfico hacia la app desde direcciones IP que presenten intenciones maliciosas o proteger la app contra ataques de denegación del servicio y formas similares de abuso. Puedes agregar direcciones IP o subredes a una lista de bloqueo para que las solicitudes enrutadas desde esas direcciones y subredes se rechacen antes de que alcancen la app de App Engine.
Para obtener más información sobre cómo crear reglas y configurar tu firewall, consulta Controla el acceso a las apps a través de firewalls.
Controles de entrada
En esta sección, se describe cómo usar la configuración de entrada para restringir el acceso de red a tu app de App Engine. De forma predeterminada, a nivel de la red, cualquier recurso de Internet puede acceder a tu aplicación de App Engine en su URL appspot o en 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 parámetro de configuración predeterminado si especificas uno diferente para la entrada. Todas las rutas de acceso de entrada, incluida la URL predeterminada appspot.com
, están sujetas al parámetro de configuración de entrada. La entrada se configura a nivel de servicio.
Opciones de configuración de entrada disponibles
Podrás configurar los siguientes parámetros:
Configuración | Descripción |
---|---|
Interno |
Más restrictivo. Permite solicitudes de recursos conectados a las redes de VPC del proyecto, como:
appspot.com
Las solicitudes de otras fuentes, incluido Internet, no pueden llegar a tu servicio en la URL appspot.com ni en dominios personalizados. No hay asistencia para multiusuarios, es decir, múltiples dominios de confianza dentro del mismo proyecto.
|
Balanceo de cargas interno y en la nube | Permite solicitudes de los siguientes recursos:
appspot.com omiten el balanceador de cargas para aplicaciones externo, por lo que este parámetro de configuración evita que las solicitudes externas lleguen a la URL appspot.com .
|
Todos |
Menos restrictivo. Permite todas las solicitudes, incluidas las solicitudes directas desde Internet a la URL appspot.com .
|
Accede a servicios internos
Se aplican las siguientes consideraciones:
Para las solicitudes de una VPC compartida, el tráfico solo se considera interno si la app de App Engine se implementa en el proyecto host de 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 que pertenecen al proyecto de la aplicación es interno. El resto del tráfico, incluido el de otras VPC compartidas, es externo.
Cuando accedes a los servicios internos, llámalos como lo harías con sus URLs públicas, ya sea la URL
appspot.com
predeterminada o un dominio personalizado configurado en App Engine.Para solicitudes de instancias de VM de Compute Engine o de algún otro recurso que se ejecute dentro de una red de VPC en el mismo proyecto, no se requiere ninguna configuración adicional.
Para solicitudes de otros servicios de App Engine o de Cloud Run o 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, como se describe en Conéctate a una red de VPC compartida.
Las solicitudes de recursos dentro de una red de VPC en el mismo proyecto se clasifican como internas incluso si el recurso desde el que se originan tiene una dirección IP pública.
Las solicitudes de recursos locales conectados a la red de VPC mediante Cloud VPN se consideran
internal
.
Ver configuración de entrada
Console
Ve a la página de Servicios de App Engine.
Ubica la columna Ingress. Para cada servicio, el valor de esta columna muestra la configuración de entrada como una de Todo (predeterminado), Internas y de balanceo de cargas, o Internas.
gcloud
Para ver la configuración de entrada de un servicio mediante la CLI de gcloud, sigue estos pasos:
gcloud app services describe SERVICE
SERVICE por el nombre del servicio
Por ejemplo, para ver la configuración de entrada y otra información sobre el servicio predeterminado, ejecuta lo siguiente:
gcloud app services describe default
Editar configuración de entrada
Console
Ve a la página de Servicios de App Engine.
Selecciona el servicio que deseas editar.
Haz clic en Editar configuración de entrada.
Selecciona en el menú la configuración de entrada que quieras y haz clic en Guardar.
gcloud
Para actualizar de entrada de un servicio mediante la CLI de gcloud, sigue estos pasos:
gcloud app services update SERVICE --ingress=INGRESS
Reemplaza lo siguiente:
- SERVICE: el nombre del servicio
- INGRESS: el control de entrada que deseas aplicar Es uno de los siguientes:
all
,internal-only
ointernal-and-cloud-load-balancing
.
Por ejemplo:
Actualiza el servicio predeterminado de una app de App Engine para aceptar tráfico solo desde Cloud Load Balancing y redes de VPC que estén en el mismo proyecto:
gcloud app services update default --ingress=internal-and-cloud-load-balancing
A fin de actualizar un servicio llamado “internal-requests” para aceptar tráfico solo de las redes de VPC que se encuentren en el mismo proyecto, realiza lo siguiente:
gcloud app services update internal-requests --ingress=internal-only
Configuración de salida
Si usas Acceso a VPC sin servidores, puedes especificar la configuración de salida para el servicio de App Engine.
De forma predeterminada, solo las solicitudes a las direcciones IP internas y a los nombres de DNS internos se enrutan a través de un conector de Acceso a VPC sin servidores. Puedes especificar el parámetro de configuración de salida del servicio en el archivo app.yaml
.
La configuración de salida no es compatible con el servicio de recuperación de URL. Si aún no lo has hecho, inhabilita la recuperación predeterminada de URL mediante sockets y descontinúa el uso explícito del paquete urlfetch
.
Si se usa la biblioteca urlfetch
, se ignora la configuración de salida, y las solicitudes no se enrutarán a través de un conector de Acceso a VPC sin servidores.
Para configurar el comportamiento de salida de tu servicio de App Engine, haz lo siguiente:
Agrega el atributo
egress_setting
al campovpc_access_connector
del archivoapp.yaml
del servicio:vpc_access_connector: name: projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME egress_setting: EGRESS_SETTING
Reemplaza lo siguiente:
PROJECT_ID
por el ID del proyecto de Google CloudREGION
por la región en la que se encuentra el conectorCONNECTOR_NAME
por el nombre de tu conectorEGRESS_SETTING
por uno de los siguientes valores:private-ranges-only
: predeterminado. Solo las solicitudes a los rangos de direcciones IP RFC 1918 y RFC 6598, o a nombres de DNS internos, se enrutan a la red de VPC. Todas las demás solicitudes se enrutan directamente a Internet.all-traffic
: todas las solicitudes salientes de tu servicio se enrutan a la red de VPC. Entonces, las solicitudes estarán sujetas al firewall, el DNS y las reglas de enrutamiento de la red de VPC. Ten en cuenta que el enrutamiento de todas las solicitudes salientes a tu red de VPC aumenta la cantidad de salida que controla el conector de Acceso a VPC sin servidores y puede generar cargos.
Implementa el servicio:
gcloud app deploy
Análisis de seguridad
Web Security Scanner de Google Cloud rastrea las vulnerabilidades a través del rastreo de tu aplicación de App Engine, siguiendo todos los vínculos dentro del alcance de las URL de inicio y trata de ejecutar la mayor cantidad de entradas de usuarios y controladores de eventos.
Para usar el análisis de seguridad, debes ser propietario del proyecto de Google Cloud. Para obtener más información sobre cómo asignar funciones, consulta Configura el control de acceso.
Puedes ejecutar análisis de seguridad desde la consola de Google Cloud a fin de identificar vulnerabilidades de seguridad en la app de App Engine. Para obtener detalles sobre cómo ejecutar Security Scanner, consulta Usa Web Security Scanner.