Prácticas recomendadas de seguridad web

Prácticas recomendadas de seguridad web

Cloud CDN y Cloud Load Balancing pueden ayudarte a cumplir las prácticas recomendadas de seguridad web, tanto si sirves contenido desde instancias de Compute Engine como desde un segmento de Cloud Storage o desde un origen externo ubicado fuera de Google Cloud.

Definir encabezados de seguridad

La especificación HTTP tiene varios encabezados que controlan lo siguiente:

  • Comportamiento de los clientes
  • Cómo se inserta el contenido
  • Cómo se sirve el contenido en distintos dominios
  • Si se debe usar siempre TLS (HTTPS) al conectarse a ese dominio

Estos controles suelen representarse como encabezados de respuesta HTTP, que puedes definir para cada backend (origen, en términos de CDN) como encabezados de respuesta personalizados para tu balanceador de carga de aplicaciones externo y tu implementación de Cloud CDN.

Si usas Cloud Storage y sirves contenido web desde tu segmento, puedes usar Cloud CDN delante de tu segmento de almacenamiento para definir encabezados de seguridad web y almacenar en caché el contenido popular.

Los encabezados de seguridad web más útiles se definen en la siguiente tabla.

Nombre del encabezado Descripción Ejemplo de uso
Strict-Transport-Security (HSTS) Asegúrate de que tus dominios tengan certificados SSL (TLS) válidos antes de definir este encabezado.

Informa a los clientes de que deben conectarse a tu dominio directamente a través de HTTPS (SSL/TLS), lo que evita la necesidad de redirigir de HTTP a HTTPS, que es más lento y conlleva el riesgo de sufrir un ataque de intermediario.

Una vez que se ha definido esta cabecera, no se puede deshacer. Después de almacenar en caché este encabezado, los clientes de navegadores modernos no intentan establecer conexiones no HTTPS y los usuarios no pueden acceder a ningún dominio para el que hayan recibido este encabezado, aunque SSL no funcione. Este comportamiento evita que un atacante degrade el protocolo seguro a HTTP sin protección (lo que se conoce como ataque de degradación).

Cuando sirva el encabezado Strict-Transport-Security, tenga cuidado al añadir las directivas includeSubdomains o preload. Estas directivas requieren que cualquier subdominio use HTTPS, incluidos los sitios internos del mismo dominio. Por ejemplo, support.example.com cuando se sirve desde example.com.

Exige que los clientes se conecten directamente a través de HTTPS en todas las conexiones futuras y almacena en caché esta directiva durante un máximo de dos años:

Strict-Transport-Security: max-age=3104000

X-Frame-Options Indica si un navegador puede renderizar una página en <frame>, <iframe>, <embed> u <object>. Esto ayuda a evitar ataques de clickjacking, ya que no permite que tu contenido se inserte en otros sitios. Denegar todos los iframes de tu sitio: X-Frame-Options: DENY

Permitir que solo tu sitio pueda insertarse en un iframe: X-Frame-Options: SAMEORIGIN

Content-Security-Policy Para evaluar la política de seguridad del contenido de su sitio, puede usar la herramienta CSP Evaluator de Google. No permitas las secuencias de comandos insertadas y carga solo las secuencias de comandos a través de HTTPS: Content-Security-Policy: default-src https:

Ten cuidado al introducir nuevos encabezados de seguridad en sitios web que ya tengas, ya que pueden dañar secuencias de comandos de terceros, contenido insertado (por ejemplo, en iframes) u otros aspectos de tus sitios. Antes de hacer cambios en el tráfico de producción, te recomendamos que crees una segunda instancia de tu contenedor o servicio backend y que hagas pruebas.

Puedes leer más información sobre los encabezados de seguridad web y las prácticas recomendadas en web.dev y en el sitio de seguridad de la información de Mozilla.

Gestión de TLS y certificados

Los certificados gestionados tienen las siguientes características:

  • Se ofrecen sin coste
  • Se puede implementar fácilmente en tus balanceadores de carga
  • Renovar automáticamente
  • Se distribuyen a nivel mundial en todas las ubicaciones perimetrales de Google

TLS proporciona autenticidad validando que los datos no se han modificado durante la transmisión. Los certificados TLS proporcionan confidencialidad al asegurarse de que un espía no pueda determinar qué se intercambia entre usuarios y servidores. Esto es importante para la privacidad y la seguridad de los usuarios.

Con los certificados SSL, puedes beneficiarte de protocolos de transporte modernos, como HTTP/2 y el protocolo QUIC de Google, que requieren SSL (TLS). Estos protocolos mejoran directamente el rendimiento del contenido web, la distribución de contenido multimedia (como el vídeo en streaming) y la fiabilidad en redes congestionadas.

Google Cloud Admite protocolos TLS modernos (como TLS 1.3) en los servicios Cloud Load Balancing y Cloud CDN.

Puedes usar políticas de SSL para aumentar la versión mínima de TLS. Te recomendamos que actualices la versión a TLS 1.2 si no necesitas admitir clientes antiguos, como dispositivos insertados o clientes que no sean navegadores y que tengan más de 10 años. A nivel mundial, TLS v1.0 y TLS v1.1 representan menos del 0,5% de las conexiones en Google Cloud. Si necesitas identificar o asociar clientes específicos con versiones obsoletas de TLS, puedes usar la variable {tls_version} en un encabezado de solicitud. Después, puedes registrar esta información.

Siguientes pasos