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 entre cachés distribuidas en todo el mundo cuando necesite autorizar las solicitudes. Cualquier persona con la URL firmada puede acceder al recurso por tiempo limitado.
- Las cookies firmadas también te permiten acceder a una recurso por 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 tu los buckets de Amazon Simple Storage Service (Amazon S3) y otros almacenes de objetos compatibles, y evitan accedan a ellos directamente.
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 mediante la lógica específica de tu aplicación.
La forma típica de abordar este caso práctico 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 URL firmadas en los siguientes casos:
Para restringir el acceso a archivos individuales, como una instalación descargar.
Para brindar a los usuarios aplicaciones cliente que no admiten cookies.
Cómo funcionan las URL firmadas
Las URL 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 URL 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 URL, crea una o más claves criptográficas en un servicio de backend, bucket de backend, o ambos. Luego, generas un hash de forma criptográfica para una URL y la firmas mediante Google Cloud CLI o tu propio código.
Administra las URL 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
,OPTIONS
oTRACE
. - Que el parámetro
Expires
se 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 o se entrega desde la memoria caché.
Las solicitudes OPTIONS
y TRACE
siempre se envían directamente al backend.
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é. Respuestas a 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é mediante el encabezado Cache-Control
. Para hacer que tales objetos sean compatibles con
Cloud CDN sin requerir cambios en el backend, Cloud CDN
anula el encabezado Cache-Control
cuando se responden solicitudes que tienen
URLs firmadas. 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 muestra desde gcloud CLI o que genera la instancia puedes distribuir tu código según tus necesidades. Recomendamos firmar solo las URL de HTTPS, ya que HTTPS proporciona un transporte seguro que evita que se intercepte el componente de firma de la URL firmada. Del mismo modo, puedes distribuir las URL firmadas a través de protocolos de transporte seguros como, por ejemplo, TLS/HTTPS.
Para obtener instrucciones sobre el uso de URL firmadas con Cloud CDN, consulta Usa URL 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 proporcionar acceso a varios archivos restringidos.
Para evitar cambiar tus URLs actuales.
Para evitar que se actualicen las URLs cada vez que actualices la autorización para acceder al contenido.
Transmisión de contenido multimedia mediante HLS y DASH
Si entregas contenido de video y audio mediante los protocolos de HTTP Live Streaming (HLS) o Dynamic Adaptive Streaming over HTTP (DASH), por lo general, debes generar un manifiesto que contiene una lista de URL 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 medios de forma individual. Puedes actualizar el acceso de los usuarios periódicamente a través del
API fetch()
de JavaScript en la navegación de páginas u otros mecanismos en segundo plano en
aplicaciones integradas. La posibilidad de actualizar el acceso de los usuarios también te permite usar horas de vencimiento reducidas, 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:
- Crea una clave de firma para el servicio de backend determinado.
- Crea un valor de cookie con el prefijo de URL permitido, el vencimiento, el nombre de la clave y firma criptográfica.
- Emite la cookie en el código de tu 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.
Si quieres obtener instrucciones para usar cookies firmadas con Cloud CDN, consulta Usa cookies firmadas.
Autenticación de origen privado
La autenticación de origen privado le da a Cloud CDN acceso a largo plazo buckets privados de Amazon S3 o almacenes de objetos compatibles. Luego, Cloud CDN puede entregar contenido desde estos orígenes sin usar acceso de lectura pública.
La autenticación de origen privado está orientada al origen, mientras que URL firmadas y las cookies firmadas son para el cliente. Tú puede habilitar ambos para el mismo contenido. Límites de autenticación de origen privado sin CDN a tus orígenes y contenido. Control de URLs firmadas y cookies qué usuarios pueden acceder a Cloud CDN.
La autenticación de origen privado es compatible con Cloud CDN con un balanceador de cargas de aplicaciones externo global o un balanceador de cargas de aplicaciones clásico.
Si quieres 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 URL y cookies firmadas a fin de controlar el acceso a los mismos archivos, y un usuario usa una URL firmada para solicitar un archivo, Cloud CDN determina si debe mostrar el archivo al usuario 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 tu URL incluye
Signature
como parámetro de consulta, Cloud CDN intenta interpretar tu URL como una URL firmada. Si Cloud CDN intenta tratar la URL como una URL 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 más información sobre otras prácticas recomendadas, consulta Prácticas recomendadas de seguridad web.