Autentica i contenuti

Cloud CDN offre tre modi per aiutarti a controllare l'accesso ai tuoi contenuti memorizzati nella cache:

  • Gli URL firmati ti consentono di fornire risposte dalle cache distribuite a livello globale di Google Cloud quando devi autorizzare le richieste. Chiunque abbia l'URL firmato può accedere alla risorsa per un periodo di tempo limitato.
  • I cookie firmati ti consentono anche di accedere a una risorsa per un periodo di tempo limitato. Sono utili quando devi firmare decine o centinaia di URL per ogni utente.
  • L'autenticazione dell'origine privata ti consente di limitare le connessioni ai tuoi bucket Amazon Simple Storage Service (Amazon S3) o ad altri archivi di oggetti compatibili e di impedire agli utenti di accedervi direttamente.

URL firmati

Un URL firmato è un URL che fornisce un'autorizzazione limitata e tempo per effettuare una richiesta.

Casi d'uso

In alcuni scenari, potresti non voler richiedere agli utenti di avere un Account Google per accedere ai contenuti di Cloud CDN, ma vuoi comunque controllare l'accesso utilizzando la logica specifica dell'applicazione.

Il modo tipico per affrontare questo caso d'uso è fornire un URL firmato a un utente, che concede all'utente l'accesso in lettura alla risorsa per un periodo di tempo limitato. Puoi specificare una data di scadenza quando crei l'URL firmato. Chiunque conosca l'URL può accedere alla risorsa fino al raggiungimento della data di scadenza dell'URL o fino alla rotazione della chiave utilizzata per firmare l'URL.

Utilizza gli URL firmati nei seguenti casi:

  • Per limitare l'accesso a singoli file, ad esempio il download di un'installazione.

  • Per offrire agli utenti applicazioni client che non supportano i cookie.

Come funzionano gli URL firmati

Gli URL firmati concedono a un client l'accesso temporaneo a una risorsa privata senza richiedere un'autorizzazione aggiuntiva. A questo scopo, gli elementi selezionati di una richiesta vengono sottoposti ad hashing e firmati crittograficamente utilizzando una chiave fortemente casuale generata da te.

Quando una richiesta utilizza l'URL firmato che hai fornito, si considera autorizzata a ricevere i contenuti richiesti. Quando Cloud CDN riceve una richiesta con una firma errata per un servizio abilitato, la richiesta viene rifiutata e non viene mai inviata al backend per la gestione.

In genere, un URL firmato può essere utilizzato da chiunque lo disponga. Tuttavia, di solito un URL firmato deve essere utilizzato solo dal client a cui è stato fornito l'URL. Per ridurre il rischio che l'URL venga utilizzato da un client diverso, gli URL firmati scadono in un orario scelto da te. Per ridurre al minimo il rischio di condivisione di un URL firmato, impostalo in modo che scada il prima possibile.

Come vengono firmati gli URL

Prima di poter firmare gli URL, devi creare una o più chiavi di crittografia su un servizio di backend, un bucket di backend o entrambi. Puoi quindi firmare un URL ed eseguirne l'hashing crittografico utilizzando Google Cloud CLI o il tuo codice.

Gestione degli URL firmati

Quando la gestione degli URL firmati è abilitata su un backend, Cloud CDN assegna una gestione speciale alle richieste con URL firmati. In particolare, le richieste con un parametro di query Signature sono considerate firmate. Quando una richiesta di questo tipo viene ricevuta, Cloud CDN verifica quanto segue:

  • Il metodo HTTP è GET, HEAD, OPTIONS o TRACE.
  • Il parametro Expires è impostato su un orario futuro.
  • La firma della richiesta corrisponde alla firma calcolata utilizzando la chiave denominata.

Se uno di questi controlli non ha esito positivo, viene pubblicata una risposta 403 Forbidden. In caso contrario, la richiesta viene inviata tramite proxy al backend o fornita dalla cache. Le richieste OPTIONS e TRACE vengono sempre trasferite direttamente al backend tramite proxy e non dalla cache. Tutte le richieste firmate valide per un determinato URL di base (la parte che precede il parametro Expires) condividono la stessa voce della cache. Le risposte a richieste firmate e non firmate non condividono le voci della cache. Le risposte vengono memorizzate nella cache e pubblicate fino alla scadenza impostata.

I contenuti che richiedono richieste firmate vengono spesso contrassegnati come non memorizzabili nella cache tramite l'intestazione Cache-Control. Per rendere questi oggetti compatibili con Cloud CDN senza richiedere modifiche al backend, Cloud CDN sostituisce l'intestazione Cache-Control quando risponde alle richieste che hanno URL firmati validi. Cloud CDN considera i contenuti come memorizzabili nella cache e utilizza il parametro max-age impostato nella configurazione di Cloud CDN. La risposta pubblicata ha ancora le intestazioni Cache-Control generate dal backend.

L'URL restituito da gcloud CLI o prodotto dal tuo codice personalizzato può essere distribuito in base alle tue esigenze. Consigliamo di firmare solo gli URL HTTPS perché HTTPS fornisce un trasporto sicuro che impedisce l'intercettazione del componente della firma dell'URL firmato. Allo stesso modo, devi distribuire gli URL firmati su protocolli di trasporto sicuri come TLS/HTTPS.

Per istruzioni sull'utilizzo di URL firmati con Cloud CDN, consulta Utilizzare gli URL firmati.

Cookie firmati

Un cookie firmato è un cookie che fornisce autorizzazioni limitate e tempo per effettuare richieste per un insieme di file.

Casi d'uso

Utilizza i cookie firmati nei seguenti casi:

  • Per fornire l'accesso a più file con limitazioni.

  • Per evitare di modificare gli URL correnti.

  • Per evitare di aggiornare gli URL ogni volta che aggiorni l'autorizzazione ad accedere ai contenuti.

