View a markdown version of this page

Creazione di un URL firmato utilizzando una policy personalizzata - Amazon CloudFront

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Creazione di un URL firmato utilizzando una policy personalizzata

Per creare un URL firmato utilizzando una policy personalizzata, completa la procedura seguente.

Per creare un URL firmato utilizzando una policy personalizzata
  1. Se utilizzi .NET o Java per creare URL firmati e non hai riformattato la chiave privata per la coppia di chiavi dal formato .pem di default in un formato compatibile con .NET o Java, fallo adesso. Per ulteriori informazioni, consulta Riformattazione della chiave privata (solo .NET e Java).

  2. Concatena i seguenti valori. Puoi utilizzare il formato in questo URL firmato di esempio.

    https://d111111abcdef8.cloudfront.net/image.jpg?color=red&size=medium&Policy=eyANCiAgICEXAMPLEW1lbnQiOiBbeyANCiAgICAgICJSZXNvdXJjZSI6Imh0dHA6Ly9kemJlc3FtN3VuMW0wLmNsb3VkZnJvbnQubmV0L2RlbW8ucGhwIiwgDQogICAgICAiQ29uZGl0aW9uIjp7IA0KICAgICAgICAgIklwQWRkcmVzcyI6eyJBV1M6U291cmNlSXAiOiIyMDcuMTcxLjE4MC4xMDEvMzIifSwNCiAgICAgICAgICJEYXRlR3JlYXRlclRoYW4iOnsiQVdTOkVwb2NoVGltZSI6MTI5Njg2MDE3Nn0sDQogICAgICAgICAiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiOjEyOTY4NjAyMjZ9DQogICAgICB9IA0KICAgfV0gDQp9DQo&Signature=nitfHRCrtziwO2HwPfWw~yYDhUF5EwRunQA-j19DzZrvDh6hQ73lDx~-ar3UocvvRQVw6EkC~GdpGQyyOSKQim-TxAnW7d8F5Kkai9HVx0FIu-5jcQb0UEmatEXAMPLE3ReXySpLSMj0yCd3ZAB4UcBCAqEijkytL6f3fVYNGQI6&Key-Pair-Id=K2JCJMDEHXQW5F&Hash-Algorithm=SHA256

    Rimuovi tutti gli spazi vuoti (compresi i caratteri di tabulazione e di nuova riga). È possibile che tu debba includere caratteri di escape nella stringa del codice dell'applicazione. Tutti i valori hanno un tipo String.

    1. Base URL for the file

    L'URL di base è l' CloudFront URL che utilizzeresti per accedere al file se non utilizzassi URL firmati, inclusi gli eventuali parametri della stringa di query. Nell’esempio precedente, l’URL di base è https://d111111abcdef8.cloudfront.net/image.jpg. Per ulteriori informazioni sul formato di URL per le distribuzioni, consulta Personalizza il formato URL per i file in CloudFront.

    I seguenti esempi mostrano i valori che specifichi per le distribuzioni.

    • L' CloudFront URL seguente è per un file di immagine in una distribuzione (utilizzando il nome di CloudFront dominio). Nota che image.jpg è una directory images. Il percorso al file nell'URL deve corrispondere al percorso al file nel server HTTP o nel bucket Amazon S3.

      https://d111111abcdef8.cloudfront.net/images/image.jpg

    • Il seguente CloudFront URL include una stringa di query:

      https://d111111abcdef8.cloudfront.net/images/image.jpg?size=large

    • I seguenti CloudFront URL si riferiscono ai file di immagine in una distribuzione. Entrambi utilizzano un nome di dominio alternativo; il secondo include una stringa di query:

      https://www.example.com/images/image.jpg

      https://www.example.com/images/image.jpg?color=red

    • L' CloudFront URL seguente riguarda un file di immagine in una distribuzione che utilizza un nome di dominio alternativo e il protocollo HTTPS:

      https://www.example.com/images/image.jpg

    2. ?

    Il carattere ? indica che i parametri della stringa di query seguono l’URL di base. Includi il carattere ? anche senza specificare alcun parametro di query.

    Nota

    Puoi specificare i seguenti parametri di query in qualsiasi ordine.

    3. Your query string parameters, if any&

    (Facoltativo) Puoi immettere parametri della stringa di query personalizzati. A tale scopo, aggiungi una e commerciale (&) tra ciascuno di essi, ad esempio color=red&size=medium. Puoi specificare parametri della stringa di query in qualsiasi ordine all’interno dell’URL.

    Importante

    I parametri della stringa di query non possono essere denominati PolicySignature,Key-Pair-Id, oHash-Algorithm.

    Se aggiungi parametri personalizzati, aggiungi un carattere & dopo ciascuno di essi, compreso l’ultimo.

    4. Policy=base64 encoded version of policy statement

    La dichiarazione di policy in formato JSON, con spazi vuoti rimossi e codifica base64. Per ulteriori informazioni, consulta Creazione di una dichiarazione di policy per un URL firmato che utilizza una policy personalizzata.

    La dichiarazione di policy controlla l'accesso che un URL firmato concede a un utente. Include l'URL del file, una data e un'ora di scadenza, una data e un'ora facoltative in cui l'URL diventa valido e un indirizzo IP facoltativo o un intervallo di indirizzi IP a cui è consentito accedere al file.

    5. &Signature=hashed and signed version of the policy statement

    Una versione con hash, firma e codifica base64 della dichiarazione di policy JSON. Per ulteriori informazioni, consulta Creazione di una firma per un URL firmato che utilizza una policy personalizzata.

    6. &Key-Pair-Id=public key ID for the CloudFront public key whose corresponding private key you're using to generate the signature

    L'ID di una chiave CloudFront pubblica, ad esempioK2JCJMDEHXQW5F. L'ID della chiave pubblica indica CloudFront quale chiave pubblica utilizzare per convalidare l'URL firmato. CloudFrontconfronta le informazioni contenute nella firma con quelle contenute nell'informativa per verificare che l'URL non sia stato manomesso.

    Questa chiave pubblica deve appartenere a un gruppo di chiavi che sia un firmatario attendibile nella distribuzione. Per ulteriori informazioni, consulta Specifica dei firmatari che possono creare URL firmati e cookie firmati.

    7. &Hash-Algorithm=SHA1 or SHA256

    (Facoltativo) L'algoritmo hash utilizzato per creare la firma. I valori supportati sono SHA1 e SHA256. Se non si specifica questo parametro, il valore CloudFront predefinito è. SHA1

