Autentica contenido

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

  • Las URL firmadas te permiten entregar respuestas de las cachés de Google Cloud distribuidas en todo el mundo cuando necesitas que las solicitudes estén autorizadas. Cualquier persona con 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 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 descarga de instalación.

  • Para entregar 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 o TRACE.
  • 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é. 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é mediante 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 URL firmadas válidas. Cloud CDN trata el contenido como que se puede almacenar 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 en gcloud CLI o que genera el código personalizado se puede distribuir 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 de uso de las 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 de uso

Usa cookies firmadas en los siguientes casos:

  • Proporcionar acceso a varios archivos restringidos

  • Para evitar cambiar las URL actuales.

  • Para evitar la actualización de las URLs cada vez que actualizas 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 de forma periódica a través de la API de fetch() de JavaScript en la navegación de páginas o en otros mecanismos en segundo plano en aplicaciones nativas. 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:

  1. Crea una clave de firma para el servicio de backend determinado.
  2. Crea un valor de cookie con el prefijo de URL permitido, el vencimiento, el nombre de la clave y la firma criptográfica.
  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 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 le da a Cloud CDN acceso a largo plazo a buckets privados de Amazon S3 o almacenes de objetos compatibles. Luego, Cloud CDN puede entregar contenido desde estos orígenes sin usar el acceso de lectura público.

La autenticación privada de origen se orienta al origen, mientras que las URL firmadas y las cookies firmadas, para los clientes. Puedes habilitar ambos para el mismo contenido. La autenticación de origen privado limita el acceso que no pertenece a una CDN a tus orígenes y contenido. Las URL firmadas y las cookies controlan 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 uno 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 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 el servicio para solicitudes firmadas y la URL incluye Signature como parámetro de consulta, Cloud CDN intentará interpretar la 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. Sin embargo, las solicitudes con errores (rechazadas), como las que tienen firmas vencidas o no válidas, siguen generando cargos de búsqueda en caché.

¿Qué sigue?