Cloud CDN ofrece tres formas de ayudarte a controlar el acceso a tu contenido almacenado en caché:
- Las URLs 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 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 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 a una descarga de instalación.
Para entregarles 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 mediante proxy al backend directamente 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 URLs firmadas válidas. Cloud CDN trata el contenido como almacenable en caché y usa el parámetro max-age
establecido en la 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 el código personalizado puede distribuirse 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 cómo usar las 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 proporcionar acceso a varios archivos restringidos.
Para evitar cambiar las URLs actuales.
Para evitar actualizar 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 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 la 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 deseas 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 brinda a Cloud CDN acceso a largo plazo a buckets privados de Amazon S3 o almacenes de objetos compatibles. Luego, Cloud CDN puede entregar contenido de 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 para el mismo contenido. La autenticación de origen privado limita el acceso no 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 con 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 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 la URL incluye
Signature
como parámetro de búsqueda, Cloud CDN intenta 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, 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 seguridad web.