Autenticar contenido

Cloud CDN ofrece tres formas de controlar el acceso al contenido almacenado en caché:

  • Las URLs firmadas te permiten servir respuestas desde las cachés distribuidas por todo el mundo de Google Cloudcuando necesitas que las solicitudes se autoricen. Cualquier persona que tenga la URL firmada puede acceder al recurso durante un tiempo limitado.
  • Las cookies firmadas también te permiten acceder a un recurso durante 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 segmentos de Amazon Simple Storage Service (Amazon S3) u otros almacenes de objetos compatibles, así como evitar que los usuarios accedan a ellos directamente.

URL firmadas

Una URL firmada es una URL que proporciona permiso y tiempo limitados para hacer una solicitud.

Casos prácticos

En algunos casos, es posible que no quieras que tus usuarios tengan una cuenta de Google para acceder al contenido de Cloud CDN, pero sí quieras controlar el acceso mediante la lógica específica de tu aplicación.

La forma habitual de abordar este caso práctico es proporcionar una URL firmada a un usuario, lo que le da acceso de lectura a ese recurso durante un tiempo limitado. Cuando creas la URL firmada, especificas un tiempo de vencimiento. Cualquier persona que conozca la URL puede acceder al recurso hasta que se alcance la hora de vencimiento de la URL o se rote la clave utilizada para firmar la URL.

Usa URLs firmadas en los siguientes casos:

  • Para restringir el acceso a archivos concretos, como una descarga de instalación.

  • Para ofrecer servicios a los usuarios con aplicaciones cliente que no admiten cookies.

Cómo funcionan las URLs firmadas

Las URLs firmadas proporcionan a un cliente acceso temporal a un recurso privado sin necesidad de autorización adicional. Para ello, se cifran con hash y se firman criptográficamente los elementos seleccionados de una solicitud mediante una clave aleatoria segura que generas.

Cuando una solicitud usa la URL firmada que has proporcionado, se considera que tiene autorización 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 se envía a tu backend para que la gestione.

Por lo general, cualquier persona que tenga una URL firmada puede usarla. Sin embargo, las URLs firmadas suelen estar pensadas para que las use únicamente el cliente al que se le ha proporcionado la URL. Para reducir el riesgo de que otro cliente use la URL, las URLs firmadas caducan en el momento que elijas. Para minimizar el riesgo de que se comparta una URL firmada, configúrala para que caduque lo antes posible.

Cómo se firman las URLs

Antes de firmar URLs, debe crear una o varias claves criptográficas en un servicio de backend, un segmento de backend o ambos. A continuación, firmas y cifras con hash una URL mediante la CLI de Google Cloud o tu propio código.

Gestión de URLs firmadas

Cuando la gestión de URLs firmadas está habilitada en un backend, Cloud CDN da un tratamiento especial a las solicitudes con URLs firmadas. En concreto, las solicitudes con un parámetro de consulta Signature se consideran firmadas. Cuando se recibe una solicitud de este tipo, Cloud CDN verifica lo siguiente:

  • El método HTTP es GET, HEAD, OPTIONS o TRACE.
  • El parámetro Expires se ha definido con una hora futura.
  • La firma de la solicitud coincide con la firma calculada mediante la clave con nombre.

Si alguna de estas comprobaciones falla, se devuelve una respuesta 403 Forbidden. De lo contrario, la solicitud se envía al backend a través de un proxy o se sirve desde la caché. Las solicitudes OPTIONS y TRACE siempre se envían directamente al backend a través de un proxy y no se sirven desde la caché. Todas las solicitudes firmadas válidas de una URL base concreta (la parte anterior al parámetro Expires ) comparten la misma entrada de caché. Las respuestas a solicitudes firmadas y sin firmar no comparten entradas de caché. Las respuestas se almacenan en caché y se sirven hasta la hora de vencimiento que hayas definido.

El contenido que requiere solicitudes firmadas suele marcarse como no almacenable en caché mediante el encabezado Cache-Control. Para que estos objetos sean compatibles con Cloud CDN sin necesidad de hacer cambios en el backend, Cloud CDN anula el encabezado Cache-Control al responder a las solicitudes que tienen URLs firmadas válidas. Cloud CDN trata el contenido como almacenado en caché y usa el parámetro max-age definido en tu configuración de Cloud CDN. La respuesta servida sigue teniendo los encabezados Cache-Control que ha generado el backend.

La URL devuelta por la CLI de gcloud o generada por tu código personalizado se puede distribuir según tus necesidades. Te recomendamos que solo firmes 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 o HTTPS.

Para obtener instrucciones sobre cómo usar URLs firmadas con Cloud CDN, consulta Usar URLs firmadas.

Cookies firmadas

Una cookie firmada es una cookie que proporciona un permiso y un tiempo limitados para hacer solicitudes de un conjunto de archivos.

Casos prácticos

Usa cookies firmadas en los siguientes casos:

  • Para proporcionar acceso a varios archivos restringidos.

  • Para no cambiar las URLs actuales.

  • Para no tener que actualizar las URLs cada vez que renueves la autorización para acceder al contenido.

Streaming de contenido multimedia mediante HLS y DASH

