Specifica dei firmatari che possono creare URL firmati e cookie firmati - Amazon CloudFront

Specifica dei firmatari che possono creare URL firmati e cookie firmati

Per creare URL firmati o cookie firmati, hai bisogno di un firmatario. Un firmatario è un gruppo di chiavi attendibili creato in CloudFront o un account AWS che contiene una coppia di chiavi CloudFront. Ti consigliamo di utilizzare gruppi di chiavi attendibili con URL firmati e cookie firmati. Per ulteriori informazioni, consulta Scelta tra gruppi di chiavi attendibili (scelta consigliata) e account AWS.

Il firmatario ha due scopi:

  • Non appena aggiungi il firmatario alla tua distribuzione, CloudFront inizia a richiedere che i visualizzatori utilizzino URL firmati o cookie firmati per accedere ai tuoi file.

  • Quando crei URL o cookie firmati, utilizzi la chiave privata della coppia di chiavi del firmatario per firmare una parte dell'URL o del cookie. Quando qualcuno richiede un file con restrizioni, CloudFront confronta la firma nell'URL o nel cookie con l'URL o il cookie senza firma, per verificare che non sia stato manomesso. CloudFront inoltre, verifica che l'URL o il cookie sia valido, ad esempio che la data e l'ora di scadenza non siano già trascorse.

Quando specifichi un firmatario, si specificano indirettamente anche i file che richiedono URL firmati o cookie firmati aggiungendo il firmatario a un comportamento della cache. Se la tua distribuzione ha un solo comportamento cache, i visualizzatori devono utilizzare gli URL o i cookie firmati per accedere a qualsiasi file associato alla distribuzione. Se crei più comportamenti cache e aggiungi firmatari attendibili ad alcuni comportamenti cache e non ad altri, puoi richiedere che i visualizzatori utilizzino URL o cookie firmati per accedere ad alcuni file e non ad altri.

Per specificare i firmatari (le chiavi private) a cui è consentito creare URL o cookie firmati e aggiungere gli account alla tua distribuzione CloudFront, procedi come segue:

  1. Decidi se utilizzare un gruppo di chiavi attendibili o un account AWS come firmatario. Ti consigliamo di utilizzare un gruppo di chiavi attendibile. Per ulteriori informazioni, consulta Scelta tra gruppi di chiavi attendibili (scelta consigliata) e account AWS.

  2. Per il firmatario scelto nel passaggio 1, crea una coppia di chiavi pubbliche-private. Per ulteriori informazioni, consulta Creazione di coppie di chiavi per i firmatari.

  3. Se utilizzi .NET o Java per creare URL o cookie firmati, riformatta la chiave privata. Per ulteriori informazioni, consulta Riformattazione della chiave privata (solo .NET e Java).

  4. Nella distribuzione per la quale stai creando URL firmati o cookie firmati, specifica il firmatario. Per ulteriori informazioni, consulta Aggiunta di un firmatario a una distribuzione.

Scelta tra gruppi di chiavi attendibili (scelta consigliata) e account AWS

