Utilizzare i cookie firmati

Questa pagina fornisce una panoramica dei cookie firmati e le istruzioni per utilizzarli con Cloud CDN. I cookie firmati offrono accesso a risorse limitate nel tempo a un insieme di anche se gli utenti hanno o meno un Account Google.

I cookie firmati sono un'alternativa agli URL firmati. I cookie firmati proteggono l'accesso quando la firma separata di decine o centinaia di URL per ciascun utente non è possibile la tua applicazione.

I cookie firmati ti consentono di:

  • Autorizza un utente e forniscigli un token a tempo limitato per l'accesso i tuoi contenuti protetti (anziché firmare ogni URL).
  • Impostare l'accesso dell'utente a un prefisso URL specifico, ad esempio https://media.example.com/videos/ e concedi all'utente autorizzato l'accesso a contenuti protetti solo all'interno di quel prefisso URL.
  • Mantieni invariati gli URL e i manifest dei contenuti multimediali, semplificando la pipeline di imballaggio e migliorando la memorizzazione nella cache.

Se invece vuoi limitare l'accesso a URL specifici, valuta la possibilità di utilizzare URL.

Prima di iniziare

Prima di utilizzare i cookie firmati, segui questi passaggi:

  • Assicurati che Cloud CDN sia abilitato. Per istruzioni, consulta Utilizzo di Cloud CDN. Puoi configurare i cookie firmati su un backend prima di attivare Cloud CDN, ma non avranno alcun effetto finché Cloud CDN non sarà attivato.

  • Se necessario, esegui l'aggiornamento alla versione più recente di Google Cloud CLI:

    gcloud components update
    

Per una panoramica, consulta URL e cookie firmati.

Configurazione delle chiavi per le richieste firmate

La creazione di chiavi per gli URL o i cookie firmati richiede diversi passaggi, descritti nelle sezioni seguenti.

Considerazioni sulla sicurezza

Cloud CDN non convalida le richieste nelle seguenti circostanze:

  • La richiesta non è firmata.
  • Il servizio di backend o il bucket di backend per la richiesta non contiene Cloud CDN abilitato.

Le richieste firmate devono sempre essere convalidate all'origine prima di gestire la risposta corretta. Questo perché le origini possono essere utilizzate per pubblicare una combinazione di contenuti firmati e non firmati e perché un client potrebbe accedere direttamente all'origine.

  • Cloud CDN non blocca le richieste senza una query Signature o il cookie HTTP Cloud-CDN-Cookie. Rifiuta le richieste con parametri non validi (o con formato non valido).
  • Quando la tua applicazione rileva una firma non valida, assicurati che il tuo l'applicazione risponde con un codice di risposta HTTP 403 (Unauthorized). I codici di risposta HTTP 403 non sono memorizzabili nella cache.
  • Le risposte alle richieste firmate e non firmate vengono memorizzate nella cache separatamente, pertanto una risposta positiva a una richiesta firmata valida non viene mai utilizzata per soddisfare una richiesta non firmata.
  • Se l'applicazione invia un codice di risposta memorizzabile nella cache a una richiesta non valida, richieste future valide potrebbero essere rifiutate erroneamente.

Per i backend Cloud Storage, assicurati rimuovi l'accesso pubblico, in modo che Cloud Storage possa rifiutare le richieste prive di un indirizzo firma.

La seguente tabella riassume il comportamento.

La richiesta ha la firma Hit della cache Comportamento
No No Inoltra all'origine del backend.
No Pubblicazione dalla cache.
No Convalida firma. Se valido, inoltra all'origine del backend.
Convalida la firma. Se valido, pubblica dalla cache.

Crea chiavi di richiesta firmate

Per attivare il supporto degli URL e dei cookie firmati di Cloud CDN, crea una o più chiavi su un servizio di backend, un bucket di backend o entrambi abilitati per Cloud CDN.

Per ogni servizio di backend o bucket di backend, puoi creare ed eliminare le chiavi in base alle tue esigenze di sicurezza. Ogni backend può avere fino a tre chiavi configurate contemporaneamente. Ti suggeriamo di ruotare periodicamente le chiavi eliminando le chiavi più vecchie aggiungendo una nuova chiave e utilizzando la nuova chiave quando si firmano URL o cookie.

