Autentica contenuti

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

  • Gli URL firmati ti consentono di fornire risposte dalle cache distribuite a livello globale di Google Cloud quando hai bisogno di 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 ciascun utente.
  • L'autenticazione dell'origine privata consente di limitare le connessioni ai bucket Amazon S3 o ad altri archivi di oggetti compatibili e impedire agli utenti di accedervi direttamente.

URL firmati

Un URL firmato è un URL che concede autorizzazione limitata e tempo per inviare una richiesta.

Casi d'uso

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

Il modo tipico per risolvere questo caso d'uso è fornire un URL firmato a un utente, che gli concede l'accesso in lettura alla risorsa per un periodo di tempo limitato. Puoi specificare una scadenza al momento della creazione dell'URL firmato. Chiunque conosca l'URL può accedere alla risorsa fino al raggiungimento dell'ora di scadenza dell'URL o finché la chiave utilizzata per firmare l'URL viene ruotata.

Utilizza gli URL firmati nei seguenti casi:

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

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

Come funzionano gli URL firmati

Gli URL firmati offrono a un client l'accesso temporaneo a una risorsa privata senza richiedere ulteriori autorizzazioni. Per raggiungere questo obiettivo, gli elementi selezionati di una richiesta vengono sottoposti ad hashing e firmati crittograficamente mediante una chiave altamente casuale generata da te.

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

In genere, un URL firmato può essere utilizzato da chiunque lo abbia. Tuttavia, un URL firmato è in genere utilizzato solo dal client a cui l'URL è stato assegnato. Per ridurre il rischio di utilizzo dell'URL da parte di un altro client, gli URL firmati scadono nel momento da te scelto. Per ridurre al minimo il rischio di condivisione di un URL firmato, imposta la scadenza il prima possibile.

Modalità di firma degli URL

Prima di poter firmare gli URL, devi creare una o più chiavi di crittografia in un servizio di backend, un bucket di backend o entrambi. Quindi firmi e cripti un URL utilizzando Google Cloud CLI o il tuo codice.

Gestione degli URL firmati

Quando la gestione degli URL firmati è abilitata su un backend, Cloud CDN fornisce una gestione speciale delle richieste con URL firmati. Nello specifico, le richieste con un parametro di ricerca 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 va a buon fine, viene pubblicata una risposta 403 Forbidden. In caso contrario, la richiesta viene inviata al proxy nel backend o viene fornita dalla cache. Le richieste OPTIONS e TRACE vengono sempre inviate in proxy direttamente al backend e non vengono pubblicate 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 alle richieste firmate e non firmate non condividono le voci della cache. Le risposte vengono memorizzate nella cache e pubblicate fino alla data di scadenza impostata.

I contenuti che richiedono richieste firmate sono spesso contrassegnati come non memorizzabili nella cache utilizzando l'intestazione Cache-Control. Per rendere tali oggetti compatibili con Cloud CDN senza richiedere modifiche di backend, Cloud CDN esegue l'override dell'intestazione Cache-Control quando si risponde alle richieste che hanno URL firmati validi. Cloud CDN tratta 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 dall'interfaccia a riga di comando gcloud o prodotto dal tuo codice personalizzato può essere distribuito in base alle tue esigenze. Ti consigliamo di firmare solo gli URL HTTPS perché HTTPS fornisce un trasporto sicuro che impedisce l'intercettazione del componente della firma dell'URL firmato. Analogamente, dovresti distribuire gli URL firmati su protocolli di trasporto sicuri come TLS/HTTPS.

Per istruzioni sull'utilizzo degli URL firmati con Cloud CDN, consulta l'articolo Utilizzare gli URL firmati.

Cookie firmati

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

Casi d'uso

Utilizza i cookie firmati nei seguenti casi:

  • Per consentire l'accesso a più file con restrizioni.

  • Per evitare di modificare i tuoi URL correnti.

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

Streaming di contenuti multimediali tramite HLS e DASH

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

Anche se puoi utilizzare gli URL firmati di Cloud CDN per firmare e autorizzare l'accesso a ognuno di questi URL, generare dinamicamente tutte le possibili combinazioni per un singolo utente è complicato e aumenta il carico di 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 ai contenuti che corrispondono a una norma (prefisso dell'URL e data di scadenza) senza dover generare o firmare singolarmente i file multimediali. Puoi aggiornare periodicamente l'accesso degli utenti tramite l'API JavaScript fetch() nella navigazione nelle pagine o altri meccanismi di background nelle applicazioni native. La possibilità di aggiornare l'accesso degli utenti consente inoltre di utilizzare tempi di scadenza brevi, rendendo più difficile la condivisione di contenuti protetti.

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

Download binari (giochi)

Analogamente allo streaming multimediale, se fornisci i download dei client di gioco, potresti suddividere grandi patch multi-gigabyte o dati di giochi in blocchi più piccoli per supportare la memorizzazione nella cache granulare, l'annullamento della convalida e la contemporaneità.

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

Come funzionano i cookie firmati

Per configurare e inviare i cookie firmati sono necessari tre passaggi:

  1. Creare una chiave di firma per il servizio di backend specificato.
  2. Crea un valore di 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 per i cookie firmati quando utilizzano un bucket Cloud Storage. Per farlo, limita 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 devono essere pubblicate.

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

Autenticazione origine privata

L'autenticazione dell'origine privata offre a Cloud CDN l'accesso a lungo termine ai bucket Amazon S3 privati o agli archivi di oggetti compatibili. Puoi configurare l'autenticazione dell'origine privata utilizzando le intestazioni v4 della firma Amazon S3. Cloud CDN può quindi pubblicare contenuti da queste origini senza utilizzare l'accesso in lettura pubblico.

L'autenticazione dell'origine privata è supportata per Cloud CDN con un bilanciatore del carico HTTP(S) esterno globale o un bilanciatore del carico HTTP(S) esterno globale (classico).

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

Avvertenze e limitazioni

  • L'utente è l'unico responsabile di qualsiasi consenso e conformità alla privacy necessari per i cookie firmati. I cookie firmati vengono emessi e gestiti da te, non da Google.

  • Se utilizzi sia URL firmati che 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 tuo servizio per le richieste firmate e il tuo URL include Signature come parametro di ricerca, Cloud CDN tenta di interpretare il tuo URL come URL firmato. Se Cloud CDN tenta di trattare il tuo URL come un URL firmato come non previsto, è probabile che questo non sia un URL firmato valido, pertanto Cloud CDN lo rifiuta.

  • Generalmente, i browser e gli altri client applicano limiti relativi alle dimensioni dei cookie (4 kB per cookie) e a un conteggio totale di 50 per dominio, in base al documento RFC 6265. Considera il payload totale dei cookie inviato dal suo dominio.

  • Si applicano i limiti e le limitazioni di Cloud CDN, incluso 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), come quelle con firme scadute o comunque non valide, comportano ancora degli addebiti di ricerca cache.

Passaggi successivi