Per utilizzare URL firmati o cookie firmati, hai bisogno di un firmatario. Un firmatario è un gruppo di chiavi attendibili creato in CloudFront o un account AWS che contiene una coppia di chiavi CloudFront. Ti consigliamo di utilizzare i gruppi di chiavi attendibili per i seguenti motivi:

  • Con i gruppi di chiavi CloudFront, non è necessario utilizzare l'utente root dell'account AWS per gestire le chiavi pubbliche per gli URL firmati e i cookie firmati CloudFront. Le best practice AWS consigliano di non utilizzare l'utente root quando non è necessario.

  • Con i gruppi di chiavi CloudFront, puoi gestire chiavi pubbliche, gruppi di chiavi e firmatari fidati utilizzando l'API CloudFront. Puoi utilizzare l'API per automatizzare la creazione e la rotazione delle chiavi. Quando si utilizza l'utente root AWS, è necessario utilizzare la console di gestione AWS per gestire le coppie di chiavi CloudFront, quindi non è possibile automatizzare il processo.

  • Poiché è possibile gestire i gruppi chiave con l'API CloudFront, è inoltre possibile utilizzare le policy di autorizzazione di AWS Identity and Access Management (IAM) per limitare ciò che gli utenti sono autorizzati a fare. Ad esempio, puoi consentire agli utenti di caricare chiavi pubbliche, ma non eliminarle. In alternativa, puoi consentire agli utenti di eliminare le chiavi pubbliche, ma solo quando vengono soddisfatte determinate condizioni, ad esempio l'utilizzo dell'autenticazione a più fattori, l'invio della richiesta da una determinata rete o l'invio della richiesta entro un determinato intervallo di data e ora.

    Quando utilizzi l'utente root dell'account AWS per gestire le coppie di chiavi CloudFront, non puoi limitare le operazioni che l'utente root può eseguire o le condizioni in cui può eseguirle. Non puoi applicare policy di autorizzazione IAM all'utente root, motivo per cui le Best practice AWS consigliano di non utilizzare l'utente root.

  • Con i gruppi di chiavi CloudFront, puoi associare un numero maggiore di chiavi pubbliche alla distribuzione CloudFront, ottenendo così una maggiore flessibilità nel modo in cui si utilizzano e gestiscono le chiavi pubbliche. Per impostazione predefinita, puoi associare fino a quattro gruppi di chiavi a una singola distribuzione e disporre di un massimo di cinque chiavi pubbliche in un gruppo di chiavi.

    Quando si utilizza l'utente root per gestire le coppie di chiavi CloudFront, è possibile avere solo fino a due coppie di chiavi CloudFront attive per account AWS.

Creazione di coppie di chiavi per i firmatari

Ogni firmatario utilizzato per creare URL firmati o cookie firmati di CloudFront deve disporre di una coppia di chiavi pubbliche-private. Il firmatario utilizza la propria chiave privata per firmare l'URL o i cookie e CloudFront utilizza la chiave pubblica per verificare la firma.

Il modo in cui crei una coppia di chiavi dipende dal fatto che utilizzi un gruppo di chiavi attendibile come firmatario (scelta consigliata) o una coppia di chiavi CloudFront. Per ulteriori informazioni, consultare le sezioni indicate di seguito. La coppia di chiavi creata deve soddisfare i seguenti requisiti:

  • Deve essere una coppia di chiavi SSH-2 RSA.

  • Deve essere in formato PEM codificato in base64.

  • Deve essere una coppia di chiavi a 1024, 2048 o 4096 bit.

Per proteggere le applicazioni, ti consigliamo di ruotare periodicamente le coppie di chiavi. Per ulteriori informazioni, consulta Rotazione di coppie di chiavi.

Crea una coppia di chiavi per un gruppo di chiavi attendibile (scelta consigliata)

Per creare una coppia di chiavi per un gruppo di chiavi attendibile, attieniti alla seguente procedura:

  1. Creare la coppia di chiavi pubbliche-private.

  2. Caricare la chiave pubblica su CloudFront.

  3. Aggiungere la chiave pubblica a un gruppo di chiavi CloudFront.

Per ulteriori informazioni, consulta le procedure seguenti.

Per creare una coppia di chiavi

Nota

I passaggi seguenti utilizzano OpenSSL come esempio di un modo per creare una coppia di chiavi. Esistono molti altri modi per creare una coppia di chiavi RSA.

  1. Il comando di esempio seguente utilizza OpenSSL per generare una coppia di chiavi RSA con una lunghezza di 2048 bit e salvarla nel file denominato private_key.pem.

    openssl genrsa -out private_key.pem 2048
  2. Il file risultante contiene la chiave pubblica e quella privata. Il comando di esempio seguente estrae la chiave pubblica dal file denominato private_key.pem.

    openssl rsa -pubout -in private_key.pem -out public_key.pem

    Puoi caricare la chiave pubblica (nel file public_key.pem) in un secondo momento, nella procedura seguente.

