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 è 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 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 l'account per accedere ai contenuti di Cloud CDN, ma vuoi comunque controllare all'accesso utilizzando la logica specifica dell'applicazione.
Il modo tipico per risolvere questo caso d'uso è fornire un URL firmato a un utente, il che concede all'utente l'accesso in lettura alla risorsa per un periodo di tempo limitato. Puoi specificare una data di scadenza al momento della creazione dell'URL firmato. 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:
Limitare l'accesso a singoli file, ad esempio un'installazione scaricare l'app.
Per pubblicare annunci per gli utenti con 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 richiedono 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 autorizzato a ricevere i contenuti richiesti. Quando Cloud CDN riceve un una richiesta con una firma non valida per un servizio abilitato, la richiesta viene rifiutata e non finisce mai 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, URL firmati scadrà a un orario scelto da te. Per ridurre al minimo il rischio che un URL firmato venga condiviso, impostalo affinché 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. 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 alla firma 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 vengono spesso contrassegnati come non memorizzabili nella cache utilizzando il comando
Intestazione Cache-Control
. Per rendere questi oggetti compatibili con
Cloud CDN senza richiedere modifiche al backend, Cloud CDN
esegue l'override dell'intestazione Cache-Control
quando si risponde a richieste con dati validi
URL firmati. 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 da gcloud CLI o generato dalla tua il codice 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 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 limitazioni.
Per evitare di modificare gli URL correnti.
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 HTTP Live Streaming (HLS) o Dynamic Adaptive Streaming over HTTP (DASH), in genere viene generato un che contiene 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
con un cookie firmato che li autorizza ad accedere a qualsiasi contenuto che corrisponde a
(prefisso URL e data di scadenza) senza dover generare o generare singolarmente
firmare i tuoi manifest 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 inviare questi cookie agli utenti con più client browser e altri client HTTP, come ExoPlayer di Google e iOS AVPlayer.
Download di file binari (giochi)
Come per lo streaming multimediale, se fornisci i download dei client di gioco, potresti dividere grandi patch multi-gigabyte o dati di gioco in blocchi più piccoli per supportare memorizzazione nella cache, invalidazione e contemporaneità più granulari.
Questi blocchi sono generalmente elencati in un file manifest. I cookie firmati ti consentono autorizzare l'accesso a tali download solo agli utenti autenticati senza richiedere modifiche al file manifest (come nel caso degli URL firmati) senza senza i 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 vengono inclusi con le richieste.
Puoi impedire agli utenti di aggirare i controlli dei cookie firmati quando utilizzi un bucket Cloud Storage. Per farlo, vincola l'accesso all'elemento
rimuovendo il ruolo allUsers
e concedendo a Cloud CDN
l'accesso in lettura dell'account di servizio
al bucket.
Analogamente, le istanze di macchine virtuali (VM) devono convalidare le firme per ogni richiesta firmata da parte degli utenti.
Per istruzioni sull'utilizzo dei cookie firmati con Cloud CDN, consulta la sezione Usare i cookie firmati.
Autenticazione dell'origine privata
L'autenticazione dell'origine privata fornisce a Cloud CDN l'accesso a lungo termine bucket Amazon S3 privati o archivi di oggetti compatibili. Cloud CDN può quindi pubblicare 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. Tu possono essere attivate entrambe per gli stessi contenuti. Limiti di autenticazione per l'origine privata l'accesso non CDN alle tue origini e ai tuoi contenuti. Gli URL e i cookie firmati controllano gli utenti che possono accedere a Cloud CDN.
L'autenticazione delle origini private è 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, vedi Configura 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 sia cookie firmati per controllare l'accesso allo stesso e un visualizzatore utilizza un URL firmato per richiedere un file, Cloud CDN determina se restituire il file al visualizzatore in base solo al modello URL. 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 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 indipendentemente dalla tua volontà, è probabile che l'URL non sia un URL firmato dell'URL, quindi Cloud CDN lo rifiuta.I browser e altri client in genere impongono limiti sulle dimensioni dei cookie (4 kB per cookie) e un conteggio totale di 50 per dominio, come 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 non valide, comportano comunque addebiti per la ricerca nella cache.
Passaggi successivi
- Per conoscere altre best practice, vedi Best practice per la sicurezza web.