Utilizza richieste firmate

Per creare una richiesta firmata, componi una stringa che includa i parametri che descrivono il contenuto che vuoi proteggere e la data di scadenza del valore firmato. Quindi, includi nella richiesta la stringa composta. Media CDN verifica quindi che la richiesta firmata sia valida prima di intraprendere un'azione.

Requisiti per la richiesta firmata

Le richieste firmate devono soddisfare i seguenti requisiti:

  • Avere un metodo HTTP GET, HEAD o OPTIONS. Altri metodi non sono supportati.

  • Hanno una scadenza impostata nel futuro. A causa delle potenziali differenze di sincronizzazione dell'orologio e delle condizioni di rete del client (ad esempio disconnessioni e nuovi tentativi), consigliamo di impostare timestamp non inferiori a un minuto nel futuro o non inferiori alla durata dello stream video, a seconda di quale sia il valore maggiore.

  • Avere una firma che può essere verificata tramite una chiave o un secret in un EdgeCacheKeyset.

Non puoi firmare altri metodi HTTP, come richieste POST, PUT o DELETE. Se devi emettere URL firmati per i caricamenti rivolti agli utenti, consulta la documentazione di Cloud Storage per gli URL firmati.

Considerazioni sulla sicurezza

Media CDN convalida tutte le richieste che corrispondono a una route configurata con cdnPolicy.signedRequestMode di REQUIRE_SIGNATURES o REQUIRE_TOKENS.

La seguente tabella spiega gli scenari in cui Media CDN convalida una richiesta:

La richiesta ha la firma Firma valida? signedRequestMode Comportamento Codice risposta
No N/A REQUIRE_SIGNATURES oppure REQUIRE_TOKENS Le richieste senza firme o token vengono trattate come se la firma non fosse valida. HTTP 403
No REQUIRE_SIGNATURES o REQUIRE_TOKENS Una firma o un token sono considerati non validi se sono scaduti o hanno un URL non corrispondente o una chiave errata. Le firme o i token non validi vengono rifiutati a livello perimetrale della CDN. HTTP 403
REQUIRE_SIGNATURES o REQUIRE_TOKENS Convalida una firma o un token e la risposta con contenuti della cache o recupero dall'origine. HTTP 200
Nessuno o DISABLED Non viene eseguita alcuna convalida e la risposta viene fornita direttamente all'utente. HTTP 200
No Nessuno o DISABLED Non viene eseguita alcuna convalida e la risposta viene fornita direttamente all'utente. HTTP 200

Quando l'applicazione rileva una firma non valida, assicurati che l'applicazione risponda con un codice di risposta HTTP 403 (Forbidden). I codici di risposta di HTTP 403 non sono memorizzabili nella cache.

Configura le richieste firmate

Le seguenti sezioni descrivono nel dettaglio come configurare, firmare e convalidare le richieste firmate.

Genera chiavi

Crea le chiavi utilizzate da Media CDN per firmare le richieste.

Crea un set di chiavi

Crea il set di chiavi utilizzato da Media CDN per le richieste firmate.

Richiedi richieste firmate

Per consentire solo alle richieste firmate di accedere a una risorsa, puoi collegare un elenco di chiavi a una route e impostare signedRequestMode su uno dei seguenti valori:

  • REQUIRE_SIGNATURES per le richieste firmate che non utilizzano token.

  • REQUIRE_TOKENS per le richieste firmate utilizzando token.

L'abilitazione delle richieste firmate su una route impone che tutte le richieste siano firmate o presentino un token. Le richieste senza una firma valida (ad esempio un nome della chiave non valido, una firma o un token scaduto, una firma non corrispondente e così via) non vanno a buon fine.

Un EdgeCacheKeyset può contenere più chiavi per consentirne la rotazione. Vengono accettate richieste valide firmate con una qualsiasi chiave elencata e le chiavi vengono provate in sequenza. Per maggiori informazioni sulla rotazione della chiave, consulta Rotazione secret.

Se il signedRequestMode è impostato su REQUIRE_SIGNATURES o REQUIRE_TOKENS, Media CDN convalida sia gli hit che i mancati della cache. Ciò include tutte le richieste all'origine.

Di seguito è riportato un esempio di configurazione di Media CDN che applica le richieste firmate su una determinata route (route):

gcloud edge-cache services describe prod-media-service
Output:
...
  routeAction:
    cdnPolicy:
      cacheMode: CACHE_ALL_STATIC
      signedRequestMode: REQUIRE_SIGNATURES
      signedRequestKeyset: prod-vod-keyset

Per informazioni sulla creazione di token per le richieste con firma, consulta Generare i token.

Per disabilitare la firma della richiesta, puoi impostare signedRequestMode su DISABLED ed eliminare il riferimento a signedRequestKeyset.

Convalida le richieste all'origine

Quando una route è configurata con la modalità di firma REQUIRE_SIGNATURES, Media CDN verifica che ogni richiesta corrispondente abbia una firma valida. La mancanza di una firma viene considerata come una firma non valida per queste route.

Per evitare casi in cui la firma non è configurata correttamente e un utente tenta di accedere direttamente alla tua origine, ti consigliamo di verificare che le richieste siano firmate anche all'origine. Un approccio di difesa approfondita alla protezione dei contenuti aiuta a impedire l'accesso e il download non autorizzati dei tuoi contenuti concessi in licenza e a pagamento.

Per i metodi di firma basati su URL, in cui la firma fa parte dei parametri di query o è incorporata come componente di percorso dell'URL, la firma e i parametri correlati vengono rimossi dall'URL prima che la richiesta venga inviata all'origine. Ciò impedisce alla firma di causare problemi di routing quando l'origine gestisce la richiesta. Per convalidare queste richieste, puoi controllare l'intestazione della richiesta x-client-request-url, che include l'URL della richiesta del client originale (firmato) prima della rimozione dei componenti firmati.

Per convalidare le richieste all'origine, utilizza lo stesso codice di convalida come parte degli endpoint di firma delle richieste, il che contribuisce anche a mitigare la mancata corrispondenza delle chiavi e i problemi dovuti alla rotazione della chiave.

Ruota le chiavi

Come best practice, ruota o aggiorna regolarmente i secret utilizzati da Media CDN. Consigliamo di ruotare le chiavi ogni 30-60 giorni, ma non è strettamente obbligatorio.

Passaggi successivi

  • Per ulteriori informazioni su come abilitare e accedere ai log di Media CDN, incluso come filtrare ed eseguire query tra i log, consulta Logging.

  • Per configurare Media CDN e un bucket Cloud Storage privato, consulta Connettività e schermatura dell'origine.