Per caricare la chiave pubblica su CloudFront

  1. Accedere alla Console di gestione AWS e aprire la console CloudFront all'indirizzo https://console.aws.amazon.com/cloudfront/

  2. Nel menu di navigazione, scegli Public keys (Chiavi pubbliche).

  3. Scegli Add public key (Aggiungi chiave pubblica).

  4. Nella finestra Add public key (Aggiungi chiave pubblica) effettua le operazioni seguenti:

    1. In Key name (Nome chiave), digita un nome per identificare la chiave pubblica.

    2. In Key value (Valore chiave), incolla la chiave pubblica. Se hai seguito i passaggi descritti nella procedura precedente, la chiave pubblica si trova nel file denominato public_key.pem. Per copiare e incollare il contenuto della chiave pubblica, puoi procedere come segue:

      • Usa il comando cat sulla riga di comando macOS o Linux, in questo modo:

        cat public_key.pem

        Copia l'output di quel comando, quindi incollalo nel campo Key value (Valore chiave).

      • Apri il file public_key.pem con un normale editor di testo come Blocco note (su Windows) o TextEdit (su macOS). Copia il contenuto del file, quindi incollalo nel campo Key value (Valore chiave) .

    3. (Facoltativo) Per Comment (Commento), aggiungi un commento per descrivere la chiave pubblica.

    Al termine, scegli Add (Aggiungi).

  5. Registra l'ID della chiave pubblica. Verrà usato in seguito quando si creano URL firmati o cookie firmati, come valore del campo Key-Pair-Id.

Per aggiungere la chiave pubblica a un gruppo di chiavi

  1. Aprire la console CloudFront all'indirizzo https://console.aws.amazon.com/cloudfront/.

  2. Nel menu di navigazione, scegli Key groups (Gruppi di chiavi).

  3. Scegli Add key group (Aggiungi gruppo di chiavi).

  4. Nella pagina Create key group (Crea gruppo di chiavi) effettua le operazioni seguenti:

    1. In Key group name (Nome gruppo di chiavi), digita un nome per identificare il gruppo di chiavi.

    2. (Facoltativo) Per Comment (Commento), digita un commento per descrivere il gruppo di chiavi.

    3. Per Public keys (Chiavi pubbliche), seleziona la chiave pubblica da aggiungere al gruppo di chiavi, quindi scegli Add (Aggiungi). Ripeti questo passaggio per ogni chiave pubblica che desideri aggiungere al gruppo di chiavi.

  5. Scegli Create key group (Crea gruppo di chiavi).

  6. Registra il nome del gruppo di chiavi. Lo utilizzerai in un secondo momento per associare il gruppo di chiavi a un comportamento della cache in una distribuzione CloudFront. Nell'API CloudFront, utilizzi l'ID del gruppo di chiavi per associare il gruppo di chiavi a un comportamento della cache.

Importante

Ti consigliamo di creare una chiave pubblica per un gruppo di chiavi attendibili invece della seguente procedura. Circa il modo consigliato per creare chiavi pubbliche per gli URL firmati e i cookie firmati, consulta Crea una coppia di chiavi per un gruppo di chiavi attendibile (scelta consigliata).

È possibile creare una coppia di chiavi CloudFront nei seguenti modi:

  • Crea una coppia di chiavi nella Console di gestione AWS e scarica la chiave privata. Segui la procedura descritta di seguito.

  • Crea un coppia di chiavi RSA utilizzando un'applicazione, ad esempio OpenSSL, e poi carica la chiave pubblica nella Console di gestione AWS. Per ulteriori informazioni sulla creazione di una coppia di chiavi RSA, consulta Crea una coppia di chiavi per un gruppo di chiavi attendibile (scelta consigliata).