Puoi utilizzare lo stesso nome di chiave in più servizi e bucket di backend poiché ogni set di chiavi è indipendente l'uno dall'altro. I nomi delle chiavi possono contenere fino a 63 caratteri. Per assegnare un nome alle chiavi, utilizza i caratteri A-Z, a-z, 0-9, _ (trattino basso) e - (trattino).

Quando crei chiavi, assicurati di tenerle al sicuro perché chiunque abbia uno di le chiavi possono creare URL e cookie firmati che Cloud CDN accetta finché la chiave non viene eliminata da Cloud CDN. Le chiavi sono memorizzate su il computer in cui vengono generati gli URL o i cookie firmati. Cloud CDN archivia anche le chiavi per verificare le firme delle richieste.

Per mantenere segrete le chiavi, le coppie chiave-valore non vengono incluse nelle risposte a nessun richieste API. Se perdi una chiave, devi crearne una nuova.

Per creare una chiave di richiesta firmata:

Console

  1. Nella console Google Cloud, vai alla pagina Cloud CDN.

    Vai a Cloud CDN

  2. Fai clic sul nome dell'origine a cui vuoi aggiungere la chiave.
  3. Nella pagina Dettagli dell'origine, fai clic sul pulsante Modifica.
  4. Nella sezione Nozioni di base sulle origini, fai clic su Avanti per aprire la sezione Regole host e percorso.
  5. Nella sezione Regole host e percorso, fai clic su Avanti per aprire lo Sezione Prestazioni della cache.
  6. Nella sezione Contenuti con limitazioni, seleziona Limita l'accesso tramite URL e cookie firmati.
  7. Fai clic su Aggiungi chiave di firma.

    1. Specifica un nome univoco per la nuova chiave di firma.
    2. Nella sezione Metodo di creazione della chiave, seleziona Genera automaticamente. In alternativa, fai clic su Fammi inserire e specifica un valore della chiave di firma.

      Per la prima opzione, copia la chiave di firma generata automaticamente in un file privato, che puoi utilizzare per creare URL firmati.

    3. Fai clic su Fine.

    4. Nella sezione Durata massima delle voci di cache, inserisci un valore, quindi seleziona un'unità di tempo.

  8. Fai clic su Fine.

gcloud

Lo strumento a riga di comando gcloud legge le chiavi da un file locale specificato. Il file della chiave deve essere creato generando 128 bit fortemente casuali, codificandoli con base64 e sostituendo il carattere + con - e il carattere / con _. Per ulteriori informazioni, vedi RFC 4648. È fondamentale che la chiave sia fortemente casuale. Su un sistema UNIX-like, puoi generare una chiave fortemente casuale e memorizzarla nel file della chiave con il seguente comando:

head -c 16 /dev/urandom | base64 | tr +/ -_ > KEY_FILE_NAME

Per aggiungere la chiave a un servizio di backend:

gcloud compute backend-services \
   add-signed-url-key BACKEND_NAME \
   --key-name KEY_NAME \
   --key-file KEY_FILE_NAME

Per aggiungere la chiave a un bucket di backend:

gcloud compute backend-buckets \
   add-signed-url-key BACKEND_NAME \
   --key-name KEY_NAME \
   --key-file KEY_FILE_NAME

Configura le autorizzazioni per Cloud Storage

Se utilizzi Cloud Storage e hai limitato gli utenti che possono leggere devi concedere a Cloud CDN l'autorizzazione a leggere gli oggetti l'aggiunta dell'account di servizio Cloud CDN agli ACL di Cloud Storage.

Non è necessario creare l'account di servizio. L'account di servizio viene creato automaticamente la prima volta che aggiungi una chiave a un bucket di backend in un progetto.

Prima di eseguire questo comando, aggiungi almeno una chiave a un bucket di backend nel tuo progetto. In caso contrario, il comando non va a buon fine a causa di un errore perché l'account di servizio per il riempimento della cache Cloud CDN non viene creato finché non aggiungi una o più chiavi per il progetto.