Creazione di una dichiarazione di policy per un URL firmato che utilizza una policy personalizzata

Completa i passaggi seguenti per creare un’istruzione di policy per un URL firmato che utilizza una policy personalizzata.

Per esempi di istruzioni di policy che controllano l'accesso a file in vari modi, consultare Esempi di dichiarazioni di policy per un URL firmato che utilizza una policy personalizzata.

Creazione di una dichiarazione di policy per un URL firmato che utilizza una policy personalizzata
  1. Crea la dichiarazione di policy utilizzando il formato JSON seguente. Sostituisci i simboli minore di (<) e maggiore di (>) e le relative descrizioni con i tuoi valori. Per ulteriori informazioni, consulta Valori da specificare in una dichiarazione di policy per un URL firmato che utilizza una policy personalizzata.

    { "Statement": [ { "Resource": "<Optional but recommended: URL of the file>", "Condition": { "DateLessThan": { "AWS:EpochTime": <Required: ending date and time in Unix time format and UTC> }, "DateGreaterThan": { "AWS:EpochTime": <Optional: beginning date and time in Unix time format and UTC> }, "IpAddress": { "AWS:SourceIp": "<Optional: IP address>" } } } ] }

    Tenere presente quanto segue:

  2. Rimuovi tutti gli spazi vuoti (inclusi i caratteri di nuova riga e le tabulazioni) dalla dichiarazione di policy. È possibile che tu debba includere caratteri di escape nella stringa del codice dell'applicazione.

  3. Base64-encode l'informativa che utilizza la codifica MIME base64. Per ulteriori informazioni, vedere Sezione 6.8, Base64 Content-Transfer-Encoding in RFC 2045, MIME (Multipurpose Internet Mail Extensions), parte prima: Formato dei corpi dei messaggi Internet.

  4. Sostituisci i caratteri non validi nella stringa di query dell'URL con caratteri validi. La tabella seguente elenca i caratteri validi e non validi.

    Sostituisci questi caratteri non validi Con questi caratteri validi

    +

    - (trattino)

    =

    _ (carattere di sottolineatura)

    /

    ~ (tilde)

  5. Aggiungi il valore risultante al tuo URL firmato dopo Policy=.

  6. Crea una firma per l'URL firmato sottoponendo a hashing, firmando e codificando in base64 la dichiarazione di policy. Per ulteriori informazioni, consulta Creazione di una firma per un URL firmato che utilizza una policy personalizzata.