Per creare coppie di chiavi CloudFront nella Console di gestione AWS

  1. Accedi alla Console di gestione AWS utilizzando le credenziali dell'utente root dell'account AWS.

    Importante

    Gli utenti IAM non possono creare coppie di chiavi CloudFront. Devi accedere utilizzando le credenziali utente root per creare coppie di chiavi.

  2. Scegli il nome dell'account, quindi scegli My Security Credentials (Le mie credenziali di sicurezza).

  3. Scegli CloudFront key pairs (Coppie di chiavi CloudFront).

  4. Conferma di non avere più di una coppia di chiavi attiva. Non puoi creare una coppia di chiavi se hai già due coppie di chiavi attive.

  5. Scegli Create New Key Pair (Crea nuova coppia di chiavi).

  6. Nella finestra di dialogo Create Key Pair (Crea coppia di chiavi) scegli Download Private Key File (Scarica il file della chiave privata), quindi salva il file nel computer.

    Importante

    Salva la chiave privata della coppia di chiavi di CloudFront in una posizione sicura e imposta le autorizzazioni per il file in modo che solo gli amministratore desiderati possano leggerlo. Se qualcuno ottiene la chiave privata, può generare URL e cookie firmati validi e scaricare il tuo contenuto. Non puoi ottenere di nuovo la chiave privata, quindi se la perdi o la elimini, devi creare una nuova coppia di chiavi di CloudFront.

  7. Registra l'ID per la tua coppia di chiavi. (Nella Console di gestione AWS, questa si chiama Access Key ID (ID chiave di accesso)). Lo utilizzerai nella creazione di URL o cookie firmati.

Riformattazione della chiave privata (solo .NET e Java)

Se utilizzi .NET o Java per creare URL o cookie firmati, non puoi utilizzare la chiave privata della coppia di chiavi nel formato PEM di default per creare la firma: Effettua invece le seguenti operazioni:

  • .NET Framework: converti la chiave privata nel formato XML utilizzato da .NET Framework. Sono disponibili vari strumenti per eseguire la conversione.

  • Java: converti la chiave privata nel formato DER. Un modo per farlo è con il seguente comando OpenSSL. Nel comando seguente, private_key.pem è il nome del file che contiene la chiave privata con formattazione PEM e private_key.der è il nome del file che contiene la chiave privata con formattazione DER dopo l'esecuzione del comando.

    openssl pkcs8 -topk8 -nocrypt -in private_key.pem -inform PEM -out private_key.der -outform DER

    Per garantire un corretto funzionamento del codificatore, aggiungi il file JAR per le API di crittografia Bouncy Castle Java al tuo progetto e quindi aggiungi il provider Bouncy Castle.

Aggiunta di un firmatario a una distribuzione

Un firmatario è il gruppo di chiavi attendibili (consigliato) o la coppia di chiavi di CloudFront in grado di creare URL firmati e cookie firmati per una distribuzione. Per utilizzare URL firmati o cookie firmati con una distribuzione CloudFront, devi specificare un firmatario.

I firmatari sono associati ai comportamenti cache. Ciò ti consente di richiedere URL o cookie firmati solo per alcuni dei file in una distribuzione. Una distribuzione richiede URL o cookie firmati solo per i file associati ai comportamenti cache corrispondenti.

Analogamente, un firmatario può firmare solo URL o cookie per i file associati ai comportamenti cache corrispondenti. Ad esempio, se disponi di un firmatario per un comportamento cache e di un altro firmatario per un altro comportamento cache, nessuno dei due firmatari attendibili può creare URL o cookie firmati per file associati all'altro comportamento cache.

Importante

Prima di aggiungere un firmatario alla distribuzione, effettua le seguenti operazioni:

  • Definisci con attenzione i pattern di percorso nei comportamenti cache e la sequenza dei comportamenti cache in modo da non concedere agli utenti l'accesso non intenzionale al contenuto o impedisca loro di accedere ai contenuti che desideri essere disponibili per tutti.

    Ad esempio, supponiamo che una richiesta corrisponda al modello di percorso per due comportamenti cache. Il primo comportamento cache, contrariamente al secondo, non richiede URL o cookie firmati. Gli utenti saranno in grado di accedere ai file senza utilizzare URL o cookie firmati in quanto CloudFront elabora il comportamento cache associato alla prima corrispondenza.

    Per ulteriori informazioni sui modelli di percorso, consulta Path Pattern (Modello di percorso).

  • Per una distribuzione che stai già utilizzando per distribuire contenuti, assicurati di essere pronto per iniziare a generare URL firmati e cookie firmati prima di aggiungere un firmatario. Quando aggiungi un firmatario, CloudFront rifiuta le richieste che non includono un URL firmato valido o un cookie firmato.

