Cloud CDN ofrece tres formas de ayudarte a controlar el acceso a tu contenido almacenado en caché:
- Las URLs firmadas te permiten entregar respuestas desde las cachés distribuidas a nivel global de Google Cloudcuando necesitas que las solicitudes estén autorizadas. Cualquier persona que tenga la URL firmada puede acceder al recurso por un tiempo limitado.
- Las cookies firmadas también te permiten acceder a un recurso por un tiempo limitado. Son útiles cuando necesitas firmar decenas o cientos de URLs para cada usuario.
- La autenticación de origen privado te permite limitar las conexiones a tus buckets de Amazon Simple Storage Service (Amazon S3) o a otros almacenes de objetos compatibles, y evitar que los usuarios accedan a ellos de forma directa.
URLs firmadas
Una URL firmada es una URL que proporciona permisos y tiempo limitados para realizar una solicitud.
Casos prácticos
En algunas situaciones, es posible que no desees solicitarles a tus usuarios una Cuenta de Google para acceder a contenido de Cloud CDN, pero que sí desees controlar el acceso con la lógica específica de tu aplicación.
La forma típica de abordar este caso de uso es proporcionar una URL firmada a un usuario, que le otorga acceso de lectura a ese recurso por un tiempo limitado. Debes especificar una hora de vencimiento cuando creas la URL firmada. Cualquier usuario que conozca la URL puede acceder al recurso hasta que se alcance la fecha de vencimiento de la URL o se cambie la clave usada para firmar la URL.
Usa las URLs firmadas en los siguientes casos:
Para restringir el acceso a archivos individuales, como a una descarga de instalación
Para entregar a los usuarios aplicaciones cliente que no admiten cookies
Cómo funcionan las URLs firmadas
Las URLs firmadas brindan a un cliente acceso temporal a un recurso privado sin necesitar autorización adicional. Para lograr esto, se genera un hash de los elementos seleccionados en una solicitud y tales elementos se firman de forma criptográfica mediante el uso de la clave altamente aleatoria que generas.
Cuando una solicitud entrega la URL firmada que proporcionaste, la solicitud se considera autorizada para recibir el contenido solicitado. Cuando Cloud CDN recibe una solicitud con una firma incorrecta para un servicio habilitado, la solicitud se rechaza y nunca va al backend a fin de que se controle.
Por lo general, cualquier persona que tenga una URL firmada puede usarla. Sin embargo, una URL firmada generalmente está diseñada para que la utilice el cliente al que se le dio la URL. Para mitigar el riesgo de que otro cliente utilice la URL, las URLs firmadas caducan en el momento que elijas. Para minimizar el riesgo de que una URL firmada se comparta, configúrala para que caduque lo antes posible.
Cómo se firman las URL
Antes de que puedas firmar las URLs, crea una o más claves criptográficas en un servicio de backend, bucket de backend o ambos. Luego, firmas y generas un hash criptográfico para una URL usando Google Cloud CLI o tu propio código.
Administra las URLs firmadas
Cuando el control de URL firmadas está habilitado en un backend, Cloud CDN otorga un control especial a las solicitudes con URL firmadas. En particular, las solicitudes con un parámetro de búsqueda Signature se consideran firmadas. Cuando se recibe una solicitud de
este tipo, Cloud CDN verifica lo siguiente:
- Que el método HTTP sea
GET,HEAD,OPTIONSoTRACE - Que el parámetro
Expiresse establezca en una hora futura - Que la firma de la solicitud coincida con la firma procesada mediante el uso de la clave con nombre.
Si alguna de estas verificaciones falla, se entrega una respuesta 403 Forbidden. De lo contrario,
la solicitud se dirige al backend a través del proxy o se entrega desde la caché.
Las solicitudes OPTIONS y TRACE siempre se envían a través de un proxy al backend de forma directa
y no se entregan desde la caché. Todas las
solicitudes firmadas válidas para una URL base particular (la parte anterior al parámetro Expires)
comparten la misma entrada de caché. Las respuestas a las solicitudes firmadas y sin firmar
no comparten entradas de caché. Las respuestas se almacenan en caché y se entregan hasta el
plazo de vencimiento que estableciste.
El contenido que requiere solicitudes firmadas, a menudo, se marca como no almacenable en caché con el
encabezado Cache-Control. Para que estos objetos sean compatibles con
Cloud CDN sin requerir cambios de backend, Cloud CDN
anula el encabezado Cache-Control cuando responde a solicitudes que tienen URLs firmadas
válidas. Cloud CDN trata el contenido como almacenable en caché y usa
el parámetro max-age establecido en tu configuración de Cloud CDN. La
respuesta entregada seguirá teniendo los encabezados Cache-Control que generó el backend.
La URL que se devuelve desde gcloud CLI o que genera el código personalizado puede distribuirse según tus necesidades. Recomendamos firmar solo las URLs HTTPS, ya que HTTPS proporciona un transporte seguro que evita que se intercepte el componente de firma de la URL firmada. Del mismo modo, debes distribuir las URLs firmadas a través de protocolos de transporte seguros, como TLS/HTTPS.
Para obtener instrucciones sobre cómo usar URLs firmadas con Cloud CDN, consulta Usa URLs firmadas.
Cookies firmadas
Una cookie firmada es una cookie que proporciona permisos y tiempo limitados para realizar solicitudes de un conjunto de archivos.
Casos prácticos
Usa cookies firmadas en los siguientes casos:
Para brindar acceso a varios archivos restringidos
Para evitar cambiar las URLs actuales
Para evitar actualizar las URLs cada vez que actualizas la autorización de acceso al contenido
Transmisión de contenido multimedia usando HLS y DASH
Si entregas contenido de video y audio con los protocolos de HTTP Live Streaming (HLS) o Transmisión adaptable y dinámica a través de HTTP (DASH), por lo general, debes generar un manifiesto que contenga una lista de URLs para segmentos de video y audio. Es posible que tengas varias instancias de cada segmento para proporcionar diferentes codificaciones (códec, tasa de bits, resolución) a un cliente.
Aunque puedes usar las URL firmadas de Cloud CDN para firmar y autorizar el acceso a cada una de estas URL, generar de forma dinámica todas las combinaciones posibles por cada uno de los usuarios es una tarea pesada y aumenta la carga de origen y la complejidad de la aplicación.
Las cookies firmadas están diseñadas para abordar este problema. Puedes proporcionarle al usuario
una cookie firmada que lo autorice a acceder a cualquier contenido que coincida con una
política (prefijo de URL y fecha de vencimiento) sin tener que generar o
firmar tu manifiesto de contenido multimedia de forma individual. Puedes actualizar el acceso de los usuarios de forma periódica a través
de la API de JavaScript fetch() en la navegación de páginas o en otros mecanismos en segundo plano
dentro de aplicaciones integradas. La posibilidad de actualizar el acceso de los usuarios también te permite usar tiempos de vencimiento
reducidos, lo que dificulta que los usuarios compartan contenido protegido.
Puedes emitir estas cookies a usuarios con varios clientes de navegador y otros clientes que “hablan” en HTTP, como ExoPlayer de Google y AVPlayer de iOS.
Descargas binarias (videojuegos)
Al igual que con la transmisión de contenido multimedia, si proporcionas descargas de clientes de videojuegos, puedes dividir los parches de varios gigabytes o los datos de videojuegos en fragmentos más pequeños para admitir el almacenamiento en caché, la invalidación y la simultaneidad más específicos.
Por lo general, estos fragmentos se enumeran en un manifiesto. Las cookies firmadas te permiten autorizar el acceso a esas descargas solo para los usuarios autenticados sin necesidad de modificar el manifiesto y (como con las URL firmadas) sin renunciar a los beneficios del almacenamiento en caché de Cloud CDN.
Cómo funcionan las cookies firmadas
La configuración y emisión de cookies firmadas requiere tres pasos:
- Crear una clave de firma para un servicio de backend determinado
- Crear un valor de cookie con el prefijo, el vencimiento, el nombre de la clave y la firma criptográfica de URL permitidos
- Emitir la cookie en el código de la aplicación
Cloud CDN valida estas cookies firmadas cuando se incluyen en las solicitudes.
Puedes evitar que los usuarios eludan los controles de cookies firmadas cuando usas un
bucket de Cloud Storage. Para hacerlo, debes quitar la función allUsers y otorgar acceso de lectura de la cuenta de servicio de Cloud CDN al bucket a fin de restringir el acceso al bucket subyacente.
De manera similar, tus instancias de máquina virtual (VM) deben validar las firmas en cada solicitud firmada que entregan.
Para obtener instrucciones sobre cómo usar cookies firmadas con Cloud CDN, consulta Usa cookies firmadas.
Autenticación de origen privado
La autenticación de origen privado otorga a Cloud CDN acceso a largo plazo a buckets privados de Amazon S3 o a almacenes de objetos compatibles. Luego, Cloud CDN puede entregar contenido desde estos orígenes sin usar acceso de lectura público.
La autenticación de origen privado está orientada al origen, mientras que las URLs firmadas y las cookies firmadas están orientadas al cliente. Puedes habilitar ambas opciones para el mismo contenido. La autenticación de origen privado limita el acceso que no es de CDN a tus orígenes y contenido. Las URLs y cookies firmadas controlan qué usuarios pueden acceder a Cloud CDN.
La autenticación de origen privado es compatible para Cloud CDN con un balanceador de cargas de aplicaciones externo global o un balanceador de cargas de aplicaciones clásico.
Si deseas obtener instrucciones para usar la autenticación de origen privado con Cloud CDN, consulta Configura la autenticación de origen privado.
Advertencias y limitaciones
Eres el único responsable del consentimiento y el cumplimiento de la privacidad que se necesitan para las cookies firmadas. Tú eres el que administra y emite las cookies firmadas, no Google.
Si usas URLs y cookies firmadas para controlar el acceso a los mismos archivos y un visualizador usa una URL firmada para solicitar un archivo, Cloud CDN determina si debe devolver el archivo al visualizador solo en función de la URL firmada. Cloud CDN solo considera las cookies firmadas si la URL no está firmada.
Si configuraste tu servicio para solicitudes firmadas y la URL incluye
Signaturecomo parámetro de consulta, Cloud CDN intenta interpretarla como una URL firmada. Si Cloud CDN intenta tratar la URL como una firmada y esa no es tu intención, es probable que la URL no sea válida, por lo que Cloud CDN la rechaza.Por lo general, los navegadores y otros clientes aplican límites al tamaño de las cookies (4 KB por cookie) y un recuento total de 50 por dominio, según RFC 6265. Ten en cuenta la carga útil total de cookies que se envía desde el dominio.
Se aplican los límites y las restricciones de Cloud CDN, incluido un máximo de tres claves de solicitudes firmadas por backend.
Las solicitudes firmadas se cobran igual que las solicitudes existentes de Cloud CDN, pero las solicitudes que fallan (rechazadas), como las que tienen firmas vencidas o no válidas, siguen generando cargos de búsqueda en caché.
¿Qué sigue?
- Para obtener información sobre otras prácticas recomendadas, consulta Prácticas recomendadas de la seguridad web.