Valori da specificare in una dichiarazione di policy per un URL firmato che utilizza una policy personalizzata

Quando crei una dichiarazione di policy per una policy personalizzata, specifichi i valori seguenti.

Risorsa

L'URL, incluse tutte le stringhe di query, ma esclusi i parametri,, e. CloudFront Policy Signature Key-Pair-Id Hash-Algorithm Esempio:

https://d111111abcdef8.cloudfront.net/images/horizon.jpg\?size=large&license=yes

Puoi specificare un solo valore URL per Resource.

Importante

È possibile omettere il parametro Resource in una policy, ma in questo caso chiunque con l’URL firmato può accedere a tutti i file in qualsiasi distribuzione associata alla coppia di chiavi utilizzata per creare l’URL firmato.

Tenere presente quanto segue:

  • Protocollo: il valore deve iniziare con http:// https:// o *://.

  • Parametri della stringa di query: se l'URL contiene parametri della stringa di query, non utilizzate una barra rovesciata (\) per evitare il carattere del punto interrogativo (?) che inizia la stringa di query. Esempio:

    https://d111111abcdef8.cloudfront.net/images/horizon.jpg?size=large&license=yes

  • Caratteri jolly: puoi utilizzare caratteri jolly nell'URL della policy. Sono supportati i seguenti caratteri jolly:

    • asterisco (*), che corrisponde a zero o più caratteri

    • punto interrogativo (?), che corrisponde esattamente a un carattere

    Quando l'URL nella policy CloudFront corrisponde all'URL nella richiesta HTTP, l'URL nella policy viene diviso in quattro sezioni: protocol, domain, path e query string, come segue:

    [protocol]://[domain]/[path]\?[query string]

    Quando si utilizza un carattere jolly nell'URL nella policy, la corrispondenza con i caratteri jolly si applica solo entro i limiti della sezione che contiene il carattere jolly. Ad esempio, considera questo URL in una policy:

    https://www.example.com/hello*world

    In questo esempio, il carattere jolly asterisco (*) si applica solo all'interno della sezione del percorso, in modo che corrisponda agli URL https://www.example.com/helloworld e https://www.example.com/hello-world, ma non all'URL https://www.example.net/hello?world.

    Le seguenti eccezioni si applicano ai limiti delle sezioni per la corrispondenza con i caratteri jolly:

    • Un asterisco finale nella sezione del percorso implica un asterisco nella sezione della stringa di query. Ad esempio, http://example.com/hello* è uguale a http://example.com/hello*\?*.

    • Un asterisco finale nella sezione del dominio implica un asterisco nelle sezioni del percorso e della stringa di query. Ad esempio, http://example.com* è uguale a http://example.com*/*\?*.

    • Un URL nella policy può omettere la sezione del protocollo e iniziare con un asterisco nella sezione del dominio. In tal caso, la sezione del protocollo è impostata implicitamente su un asterisco. Ad esempio, l'URL *example.com in una policy è equivalente a *://*example.com/.

    • Un asterisco da solo ("Resource": "*") corrisponde a qualsiasi URL.

    Ad esempio, il valore: https://d111111abcdef8.cloudfront.net/*game_download.zip* in una policy corrisponde a tutti i seguenti URL:

    • https://d111111abcdef8.cloudfront.net/game_download.zip

    • https://d111111abcdef8.cloudfront.net/example_game_download.zip?license=yes

    • https://d111111abcdef8.cloudfront.net/test_game_download.zip?license=temp

  • Nomi di dominio alternativi: se specifichi un nome di dominio alternativo (CNAME) nell'URL nella policy, la richiesta HTTP deve utilizzare il nome di dominio alternativo nella pagina Web o nell’applicazione. Non specificare l'URL Amazon S3 per il file in una policy.

DateLessThan

La data e l'ora di scadenza per l'URL in formato Unix (in secondi) e UTC. Nella policy, non racchiudere il valore tra virgolette. Per informazioni sul formato UTC, consultare Date and Time on the Internet: Timestamps.

Ad esempio, la data 31 gennaio 2023 10:00 UTC viene convertita in 1675159200 nel formato Unix.