È possibile aggiungere firmatari alla distribuzione utilizzando la console CloudFront o l'API CloudFront.

Aggiunta di un firmatario a una distribuzione tramite la console CloudFront

La procedura seguente illustra come aggiungere un gruppo di chiavi attendibili come firmatario. Puoi anche aggiungere un account AWS come firmatario attendibile, ma non è consigliabile.

Per aggiungere un firmatario a una distribuzione utilizzando la console

  1. Registra l'ID gruppo di chiavi del gruppo di chiavi che desideri utilizzare come firmatario attendibile. Per ulteriori informazioni, consulta Crea una coppia di chiavi per un gruppo di chiavi attendibile (scelta consigliata).

  2. Aprire la console CloudFront all'indirizzo https://console.aws.amazon.com/cloudfront/.

  3. Scegli la distribuzione di cui desideri proteggere i file con URL firmati o cookie firmati.

    Nota

    Per aggiungere un firmatario a una nuova distribuzione, specifica le stesse impostazioni descritte nel passaggio 6 per la creazione della distribuzione.

  4. Scegli la scheda Behaviors (Comportamenti).

  5. Seleziona il comportamento cache il cui modello di percorso corrisponde ai file che desideri proteggere con URL firmati o cookie firmati, quindi scegli Edit (Modifica).

  6. Nella pagina Edit Behavior (Modifica comportamento) effettua le operazioni seguenti:

    1. Per Restrict Viewer Access (Use Signed URLs or Signed Cookies) (Limita accesso visualizzatore (usa URL o cookie firmati)), seleziona Yes (Sì).

    2. Per Trusted Key Groups or Trusted Signer (Gruppi di chiavi attendibili o Firmatari attendibili), scegli Trusted Key Groups (Gruppi di chiavi attendibili)

    3. Per Trusted Key Groups (Gruppi di chiavi attendibili), scegli il gruppo di chiavi da aggiungere, quindi scegli Add (Aggiungi). Ripeti l'operazione se desideri aggiungere più di un gruppo di chiavi.

  7. Scegli Yes, Edit (Sì, Modifica) per aggiornare il comportamento cache.

Aggiunta di un firmatario a una distribuzione tramite l'API CloudFront

Puoi utilizzare l'API CloudFront per aggiungere un gruppo di chiavi attendibile come firmatario. Puoi aggiungere un firmatario a una distribuzione esistente o a una nuova distribuzione. In entrambi i casi, specifica i valori nell'elemento TrustedKeyGroups.

Puoi anche aggiungere un account AWS come firmatario attendibile, ma non è consigliabile.

Consulta i seguenti argomenti nella Documentazione di riferimento dell'API di Amazon CloudFront:

Rotazione di coppie di chiavi

Ti consigliamo di ruotare periodicamente (modificare) le coppie di chiavi per gli URL e i cookie firmati. Per ruotare le coppie di chiavi che utilizzi per creare URL o cookie firmati senza invalidare URL o cookie non ancora scaduti, procedi come segue:

  1. Crea una nuova coppia di chiavi e aggiungi la chiave pubblica a un gruppo di chiavi. Per ulteriori informazioni, consulta Crea una coppia di chiavi per un gruppo di chiavi attendibile (scelta consigliata).

  2. Se nel passaggio precedente hai creato un nuovo gruppo di chiavi, aggiungi il gruppo di chiavi alla distribuzione come firmatario.

    Importante

    Non rimuovere le chiavi pubbliche esistenti dal gruppo di chiavi o i gruppi di chiavi dalla distribuzione. Aggiungi solo nuovi elementi.

  3. Aggiorna la tua applicazione per creare firme utilizzando la chiave privata della nuova coppia di chiavi. Verifica che gli URL firmati o i cookie firmati con le nuove chiavi private funzionino.

  4. Attendi che la data di scadenza sia trascorsa negli URL o cookie che sono stati firmati utilizzando la chiave privata precedente. Quindi rimuovi la vecchia chiave pubblica dal gruppo di chiavi. Se hai creato un nuovo gruppo di chiavi nel passaggio 2, rimuovi il vecchio gruppo di chiavi dalla distribuzione.