Streaming di contenuti multimediali utilizzando HLS e DASH

Se pubblichi contenuti video e audio utilizzando i protocolli HTTP Live Streaming (HLS) o Dynamic Adaptive Streaming over HTTP (DASH), in genere viene generato un manifest che contiene un elenco di URL per segmenti video e audio. Potresti avere più istanze di ogni segmento per fornire codifiche diverse (codec, velocità in bit, risoluzione) a un client.

Sebbene sia possibile utilizzare gli URL firmati di Cloud CDN per firmare e autorizzare l'accesso a ciascuno di questi URL, generare dinamicamente tutte le possibili combinazioni per singolo utente è oneroso e aumenta il carico dell'origine e la complessità dell'applicazione.

I cookie firmati sono progettati per risolvere questo problema. Puoi fornire all'utente un cookie firmato che lo autorizza ad accedere a qualsiasi contenuto corrispondente a un criterio (prefisso URL e data di scadenza) senza dover generare o firmare singolarmente i manifest multimediali. Puoi aggiornare periodicamente l'accesso degli utenti tramite l'API JavaScript fetch() nella navigazione delle pagine o altri meccanismi in background nelle applicazioni native. La possibilità di aggiornare l'accesso utente consente inoltre di utilizzare brevi tempi di scadenza, rendendo più difficile per gli utenti condividere contenuti protetti.

Puoi fornire questi cookie agli utenti con più client browser e altri client di lingua HTTP, come ExoPlayer di Google e AVPlayer di iOS.

Download binari (giochi)

Come per lo streaming multimediale, se fornisci i download dei client di gioco, potresti suddividere i dati di gioco o le patch multi-gigabyte di grandi dimensioni in blocchi più piccoli per supportare memorizzazione in una cache, invalidazione e contemporaneità più granulari.

Questi blocchi vengono generalmente elencati in un file manifest. I cookie firmati ti consentono di autorizzare l'accesso a questi download solo agli utenti autenticati senza richiedere modifiche del manifest e (come per gli URL firmati), senza rinunciare ai vantaggi della memorizzazione nella cache di Cloud CDN.

Come funzionano i cookie firmati

La configurazione e l'emissione di cookie firmati richiedono tre passaggi:

  1. Crea una chiave di firma per il servizio di backend specificato.
  2. Crea un valore cookie con il prefisso URL, la scadenza, il nome della chiave e la firma crittografica consentiti.
  3. Inserisci il cookie nel codice dell'applicazione.

Cloud CDN convalida questi cookie firmati quando sono inclusi nelle richieste.

Puoi impedire agli utenti di eludere i controlli dei cookie firmati quando utilizzano un bucket Cloud Storage. Per farlo, vincola l'accesso al bucket sottostante rimuovendo il ruolo allUsers e concedendo all'account di servizio Cloud CDN l'accesso in lettura al bucket.

Analogamente, le istanze di macchine virtuali (VM) devono convalidare le firme su ogni richiesta firmata che gestiscono.

Per istruzioni sull'utilizzo dei cookie firmati con Cloud CDN, consulta Utilizzare i cookie firmati.

Autenticazione dell'origine privata

L'autenticazione dell'origine privata consente a Cloud CDN di accedere a lungo termine ai bucket Amazon S3 privati o agli archivi di oggetti compatibili. Cloud CDN può quindi gestire i contenuti da queste origini senza utilizzare l'accesso in lettura pubblico.

L'autenticazione dell'origine privata è rivolta alle origini, mentre gli URL firmati e i cookie firmati sono rivolti ai client. Puoi abilitarli entrambi per gli stessi contenuti. L'autenticazione dell'origine privata limita l'accesso non CDN alle tue origini e ai tuoi contenuti. Gli URL firmati e i cookie controllano quali utenti possono accedere a Cloud CDN.

L'autenticazione dell'origine privata è supportata per Cloud CDN con un Application Load Balancer esterno globale o un bilanciatore del carico delle applicazioni classico.

Per istruzioni sull'utilizzo dell'autenticazione dell'origine privata con Cloud CDN, consulta Configurare l'autenticazione dell'origine privata.

Avvertenze e limitazioni

  • Sei l'unico responsabile del consenso e della conformità della privacy necessari per i cookie firmati. I cookie firmati vengono emessi e gestiti da te, non da Google.

  • Se utilizzi sia URL firmati sia cookie firmati per controllare l'accesso agli stessi file e un visualizzatore utilizza un URL firmato per richiedere un file, Cloud CDN determina se restituire il file al visualizzatore solo in base all'URL firmato. Cloud CDN considera i cookie firmati solo se l'URL non è firmato.

  • Se hai configurato il servizio per le richieste firmate e il tuo URL include Signature come parametro di ricerca, Cloud CDN tenta di interpretare il tuo URL come un URL firmato. Se Cloud CDN tenta di trattare il tuo URL come un URL firmato involontariamente, probabilmente non è un URL firmato valido, pertanto Cloud CDN lo rifiuta.

  • In genere i browser e altri client applicano limiti alle dimensioni dei cookie (4 kB per cookie) e un conteggio totale di 50 per dominio, in base a RFC 6265. Considera il payload totale dei cookie inviato dal loro dominio.

  • Si applicano limiti e restrizioni di Cloud CDN, compreso un massimo di tre chiavi di richiesta firmate per backend.

  • Le richieste firmate non vengono addebitate in modo diverso rispetto alle richieste Cloud CDN esistenti. Tuttavia, le richieste non riuscite (rifiutate), ad esempio quelle con firme scadute o comunque non valide, sono comunque soggette ai costi di ricerca nella cache.

Passaggi successivi