Si sirve contenido de vídeo y audio mediante los protocolos HTTP Live Streaming (HLS) o Dynamic Adaptive Streaming over HTTP (DASH), normalmente genera un manifiesto que contiene una lista de URLs a segmentos de vídeo y audio. Puede que tengas varias instancias de cada segmento para proporcionar diferentes codificaciones (códec, tasa de bits y resolución) a un cliente.

Aunque puede usar las URLs firmadas de Cloud CDN para firmar y autorizar el acceso a cada una de estas URLs, generar dinámicamente todas las combinaciones posibles por usuario es una tarea pesada que aumenta la carga del origen y la complejidad de la aplicación.

Las cookies firmadas se han diseñado para solucionar este problema. Puede proporcionar al usuario una cookie firmada que le autorice a acceder a cualquier contenido que coincida con una política (prefijo de URL y fecha de vencimiento) sin tener que generar ni firmar individualmente sus manifiestos multimedia. Puedes actualizar el acceso de los usuarios periódicamente mediante la API fetch() de JavaScript en la navegación de la página u otros mecanismos en segundo plano en aplicaciones integradas. La posibilidad de actualizar el acceso de los usuarios también te permite usar tiempos de vencimiento cortos, lo que dificulta que los usuarios compartan contenido protegido.

Puedes emitir estas cookies a usuarios con varios clientes de navegador y otros clientes que usen HTTP, como ExoPlayer de Google y AVPlayer de iOS.

Descargas de archivos binarios (juegos)

Al igual que con la transmisión de contenido multimedia, si ofreces descargas de clientes de juegos, puedes dividir parches o datos de juegos de varios gigabytes en fragmentos más pequeños para admitir un almacenamiento en caché, una invalidación y una simultaneidad más precisos.

Estos fragmentos suelen aparecer en un manifiesto. Las cookies firmadas te permiten autorizar el acceso a esas descargas solo a los usuarios autenticados sin tener que modificar el archivo de manifiesto y (al igual que con las URLs firmadas) sin renunciar a las ventajas del almacenamiento en caché de Cloud CDN.

Cómo funcionan las cookies firmadas

Para configurar y emitir cookies firmadas, debes seguir tres pasos:

  1. Crea una clave de firma para el servicio de backend proporcionado.
  2. Crea un valor de cookie con el prefijo de URL, la fecha de vencimiento, el nombre de clave y la firma criptográfica permitidos.
  3. Emite la cookie en el código de tu aplicación.

Cloud CDN valida estas cookies firmadas cuando se incluyen en las solicitudes.

Puedes impedir que los usuarios eludan tus controles de cookies firmadas cuando usen un segmento de Cloud Storage. Para ello, restringe el acceso al segmento subyacente quitando el rol allUsers y concediendo a la cuenta de servicio de Cloud CDN acceso de lectura al segmento.

Del mismo modo, tus instancias de máquina virtual (VM) deben validar las firmas de cada solicitud firmada que atiendan.

Para obtener instrucciones sobre cómo usar cookies firmadas con Cloud CDN, consulta Usar cookies firmadas.

Autenticación de origen privado

La autenticación de origen privado proporciona a Cloud CDN acceso a largo plazo a segmentos de Amazon S3 privados o a almacenes de objetos compatibles. Cloud CDN puede servir 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 a tus orígenes y contenido que no se realiza a través de una CDN. Las URLs y las cookies firmadas controlan qué usuarios pueden acceder a Cloud CDN.

La autenticación de origen privado se admite en Cloud CDN con un balanceador de carga de aplicación externo global o un balanceador de carga de aplicación clásico.

Para obtener instrucciones sobre cómo usar la autenticación de origen privado con Cloud CDN, consulta Configurar la autenticación de origen privado.

Advertencias y limitaciones

  • Usted es el único responsable de obtener el consentimiento y de cumplir las normas de privacidad necesarios para sus cookies firmadas. Las cookies firmadas las emites y gestionas tú, no Google.

  • Si usas tanto URLs firmadas como cookies firmadas para controlar el acceso a los mismos archivos y un visor usa una URL firmada para solicitar un archivo, Cloud CDN determina si debe devolver el archivo al visor basándose únicamente en la URL firmada. Cloud CDN solo tiene en cuenta las cookies firmadas si la URL no está firmada.

  • Si ha configurado su servicio para que acepte solicitudes firmadas y su URL incluye Signature como parámetro de consulta, Cloud CDN intentará interpretar su URL como una URL firmada. Si Cloud CDN intenta tratar tu URL como una URL firmada cuando no era tu intención, es probable que tu URL no sea una URL firmada válida, por lo que Cloud CDN la rechaza.

  • Los navegadores y otros clientes suelen aplicar límites al tamaño de las cookies (4 KB por cookie) y un recuento total de 50 por dominio, tal como se indica en el RFC 6265. Ten en cuenta la carga útil total de las cookies enviadas desde su dominio.

  • Se aplican los límites y las restricciones de Cloud CDN, incluido un máximo de tres claves de solicitud firmada por backend.

  • Las solicitudes firmadas no se cobran de forma diferente a las solicitudes de Cloud CDN. Sin embargo, las solicitudes fallidas (rechazadas), como las que tienen firmas caducadas o no válidas, siguen generando cargos por búsqueda en caché.

Siguientes pasos