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à.
Imposta i cookie firmati utilizzando una politica personalizzata
Per definire un cookie firmato che utilizza una policy personalizzata, procedi come indicato di seguito.
Impostazione di un cookie firmato che utilizza una policy personalizzata
-
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 Riformatta la chiave privata (solo .NET e Java).
-
Programma la tua applicazione affinché invii tre intestazioni
Set-Cookie
a visualizzatori approvati. Sono necessarie treSet-Cookie
intestazioni perché ogniSet-Cookie
intestazione può contenere solo una coppia nome-valore e un cookie CloudFront firmato richiede tre coppie nome-valore. Le coppie nome-valore sono:CloudFront-Policy
,CloudFront-Signature
eCloudFront-Key-Pair-Id
. I valori devono essere presenti sul visualizzatore prima che un utente effettui la prima richiesta per un file di cui intendi controllare l'accesso.Nota
Come regola generale, ti consigliamo di escludere attributi
Expires
eMax-Age
. Ciò comporta l'eliminazione del cookie da parte del browser quando l'utente chiude il browser, cosa che riduce la possibilità che qualcuno ottenga accesso non autorizzato al tuo contenuto. Per ulteriori informazioni, consulta Impedisci l'uso improprio dei cookie firmati.I nomi degli attributi di cookie fanno distinzione tra maiuscole e minuscole.
Le interruzioni di riga sono incluse solo per rendere gli attributi più leggibili.
Set-Cookie: CloudFront-Policy=
base64 encoded version of the policy statement
; Domain=optional domain name
; Path=/optional directory path
; Secure; HttpOnly Set-Cookie: CloudFront-Signature=hashed and signed version of the policy statement
; Domain=optional domain name
; Path=/optional directory path
; Secure; HttpOnly Set-Cookie: CloudFront-Key-Pair-Id=public key ID for the CloudFront public key whose corresponding private key you're using to generate the signature
; Domain=optional domain name
; Path=/optional directory path
; Secure; HttpOnly- (Facoltativo)
Domain
-
Il nome di dominio per il file richiesto. Se non specifichi un attributo
Domain
, il valore di default è il nome di dominio nell'URL e viene applicato solo al nome di dominio specificato, non ai sottodomini. Se specifichi un attributoDomain
, è applicabile anche ai sottodomini. Un punto all'inizio del nome di dominio (ad esempioDomain=.example.com
) è facoltativo. Inoltre, se specifichi un attributoDomain
, il nome di dominio nell'URL e il valore dell'attributoDomain
devono corrispondere.Puoi specificare il nome di dominio CloudFront assegnato alla tua distribuzione, ad esempio d111111abcdef8.cloudfront.net, ma non puoi specificare *.cloudfront.net per il nome di dominio.
Se intendi utilizzare un nome di dominio alternativo come example.com negli URL, devi aggiungere il nome di dominio alternativo alla distribuzione indipendentemente se si specifica l'attributo
Domain
. Per ulteriori informazioni, consulta Nomi di dominio alternativi (CNAME) nell'argomento Riferimento alle impostazioni di distribuzione. - (Facoltativo)
Path
-
Il percorso per il file richiesto. Se non si specifichi un attributo
Path
, il valore di default è il percorso nell'URL. Secure
-
Richiede al visualizzatore di crittografare i cookie prima dell'invio di una richiesta. Ti consigliamo di inviare l'intestazione tramite una connessione HTTPS per garantire che gli attributi del cookie siano protetti dagli attacchi.
Set-Cookie
man-in-the-middle HttpOnly
-
Richiede al visualizzatore di inviare il cookie solo nelle richieste HTTP o HTTPS.
CloudFront-Policy
-
La tua dichiarazione politica in formato JSON, con gli spazi vuoti rimossi, quindi codificata in base64. Per ulteriori informazioni, consulta Crea una firma per un cookie firmato che utilizza una politica personalizzata.
La dichiarazione di policy controlla l'accesso che un cookie firmato concede a un utente. Include i file a cui l'utente può accedere, 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.
CloudFront-Signature
-
Una versione con hash, firma e codifica base64 della dichiarazione di policy JSON. Per ulteriori informazioni, consulta Crea una firma per un cookie firmato che utilizza una politica personalizzata.
CloudFront-Key-Pair-Id
-
L'ID di una chiave CloudFront pubblica, ad esempio,.
K2JCJMDEHXQW5F
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 Specificate i firmatari che possono creare URL firmati e cookie firmati.
- (Facoltativo)
Set-Cookie
Intestazioni di esempio per politiche personalizzate
Vedi i seguenti esempi di coppie di Set-Cookie
intestazioni.
Se desideri utilizzare un nome di dominio alternativo come example.org negli URL, devi aggiungere il nome di dominio alternativo alla tua distribuzione indipendentemente dal fatto che tu specifichi l'attributo. Domain
Per ulteriori informazioni, consulta Nomi di dominio alternativi (CNAME) nell'argomento Riferimento alle impostazioni di distribuzione.
Esempio 1
Puoi utilizzare le Set-Cookie
intestazioni per un cookie firmato quando utilizzi il nome di dominio associato alla tua distribuzione negli URL dei tuoi file.
Set-Cookie: CloudFront-Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cDovL2QxMTExMTFhYmNkZWY4LmNsb3VkZnJvbnQubmV0L2dhbWVfZG93bmxvYWQuemlwIiwiQ29uZGl0aW9uIjp7IklwQWRkcmVzcyI6eyJBV1M6U291cmNlSXAiOiIxOTIuMC4yLjAvMjQifSwiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiOjE0MjY1MDAwMDB9fX1dfQ__; Domain=d111111abcdef8.cloudfront.net; Path=/; Secure; HttpOnly Set-Cookie: CloudFront-Signature=dtKhpJ3aUYxqDIwepczPiDb9NXQ_; Domain=d111111abcdef8.cloudfront.net; Path=/; Secure; HttpOnly Set-Cookie: CloudFront-Key-Pair-Id=K2JCJMDEHXQW5F; Domain=d111111abcdef8.cloudfront.net; Path=/; Secure; HttpOnly
Esempio 2
Puoi utilizzare le Set-Cookie
intestazioni di un cookie firmato quando utilizzi un nome di dominio alternativo (example.org) negli URL dei tuoi file.
Set-Cookie: CloudFront-Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cDovL2QxMTExMTFhYmNkZWY4LmNsb3VkZnJvbnQubmV0L2dhbWVfZG93bmxvYWQuemlwIiwiQ29uZGl0aW9uIjp7IklwQWRkcmVzcyI6eyJBV1M6U291cmNlSXAiOiIxOTIuMC4yLjAvMjQifSwiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiOjE0MjY1MDAwMDB9fX1dfQ__; Domain=example.org; Path=/; Secure; HttpOnly Set-Cookie: CloudFront-Signature=dtKhpJ3aUYxqDIwepczPiDb9NXQ_; Domain=example.org; Path=/; Secure; HttpOnly Set-Cookie: CloudFront-Key-Pair-Id=K2JCJMDEHXQW5F; Domain=example.org; Path=/; Secure; HttpOnly
Esempio 3
Puoi utilizzare le coppie di Set-Cookie
intestazioni per una richiesta firmata quando utilizzi il nome di dominio associato alla tua distribuzione negli URL dei tuoi file.
Set-Cookie: CloudFront-Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cDovL2QxMTExMTFhYmNkZWY4LmNsb3VkZnJvbnQubmV0L2dhbWVfZG93bmxvYWQuemlwIiwiQ29uZGl0aW9uIjp7IklwQWRkcmVzcyI6eyJBV1M6U291cmNlSXAiOiIxOTIuMC4yLjAvMjQifSwiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiOjE0MjY1MDAwMDB9fX1dfQ__; Domain=d111111abcdef8.cloudfront.net; Path=/; Secure; HttpOnly Set-Cookie: CloudFront-Signature=dtKhpJ3aUYxqDIwepczPiDb9NXQ_; Domain=d111111abcdef8.cloudfront.net; Path=/; Secure; HttpOnly Set-Cookie: CloudFront-Key-Pair-Id=K2JCJMDEHXQW5F; Domain=dd111111abcdef8.cloudfront.net; Path=/; Secure; HttpOnly
Esempio 4
Puoi utilizzare le coppie di Set-Cookie
intestazioni per una richiesta firmata quando utilizzi un nome di dominio alternativo (example.org) associato alla tua distribuzione negli URL dei tuoi file.
Set-Cookie: CloudFront-Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cDovL2QxMTExMTFhYmNkZWY4LmNsb3VkZnJvbnQubmV0L2dhbWVfZG93bmxvYWQuemlwIiwiQ29uZGl0aW9uIjp7IklwQWRkcmVzcyI6eyJBV1M6U291cmNlSXAiOiIxOTIuMC4yLjAvMjQifSwiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiOjE0MjY1MDAwMDB9fX1dfQ__; Domain=example.org; Path=/; Secure; HttpOnly Set-Cookie: CloudFront-Signature=dtKhpJ3aUYxqDIwepczPiDb9NXQ_; Domain=example.org; Path=/; Secure; HttpOnly Set-Cookie: CloudFront-Key-Pair-Id=K2JCJMDEHXQW5F; Domain=example.org; Path=/; Secure; HttpOnly
Crea una dichiarazione politica per un cookie firmato che utilizza una politica personalizzata
Per creare una dichiarazione di policy per una policy personalizzata, completa i seguenti passaggi. Per vari esempi di dichiarazioni di policy che controllano l'accesso a file in vari modi, consulta Esempi di dichiarazioni di policy per un cookie firmato che utilizza una policy personalizzata.
Creazione di una dichiarazione di policy per un cookie firmato che utilizza una policy personalizzata
-
Crea la dichiarazione di policy utilizzando il formato JSON seguente.
{ "Statement": [ { "Resource": "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" } } } ] }
Tieni presente quanto segue:
-
Puoi includere solo una dichiarazione.
-
Utilizza la codifica caratteri UTF-8.
-
Includi tutta le punteggiatura e nomi di parametro esattamente come specificato. Le abbreviazioni per i nomi di parametro non sono accettate.
-
L'ordine dei parametri nella sezione
Condition
non è rilevante. -
Per informazioni sui valori per
Resource
,DateLessThan
,DateGreaterThan
eIpAddress
, consulta Valori da specificare in una dichiarazione di policy per cookie firmati che utilizzano una policy personalizzata.
-
-
Rimuovi tutti gli spazi vuoti (inclusi tabulazioni e caratteri di nuova riga) dall'informativa. È possibile che tu debba includere caratteri di escape nella stringa del codice dell'applicazione.
-
Codifica la dichiarazione di policy utilizzando la codifica base64 MIME. Per ulteriori informazioni, consulta Section 6.8, Base64 Content-Transfer-Encoding
in RFC 2045, MIME (Multipurpose Internet Mail Extensions) Part One: Format of Internet Message Bodies. -
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)
-
Includi il valore risultante nella tua intestazione
Set-Cookie
dopoCloudFront-Policy=
. -
Crea una firma per l'intestazione
Set-Cookie
perCloudFront-Signature
sottoponendo a hashing, firmando e codificando in base64 la dichiarazione di policy. Per ulteriori informazioni, consulta Crea una firma per un cookie firmato che utilizza una politica personalizzata.
Valori da specificare in una dichiarazione di policy per cookie firmati che utilizzano una policy personalizzata
Quando crei una dichiarazione di policy per una policy personalizzata, specifichi i valori seguenti.
- Risorsa
-
L'URL di base che include le eventuali stringhe di query:
https://d111111abcdef8.cloudfront.net/images/horizon.jpg?size=large&license=yes
Importante
Se ometti il parametro
Resource
, gli utenti possono accedere a tutti i file associati a qualsiasi distribuzione associata alla coppia di chiavi che utilizzi per creare l'URL firmato.Puoi specificare un solo valore per
Resource
.Tieni presente quanto segue:
-
Protocollo: il valore deve iniziare con
http://
ohttps://
. -
Parametri di stringa di query: se non hai parametri di stringa di query, ometti il punto di domanda.
-
Caratteri jolly: puoi utilizzare il carattere jolly che corrisponde a zero o più caratteri (*) o il carattere jolly che corrisponde esattamente a un carattere (?) in qualsiasi punto della stringa. Ad esempio, il valore:
https://d111111abcdef8.cloudfront.net/*game_download.zip*
includerebbe (ad esempio) i seguenti file:
-
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, devi specificarlo quando fai riferimento al file nella pagina Web o nell'applicazione. Non specificare l'URL Amazon S3 per il file.
-
- DateLessThan
-
La data e l'ora di scadenza per l'URL in formato Unix (in secondi) e UTC. Non racchiudere il valore tra virgolette.
Ad esempio, 16 marzo 2015 10:00 UTC viene convertito in 1426500000 nel formato Unix.
Per ulteriori informazioni, consulta When CloudFront controlla la data e l'ora di scadenza in un cookie 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 entro la data e l'ora specificate. Non racchiudere il valore tra virgolette.
- IpAddress (Facoltativo)
-
L'indirizzo IP del client che esegue la richiesta GET. Tieni 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. Ad esempio, non puoi definire la policy per consentire l'accesso se l'indirizzo IP del client è in uno dei due intervalli distinti.
-
Per consentire l'accesso da un singolo indirizzo IP, specifica:
"
Indirizzo IP IPv
/32"
-
Devi specificare gli intervalli di indirizzi IP in formato IPv4 CIDR standard (ad esempio,
192.0.2.0/24
). Per ulteriori informazioni, consulta RFC 4632, Classless Inter-domain Routing (CIDR): The Internet Address Assignment and Aggregation Plan, https://tools.ietf.org/html/rfc4632. 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 Enable IPv6 (Abilita IPv6) nell'argomento Riferimento alle impostazioni di distribuzione.
-
Esempi di dichiarazioni di policy per un cookie 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 il cookie firmato dopo una data e un'ora specificate.
Se copiate e incollate uno di questi esempi, rimuovete gli spazi vuoti (inclusi tabulazioni e caratteri di nuova riga), sostituite i valori con i vostri valori e includete un carattere di nuova riga dopo la parentesi di chiusura (}).
Per ulteriori informazioni, consulta Valori da specificare in una dichiarazione di policy per cookie firmati che utilizzano una policy personalizzata.
Argomenti
- Esempio di dichiarazione politica: accedere a un file da un intervallo di indirizzi IP
- Esempio di dichiarazione politica: accedere a tutti i file di una directory da un intervallo di indirizzi IP
- Esempio di dichiarazione politica: accedere a tutti i file associati a un ID di coppia di chiavi da un indirizzo IP
Esempio di dichiarazione politica: accedere a un file da un intervallo di indirizzi IP
L'esempio seguente di policy personalizzata in un cookie 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 1° gennaio 2013 10:00 UTC:
{ "Statement": [ { "Resource": "https://d111111abcdef8.cloudfront.net/game_download.zip", "Condition": { "IpAddress": { "AWS:SourceIp": "192.0.2.0/24" }, "DateLessThan": { "AWS:EpochTime": 1357034400 } } } ] }
Esempio di dichiarazione politica: accedere a tutti i file di una directory da un intervallo di indirizzi IP
L'esempio di policy personalizzata seguente consente di creare cookie firmati per qualsiasi file nella directory training
, come indicato dal carattere jolly * nel parametro Resource
. Gli utenti possono accedere al file da un indirizzo IP incluso nell'intervallo 192.0.2.0/24
fino al 1° gennaio 2013 10:00 UTC:
{ "Statement": [ { "Resource": "https://d111111abcdef8.cloudfront.net/training/*", "Condition": { "IpAddress": { "AWS:SourceIp": "192.0.2.0/24" }, "DateLessThan": { "AWS:EpochTime": 1357034400 } } } ] }
Ogni cookie firmato in cui utilizzi questa policy include un URL di base che identifica un file specifico, ad esempio:
https://d111111abcdef8.cloudfront.net/training/orientation.pdf
Esempio di dichiarazione politica: accedere 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 definire cookie firmati per qualsiasi file associato a qualsiasi distribuzione, come indicato dal carattere jolly * nel parametro Resource
. 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 1° gennaio 2013 10:00 UTC fino al 2 gennaio 2013 10:00 UTC:
{ "Statement": [ { "Resource": "https://*", "Condition": { "IpAddress": { "AWS:SourceIp": "192.0.2.10/32" }, "DateGreaterThan": { "AWS:EpochTime": 1357034400 }, "DateLessThan": { "AWS:EpochTime": 1357120800 } } } ] }
Ogni cookie firmato in cui si utilizza questa politica include un URL di base che identifica un file specifico in una CloudFront distribuzione specifica, ad esempio:
https://d111111abcdef8.cloudfront.net/training/orientation.pdf
Il cookie firmato include inoltre un ID di coppia di chiavi, che deve essere associato a un firmatario attendibile nella distribuzione (d111111abcdef8.cloudfront.net) specificato nell'URL di base.
Crea una firma per un cookie firmato che utilizza una politica personalizzata
La firma di un cookie firmato che utilizza una policy personalizzata è una versione con hash, firma e codifica base64 della dichiarazione di policy.
Per ulteriori informazioni ed esempi su come sottoporre a hashing, firmare e codificare la dichiarazione di policy, consulta:
Creazione di una firma per un cookie firmato utilizzando una policy personalizzata
-
Utilizza la funzione hash SHA-1 e RSA per sottoporre a hashing e firmare la dichiarazione di policy JSON che hai creato nella procedura Creazione di una dichiarazione di policy per un URL firmato che utilizza una policy personalizzata. Utilizza la versione dell'informativa che non include più spazi vuoti ma che non è ancora stata codificata in base 64.
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.
-
Rimuovi gli spazi vuoti (inclusi tabulazioni e caratteri di nuova riga) dalla stringa con hash e firmata.
-
Codifica la stringa utilizzando la codifica base64 MIME. Per ulteriori informazioni, consulta Section 6.8, Base64 Content-Transfer-Encoding
in RFC 2045, MIME (Multipurpose Internet Mail Extensions) Part One: Format of Internet Message Bodies. -
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)
-
Includi il valore risultante nell'intestazione
Set-Cookie
per la coppia nome-valoreCloudFront-Signature=
e ritorna a Impostazione di un cookie firmato che utilizza una policy personalizzata per aggiungere l'intestazioneSet-Cookie
perCloudFront-Key-Pair-Id
.