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 è necessaria l'autorizzazione delle richieste. Chiunque abbia l'URL firmato può accedere alla risorsa per un periodo di tempo limitato.
- Anche i cookie firmati ti consentono 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 delle origini private 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 avere un Account Google per accedere ai contenuti di Cloud CDN, ma comunque voler controllare l'accesso utilizzando la logica specifica dell'applicazione.
Il modo tipico per gestire 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. Quando crei l'URL firmato, devi specificare una data di scadenza. Chiunque conosca l'URL può accedere alla risorsa fino al raggiungimento della data di scadenza dell'URL o 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 pubblicare annunci per gli utenti con applicazioni client che non supportano i cookie.
Come funzionano gli URL firmati
Gli URL firmati consentono a un client di accedere temporaneamente a una risorsa privata senza richiedere un'autorizzazione aggiuntiva. Per raggiungere questo obiettivo, gli elementi selezionati di una richiesta vengono sottoposti ad hashing e firmati crittograficamente utilizzando una chiave fortemente casuale che generi.
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 tuo backend per la gestione.
In genere, un URL firmato può essere utilizzato da chiunque lo abbia. Tuttavia, un URL firmato solitamente è destinato a essere utilizzato solo dal cliente a cui è stato assegnato. Per ridurre il rischio che l'URL venga utilizzato da un altro client, gli URL firmati scadono in un momento scelto da te. Per ridurre al minimo il rischio che un URL firmato venga condiviso, imposta la scadenza 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. Poi, firmi e sottoponi ad hashing crittografico 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 applica una gestione speciale alle richieste con URL firmati. Nello specifico, le richieste con un parametro di query Signature
sono considerate firmate. Quando viene ricevuta una richiesta di questo tipo, Cloud CDN verifica quanto segue:
- Il metodo HTTP è
GET
,HEAD
,OPTIONS
oTRACE
. - Il parametro
Expires
è impostato su un'ora futura. - La firma della richiesta corrisponde a quella calcolata utilizzando la chiave denominata.
Se uno di questi controlli non va a buon fine, viene inviata una risposta 403 Forbidden
. In caso contrario, la richiesta viene proxy al backend o viene eseguita dalla cache.
Le richieste OPTIONS
e TRACE
vengono sempre proxy direttamente al backend
e non vengono pubblicate dalla cache. Tutte le richieste firmate valide per un determinato URL base (la parte precedente al 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 e all'ora di scadenza impostate.
I contenuti che richiedono richieste firmate sono spesso contrassegnati come non memorizzabili nella cache utilizzando 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 con 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 inviata contiene ancora le intestazioni Cache-Control
generate dal backend.
L'URL restituito dall'interfaccia alla gcloud CLI o prodotto dal codice personalizzato può essere distribuito in base alle tue esigenze. Ti consigliamo di firmare solo gli URL HTTPS perché questo protocollo fornisce un trasporto sicuro che impedisce l'intercettazione del componente della firma dell'URL firmato. Analogamente, devi distribuire gli URL firmati tramite protocolli di trasporto sicuri come TLS/HTTPS.
Per istruzioni su come utilizzare gli URL firmati con Cloud CDN, consulta Utilizzare gli URL firmati.
Cookie firmati
Un cookie firmato è un cookie che fornisce un'autorizzazione e un 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 limitazioni.
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 pubblichi contenuti video e audio utilizzando i protocolli HTTP Live Streaming (HLS) o Dynamic Adaptive Streaming over HTTP (DASH), in genere generi un manifest contenente un elenco di URL dei segmenti video e audio. Potresti avere più istanze di ciascun segmento per fornire codifiche diverse (codec, velocità in bit, risoluzione) a un client.
Sebbene tu possa utilizzare gli URL firmati di Cloud CDN per firmare e autorizzare l'accesso a ciascuno di questi URL, la generazione dinamica di tutte le combinazioni possibili su base utente è onerosa 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 autorizzi ad accedere a qualsiasi contenuto che corrisponda a un criterio (prefisso URL e data di scadenza) senza dover generare o firmare singolarmente i manifest dei tuoi contenuti multimediali. Puoi aggiornare periodicamente l'accesso utente tramite l'API fetch()
JavaScript durante la navigazione nella pagina o altri meccanismi in background nelle applicazioni integrate. La possibilità di aggiornare l'accesso utente ti consente anche di utilizzare periodi di scadenza brevi, rendendo più difficile per gli utenti condividere contenuti protetti.
Puoi emettere questi cookie per gli utenti con più client di browser e altri client che utilizzano HTTP, come ExoPlayer di Google e AVPlayer di iOS.
Download di file binari (giochi)
Analogamente allo streaming di contenuti multimediali, se fornisci download del client di gioco, potresti dividere patch di grandi dimensioni o dati di gioco di più gigabyte in blocchi più piccoli per supportare la memorizzazione nella cache, l'invalidazione e la concorrenza a livello più granulare.
Questi chunk sono in genere elencati in un manifest. I cookie firmati ti consentono di autorizzare l'accesso a questi download solo agli 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
La configurazione e l'emissione di cookie firmati richiedono 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.
- Emetti il cookie nel codice dell'applicazione.
Cloud CDN convalida questi cookie firmati quando sono inclusi nelle richieste.
Puoi impedire agli utenti di aggirare i controlli dei cookie firmati quando utilizzi 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 vengono inviate.
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 a bucket Amazon S3 privati o archivi di oggetti compatibili. Cloud CDN può quindi pubblicare i contenuti di 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 attivare entrambe le opzioni per gli stessi contenuti. L'autenticazione dell'origine privata limita l'accesso non CDN alle origini e ai contenuti. Gli URL e i cookie firmati controllano gli utenti che 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 Configurare l'autenticazione dell'origine privata.
Limitazioni e avvertenze
Sei l'unico responsabile della conformità al consenso e alla privacy necessaria per i tuoi 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 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
Signature
come parametro di query, Cloud CDN tenta di interpretare il tuo URL come URL firmato. Se Cloud CDN tenta di trattare il tuo URL come un URL firmato quando non era tua intenzione, è probabile che non sia un URL firmato valido, pertanto Cloud CDN lo rifiuta.I browser e altri client in genere applicano limiti alle dimensioni dei cookie (4 KB per cookie) e un conteggio totale di 50 per dominio, come da RFC 6265. Prendi in considerazione il payload totale dei cookie inviati dal loro dominio.
Si applicano i limiti e le restrizioni di Cloud CDN, tra cui 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 (rifiuttate), ad esempio quelle con firme scadute o comunque non valide, comportano comunque addebiti per la ricerca nella cache.
Passaggi successivi
- Per scoprire altre best practice, consulta le best practice per la sicurezza web.