Questo è l'unico parametro obbligatorio nella sezione. Condition CloudFront richiede questo valore per impedire agli utenti di avere accesso permanente ai tuoi contenuti privati.

Per ulteriori informazioni, consulta When CloudFront controlla la data e l'ora di scadenza in un URL firmato

DateGreaterThan (Facoltativo)

Una data e un'ora di inizio (facoltative) per l'URL in formato Unix (in secondi) e UTC. Agli utenti non è consentito accedere al file prima o in corrispondenza della data e ora specificate. Non racchiudere il valore tra virgolette.

IpAddress (Opzionale)

L'indirizzo IP del client che esegue la richiesta HTTP. Tenere presente quanto segue:

  • Per consentire a qualsiasi indirizzo IP di accedere al file, ometti il parametro IpAddress.

  • Puoi specificare un indirizzo IP o un intervallo di indirizzi IP. Non puoi utilizzare la policy per consentire l'accesso se l'indirizzo IP del client si trova in uno dei due intervalli distinti.

  • Per consentire l'accesso da un singolo indirizzo IP, specifica:

    "IPv4 IP address/32"

  • Devi specificare gli intervalli di indirizzi IP in formato IPv4 CIDR standard (ad esempio, 192.0.2.0/24). Per ulteriori informazioni, vedere Classless Inter-domain Routing (CIDR): il piano di assegnazione e aggregazione degli indirizzi Internet.

    Importante

    Gli indirizzi IP nel formato IPv6, ad esempio 2001:0db8:85a3::8a2e:0370:7334, non sono supportati.

    Se utilizzi una policy personalizzata che include IpAddress, non attivare IPv6 per la distribuzione. Se intendi limitare l'accesso a una parte del contenuto per indirizzo IP e supportare le richieste IPv6 per altro contenuto, puoi creare due distribuzioni. Per ulteriori informazioni, consulta Abilitazione di IPv6 (richieste visualizzatore) nell'argomento Riferimento a tutte le impostazioni di distribuzione.

Esempi di dichiarazioni di policy per un URL firmato che utilizza una policy personalizzata

Gli esempi di dichiarazioni di policy seguenti mostrano il modo in cui controllare l'accesso a un determinato file, a tutti i file in una directory o a tutti i file associati a un ID di coppia di chiavi. Gli esempi mostrano inoltre come controllare l'accesso da un singolo indirizzo IP o da un intervallo di indirizzi IP e come impedire agli utenti di utilizzare l'URL firmato dopo una data e un'ora specificate.

Se copi e incolli uno di questi esempi, devi rimuovere gli eventuali spazi vuoti (inclusi i caratteri di nuova riga e le tabulazioni), sostituire i valori con i tuoi valori e includere un carattere di nuova riga dopo la parentesi graffa di chiusura (}).

Per ulteriori informazioni, consulta Valori da specificare in una dichiarazione di policy per un URL firmato che utilizza una policy personalizzata.

Esempio di dichiarazione di policy: accesso a un file da un intervallo di indirizzi IP

L'esempio di policy personalizzata seguente in un URL firmato specifica che un utente può accedere al file https://d111111abcdef8.cloudfront.net/game_download.zip dagli indirizzi IP nell'intervallo 192.0.2.0/24 fino al 31 gennaio 2023 10:00 UTC:

{ "Statement": [ { "Resource": "https://d111111abcdef8.cloudfront.net/game_download.zip", "Condition": { "IpAddress": { "AWS:SourceIp": "192.0.2.0/24" }, "DateLessThan": { "AWS:EpochTime": 1675159200 } } } ] }

Esempio di dichiarazione di policy: accesso a tutti i file in una directory da un intervallo di indirizzi IP

L'esempio di policy personalizzata seguente consente di creare URL firmati per qualsiasi file nella directory training, come indicato dal carattere jolly asterisco (*) nel parametro Resource. Gli utenti possono accedere al file da un indirizzo IP incluso nell'intervallo 192.0.2.0/24 fino al 31 gennaio 2023 10:00 UTC:

{ "Statement": [ { "Resource": "https://d111111abcdef8.cloudfront.net/training/*", "Condition": { "IpAddress": { "AWS:SourceIp": "192.0.2.0/24" }, "DateLessThan": { "AWS:EpochTime": 1675159200 } } } ] }

