Cloud CDN offre tre modi per aiutarti a controllare l'accesso ai contenuti memorizzati nella cache:
- Gli URL firmati consentono di fornire risposte dalle cache distribuite a livello globale di Google Cloudquando le richieste devono essere autorizzate. Chiunque disponga dell'URL firmato può accedere alla risorsa per un periodo di tempo limitato.
- Anche i cookie firmati consentono di accedere a una risorsa per un periodo di tempo limitato. Sono utili quando occorre 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 autorizzazioni e tempo limitati per effettuare una richiesta.
Casi d'uso
In alcuni scenari, potresti non voler richiedere agli utenti di disporre di un Account Google per accedere ai contenuti di Cloud CDN, ma voler comunque controllare l'accesso utilizzando la logica specifica dell'applicazione.
Il modo tipico per risolvere questo caso d'uso è fornire a un utente un URL firmato, che concede l'accesso in lettura alla risorsa per un periodo di tempo limitato. La scadenza si specifica al momento di creare l'URL firmato. Chiunque conosca l'URL può accedere alla risorsa fino al raggiungimento della scadenza specificata 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 un download per l'installazione.
Per fornire agli utenti applicazioni client che non supportano i cookie.
Come funzionano gli URL firmati
Gli URL firmati forniscono a un client l'accesso temporaneo a una risorsa privata senza bisogno di autorizzazioni aggiuntive. A questo scopo, specifici elementi di una richiesta vengono sottoposti ad hashing e firmati crittograficamente utilizzando una chiave fortemente casuale da te generata.
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 non valida 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 possieda. Tuttavia, un URL firmato è in genere destinato a essere utilizzato solo dal client a cui è stato fornito. Per ridurre il rischio che l'URL venga utilizzato da un altro client, gli URL firmati scadono in un momento specificato da te. Per ridurre al minimo il rischio che un URL firmato venga condiviso, impostalo in modo che scada il prima possibile.
Come firmare gli 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. Fatto questo, devi firmare e creare l'hash di crittografia di un URL utilizzando Google Cloud CLI o il tuo codice.
Gestione degli URL firmati
Quando su un backend è abilitata la gestione degli URL firmati, Cloud CDN gestisce in modo speciale le richieste con URL firmati. In particolare, le richieste con un parametro di query Signature sono considerate firmate. Quando viene ricevuta una richiesta di questo tipo, Cloud CDN verifica quanto segue:
- Che il metodo HTTP sia
GET,HEAD,OPTIONSoTRACE. - Che il parametro
Expiressia impostato su una data futura. - Che la firma della richiesta corrisponda a quella calcolata utilizzando la chiave denominata.
Se uno di questi controlli non va a buon fine, viene restituita 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 inviate tramite proxy direttamente al backend e non vengono fornite dalla cache. Tutte le richieste firmate valide per un determinato URL di base (la parte che precede il parametro Expires) condividono la stessa voce di cache. Le risposte alle richieste firmate e non firmate non condividono le voci di cache. Le risposte vengono memorizzate nella cache e fornite fino all'ora di scadenza che hai impostato.
I contenuti che richiedono richieste firmate vengono spesso contrassegnati come non memorizzabili nella cache utilizzando l'intestazione Cache-Control. Per rendere questi oggetti compatibili con Cloud CDN senza bisogno di modifiche al backend, Cloud CDN esegue l'override dell'intestazione Cache-Control quando risponde alle richieste che hanno URL firmati validi. Cloud CDN considera i contenuti memorizzabili nella cache e utilizza il parametro max-age impostato nella configurazione di Cloud CDN. La risposta fornita contiene 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. Ti consigliamo di firmare solo gli URL HTTPS, perché HTTPS fornisce un trasporto sicuro che impedisce l'intercettazione del componente di firma dell'URL firmato. Analogamente, dovresti distribuire gli URL firmati tramite protocolli di trasporto sicuri come TLS/HTTPS.
Per istruzioni sull'utilizzo degli URL firmati con Cloud CDN, consulta Utilizza gli URL firmati.
Cookie firmati
Un cookie firmato è un cookie che fornisce autorizzazioni e tempo limitati 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 accesso limitato.
Per evitare di modificare gli URL attuali.
Per evitare di aggiornare gli URL ogni volta che aggiorni l'autorizzazione per accedere ai contenuti.
Streaming di contenuti multimediali utilizzando HLS e DASH
Se fornisci contenuti video e audio utilizzando i protocolli HTTP Live Streaming (HLS) o Dynamic Adaptive Streaming over HTTP (DASH), in genere generi un manifest che contiene un elenco di URL di segmenti video e audio. Potresti avere più istanze di ogni segmento per fornire a un client codifiche diverse, come codec, velocità in bit e risoluzione.
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 combinazioni possibili per ogni singolo utente è una procedura complessa e aumenta il carico sull'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 che corrisponda a una policy (prefisso URL e data di scadenza) senza dover generare o firmare singolarmente i manifest dei file multimediali. Puoi aggiornare periodicamente l'accesso degli utenti tramite l'API JavaScript fetch() nella navigazione nelle pagine o tramite altri meccanismi in background nelle applicazioni integrate. La possibilità di aggiornare l'accesso degli utenti ti consente anche di utilizzare date di scadenza più brevi e rende più difficile per gli utenti condividere contenuti protetti.
Puoi rilasciare questi cookie agli utenti con più client browser e altri client che comunicano tramite HTTP, come ExoPlayer di Google e AVPlayer di iOS.
Download di file binari (giochi)
Come per lo streaming di contenuti multimediali, se fornisci download di client di gioco, potresti dividere patch o dati di gioco di molti gigabyte in blocchi più piccoli per supportare la memorizzazione nella cache, l'annullamento della convalida e la concorrenza a livello più granulare.
Questi blocchi sono in genere elencati in un manifest. I cookie firmati consentono di autorizzare l'accesso a questi download solo agli utenti autenticati senza bisogno di apportare 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 rilasciare cookie firmati occorrono tre passaggi:
- Crea una chiave di firma per il servizio di backend specificato.
- Crea un valore del cookie con il prefisso URL consentito, la scadenza, il nome della chiave e la firma crittografica.
- Rilascia il cookie nel codice dell'applicazione.
Cloud CDN convalida questi cookie firmati quando vengono inclusi nelle richieste.
Puoi impedire agli utenti di aggirare i controlli dei cookie firmati quando utilizzano un bucket Cloud Storage. A questo scopo, limita l'accesso al bucket sottostante rimuovendo il ruolo allUsers e concedendo al service account Cloud CDN l'accesso in lettura al bucket.
Analogamente, le istanze di macchine virtuali (VM) devono convalidare le firme per ogni richiesta firmata che gestiscono.
Per istruzioni sull'utilizzo dei cookie firmati con Cloud CDN, consulta Utilizza i cookie firmati.
Autenticazione dell'origine privata
L'autenticazione dell'origine privata offre a Cloud CDN l'accesso a lungo termine a bucket Amazon S3 privati o archivi di oggetti compatibili. Cloud CDN può quindi fornire contenuti da queste origini senza utilizzare l'accesso in lettura pubblico.
L'autenticazione dell'origine privata è rivolta all'origine, mentre gli URL firmati e i cookie firmati sono rivolti al client. Puoi attivarli entrambi per gli stessi contenuti. L'autenticazione dell'origine privata limita l'accesso non CDN alle tue origini e ai tuoi contenuti. URL e cookie firmati controllano quali utenti possono accedere a Cloud CDN.
L'autenticazione dell'origine privata è supportata per Cloud CDN con un bilanciatore del carico delle applicazioni esterno globale o un bilanciatore del carico delle applicazioni classico.
Per istruzioni sull'utilizzo dell'autenticazione dell'origine privata con Cloud CDN, consulta Configura l'autenticazione dell'origine privata.
Avvertenze e limitazioni
La responsabilità della conformità in materia di consensi e privacy necessaria per i tuoi cookie firmati ricade esclusivamente su di te. I cookie firmati vengono rilasciati 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 in base solo all'URL firmato. Cloud CDN prende in considerazione i cookie firmati solo se l'URL non è firmato.
Se hai configurato il servizio per le richieste firmate e il tuo URL include
Signaturecome parametro di query, Cloud CDN tenta di interpretare l'URL come URL firmato. Se Cloud CDN tenta di trattare il tuo URL come un URL firmato anche se questo non era nelle tue intenzioni, è probabile che l'URL non sia un URL firmato valido, quindi Cloud CDN lo rifiuta.I browser e altri client in genere impongono limiti rispetto alle dimensioni dei cookie (4 KB per cookie) e un numero totale di 50 per dominio, come indicato nello standard RFC 6265. Considera il payload totale dei cookie inviati dal loro dominio.
Si applicano i limiti e le restrizioni 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), ad esempio quelle con firme scadute o altrimenti non valide, comportano l'addebito dei costi di ricerca nella cache.
Passaggi successivi
- Per scoprire altre best practice, consulta Best practice per la sicurezza web.