Ogni URL firmato con cui utilizzi questa policy, dispone di un URL che identifica un file specifico, ad esempio:

https://d111111abcdef8.cloudfront.net/training/orientation.pdf

Esempio di dichiarazione di policy: accesso a tutti i file associati a un ID di coppia di chiavi da un indirizzo IP

L'esempio di policy personalizzata seguente ti consente di creare URL firmati per qualsiasi file associato a qualsiasi distribuzione, come indicato dal carattere jolly asterisco (*) nel parametro Resource. L'URL firmato deve utilizzare il protocollo https://, non http://. L'utente deve utilizzare l'indirizzo I 192.0.2.10/32. (il valore 192.0.2.10/32 nella notazione CIDR fa riferimento a un singolo indirizzo IP, 192.0.2.10). I file sono disponibili solo dal 31 gennaio 2023 10:00 UTC fino al 2 febbraio 2023 10:00 UTC:

{ "Statement": [ { "Resource": "https://*", "Condition": { "IpAddress": { "AWS:SourceIp": "192.0.2.10/32" }, "DateGreaterThan": { "AWS:EpochTime": 1675159200 }, "DateLessThan": { "AWS:EpochTime": 1675332000 } } } ] }

Ogni URL firmato con cui si utilizza questa politica ha un URL che identifica un file specifico in una distribuzione specifica, ad esempio: CloudFront

https://d111111abcdef8.cloudfront.net/training/orientation.pdf

L'URL firmato include inoltre un ID di coppia di chiavi, che deve essere associato a un gruppo di chiavi attendibili nella distribuzione (d111111abcdef8.cloudfront.net) specificata nell'URL.

Creazione di una firma per un URL firmato che utilizza una policy personalizzata

La firma per un URL firmato che utilizza una policy personalizzata è una versione con firma, hash e codifica base64 della dichiarazione della policy. Per creare una firma per una policy personalizzata, procedi come indicato di seguito.

Per ulteriori informazioni ed esempi su come sottoporre a hashing, firmare e codificare la dichiarazione di policy, consulta:

Nota

Gli esempi collegati utilizzano per impostazione SHA-1 predefinita. Per utilizzarlo SHA-256 invece, sostituisci sha1 con sha256 nei comandi OpenSSL e includi il parametro di query Hash-Algorithm=SHA256 nell'URL firmato.

Opzione 1: per creare una firma utilizzando una policy personalizzata
  1. Utilizzate la funzione SHA-1 o SHA-256 hash e la chiave privata RSA o ECDSA generata per eseguire l'hash e firmare la dichiarazione di policy JSON creata nella procedura. Creazione di una dichiarazione di policy per un URL firmato che utilizza una policy personalizzata Utilizza la versione della dichiarazione di policy che non include più spazi vuoti, ma che non è ancora stata codificata in base64.

    Se lo utilizzi SHA-256, devi includerlo nell'URL firmato. &Hash-Algorithm=SHA256

    Per la chiave privata richiesta dalla funzione hash, utilizza una chiave privata la cui chiave pubblica si trova in un gruppo di chiavi attendibili attivo per la distribuzione.

    Nota

    Il metodo utilizzato per sottoporre a hashing e firmare la dichiarazione di policy dipende dalla piattaforma e dal linguaggio di programmazione. Per il codice di esempio, consulta Codice di esempio per la creazione di una firma per un URL firmato.

  2. Rimuovi gli spazi vuoti (inclusi i caratteri di nuova riga e le tabulazioni) dalla stringa con hash e firmata.

  3. Base64-encode la stringa che utilizza la codifica MIME base64. Per ulteriori informazioni, vedere Sezione 6.8, Base64 Content-Transfer-Encoding in RFC 2045, MIME (Multipurpose Internet Mail Extensions), parte prima: Formato dei corpi dei messaggi Internet.

  4. Sostituisci i caratteri non validi nella stringa di query dell'URL con caratteri validi. La tabella seguente elenca i caratteri validi e non validi.

    Sostituisci questi caratteri non validi Con questi caratteri validi

    +

    - (trattino)

    =

    _ (carattere di sottolineatura)

    /

    ~ (tilde)

  5. Aggiungi il valore risultante all'URL firmato dopo &Signature= e ritorna a Per creare un URL firmato utilizzando una policy personalizzata per completare il concatenamento delle parti dell'URL firmato.