Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Création d'une URL signée à l'aide d'une politique personnalisée
Pour créer une URL signée à l'aide d'une politique personnalisée, procédez comme suit.
Pour créer une URL signée utilisant une politique personnalisée
-
Si vous utilisez .NET ou Java pour créer des fichiers signés URLs, et si vous n'avez pas reformaté la clé privée de votre paire de clés du format .pem par défaut à un format compatible avec .NET ou Java, faites-le maintenant. Pour de plus amples informations, veuillez consulter Reformater la clé privée (.NET et Java uniquement).
-
Concaténez les valeurs suivantes. Vous pouvez utiliser ce format dans cet exemple d'URL signée.
https://d111111abcdef8.cloudfront.net/image.jpg
?color=red&size=medium&
Policy=eyANCiAgICEXAMPLEW1lbnQiOiBbeyANCiAgICAgICJSZXNvdXJjZSI6Imh0dHA6Ly9kemJlc3FtN3VuMW0wLmNsb3VkZnJvbnQubmV0L2RlbW8ucGhwIiwgDQogICAgICAiQ29uZGl0aW9uIjp7IA0KICAgICAgICAgIklwQWRkcmVzcyI6eyJBV1M6U291cmNlSXAiOiIyMDcuMTcxLjE4MC4xMDEvMzIifSwNCiAgICAgICAgICJEYXRlR3JlYXRlclRoYW4iOnsiQVdTOkVwb2NoVGltZSI6MTI5Njg2MDE3Nn0sDQogICAgICAgICAiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiOjEyOTY4NjAyMjZ9DQogICAgICB9IA0KICAgfV0gDQp9DQo
&Signature=nitfHRCrtziwO2HwPfWw~yYDhUF5EwRunQA-j19DzZrvDh6hQ73lDx~-ar3UocvvRQVw6EkC~GdpGQyyOSKQim-TxAnW7d8F5Kkai9HVx0FIu-5jcQb0UEmatEXAMPLE3ReXySpLSMj0yCd3ZAB4UcBCAqEijkytL6f3fVYNGQI6
&Key-Pair-Id=K2JCJMDEHXQW5F
Supprimez tous les espaces vides (y compris les tabulations et les caractères de nouvelle ligne). Il se peut que vous ayez à inclure des caractères d’échappement dans la chaîne du code d’application. Toutes les valeurs ont un type de
String
.- 1.
Base URL for the file
-
L'URL de base est l' CloudFront URL que vous utiliseriez pour accéder au fichier si vous n'utilisiez pas Signed URLs, y compris vos propres paramètres de chaîne de requête, le cas échéant. Dans l'exemple précédent, l'URL de base est
https://d111111abcdef8.cloudfront.net/image.jpg
. Pour plus d'informations sur le format de URLs pour les distributions, consultezPersonnalisez le format d'URL pour les fichiers dans CloudFront.Les exemples suivants affichent les valeurs que vous spécifiez pour les distributions.
-
L' CloudFront URL suivante concerne un fichier image dans une distribution (en utilisant le nom de CloudFront domaine). Notez que
image.jpg
se trouve dans un répertoireimages
. Le chemin d’accès au fichier de l’URL doit correspondre à celui du fichier de votre serveur HTTP ou de votre compartiment Amazon S3.https://d111111abcdef8.cloudfront.net/images/image.jpg
-
L' CloudFront URL suivante inclut une chaîne de requête :
https://d111111abcdef8.cloudfront.net/images/image.jpg?size=large
-
Les informations suivantes CloudFront URLs concernent les fichiers image d'une distribution. Les deux utilisent un nom de domaine alternatif ; le second inclut une chaîne de requête :
https://www.example.com/images/image.jpg
https://www.example.com/images/image.jpg?color=red
-
L' CloudFront URL suivante concerne un fichier image d'une distribution qui utilise un autre nom de domaine et le protocole HTTPS :
https://www.example.com/images/image.jpg
-
- 2.
?
-
?
Cela indique que les paramètres de la chaîne de requête suivent l'URL de base. Incluez le?
même si vous ne spécifiez aucun paramètre de requête.Note
Vous pouvez spécifier les paramètres de requête suivants dans n'importe quel ordre.
- 3.
Your query string parameters, if any
&
-
(Facultatif) Vous pouvez entrer vos propres paramètres de chaîne de requête. Pour ce faire, ajoutez une esperluette (&) entre chacune d'elles, par exemple.
color=red&size=medium
Vous pouvez spécifier les paramètres de chaîne de requête dans n'importe quel ordre dans l'URL.Important
Les paramètres de votre chaîne de requête ne peuvent pas être nommés
Policy
Signature
, ouKey-Pair-Id
.Si vous ajoutez vos propres paramètres, ajoutez-en un
&
après chacun d'eux, y compris le dernier. - 4.
Policy=
base64 encoded version of policy statement
-
Votre déclaration de politique au format JSON, avec les espaces vides supprimés, puis encodée en base64. Pour de plus amples informations, veuillez consulter Création d'une déclaration de politique pour une URL signée qui utilise une politique personnalisée.
La déclaration de politique contrôle l’accès accordé par une URL signée à un utilisateur. Elle inclut l’URL du fichier, une date et une heure d’expiration, une date et une heure (facultatif) auxquelles l’URL devient valide et une adresse IP (facultatif) ou une plage d’adresses IP autorisées à accéder au fichier.
- 5.
&Signature=
hashed and signed version of the policy statement
-
Version hachée, signée et encodée en base 64 de la déclaration de politique JSON. Pour de plus amples informations, veuillez consulter Création d'une signature pour une URL signée qui utilise une politique personnalisée.
- 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 d'une clé CloudFront publique, par exemple,
K2JCJMDEHXQW5F
. L'ID de clé publique indique CloudFront la clé publique à utiliser pour valider l'URL signée. CloudFrontcompare les informations de la signature avec celles de la déclaration de politique pour vérifier que l'URL n'a pas été falsifiée.Cette clé publique doit appartenir à un groupe de clés qui est un signataire approuvé dans la distribution. Pour de plus amples informations, veuillez consulter Spécifiez les signataires autorisés à créer des cookies signés URLs et signés.
- 1.
Création d'une déclaration de politique pour une URL signée qui utilise une politique personnalisée
Effectuez la procédure suivante pour créer une déclaration de politique pour une URL signée qui utilise une politique personnalisée.
Pour obtenir des exemples de déclaration de politique qui contrôlent l’accès aux fichiers de différentes façons, consultez Exemple d’une déclaration de politique pour une URL signée qui utilise une politique personnalisée.
Pour créer la déclaration de politique d’une URL signée qui utilise une politique personnalisée
-
Construisez la déclaration de politique à l’aide du format JSON suivant. Remplacez les symboles inférieur à (
<
) et supérieur à (>
), ainsi que les descriptions qu'ils contiennent, par vos propres valeurs. Pour de plus amples informations, veuillez consulter Valeurs que vous spécifiez dans la déclaration de politique d’une URL signée utilisant une politique personnalisée.{ "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>" } } } ] }
Remarques :
-
Vous pouvez inclure une seule déclaration dans cette politique.
-
Utilisez l’encodage de caractères UTF-8.
-
Incluez la ponctuation et les noms de paramètre exactement comme spécifié. Les abréviations ne sont pas acceptées pour les noms de paramètre.
-
L’ordre des paramètres de la section
Condition
n’importe pas. -
Pour plus d’informations sur les valeurs de
Resource
,DateLessThan
,DateGreaterThan
etIpAddress
, consultez Valeurs que vous spécifiez dans la déclaration de politique d’une URL signée utilisant une politique personnalisée.
-
-
Supprimez tous les espaces vides (y compris les tabulations et les caractères de nouvelle ligne) de la déclaration de politique. Il se peut que vous ayez à inclure des caractères d’échappement dans la chaîne du code d’application.
-
Encodez en base64 la déclaration de politique à l’aide de l’encodage MIME base64. Pour plus d'informations, consultez la Section 6.8, Base64 Content-Transfer-Encoding
dans la RFC 2045, MIME (extensions de messagerie Internet polyvalentes), première partie : Format des corps de messages Internet. -
Remplacez les caractères non valides d’une chaîne de requête d’URL par les caractères valides. Le tableau suivant répertorie les caractères valides et non valides.
Remplacer ces caractères non valides Par ces caractères valides +
- (trait d’union)
=
_ (soulignement)
/
~ (tilde)
-
Ajoutez la valeur obtenue à votre URL signée après
Policy=
. -
Créez une signature pour l’URL signée en hachant, signant et encodant en base64 la déclaration de politique. Pour de plus amples informations, veuillez consulter Création d'une signature pour une URL signée qui utilise une politique personnalisée.
Valeurs que vous spécifiez dans la déclaration de politique d’une URL signée utilisant une politique personnalisée
Lorsque vous créez une déclaration de politique pour une politique personnalisée, vous spécifiez les valeurs suivantes.
- Ressource
-
L'URL, y compris les chaînes de requête, à l'exception des
Key-Pair-Id
paramètres CloudFrontPolicy
Signature
, et. Par exemple :https://d111111abcdef8.cloudfront.net/images/horizon.jpg\?size=large&license=yes
Vous ne pouvez spécifier qu’une seule valeur d'URL pour
Resource
.Important
Vous pouvez omettre le paramètre
Resource
dans une politique, mais cela signifie que toute personne disposant de l'URL signée peut accéder à tous les fichiers de toute distribution associée à cette paire de clés que vous utilisez pour créer l'URL signée.Remarques :
-
Protocole : la valeur doit commencer par
http://
,https://
ou*://
. -
Paramètres de chaîne de requête : si l'URL comporte des paramètres de chaîne de requête, utilisez une barre oblique inverse (
\
) pour échapper le point d'interrogation (?
) qui commence la chaîne de requête. Par exemple :https://d111111abcdef8.cloudfront.net/images/horizon.jpg\?size=large&license=yes
-
Caractères génériques : vous pouvez utiliser des caractères génériques dans l'URL de la politique. Les caractères génériques suivants sont pris en charge :
-
astérisque (
*
), qui correspond à zéro, un ou plusieurs caractères -
point d'interrogation (
?
), qui correspond à un et un seul caractère
Lorsque l'URL de la politique CloudFront correspond à celle de la requête HTTP, l'URL de la politique est divisée en quatre sections (protocole, domaine, chemin et chaîne de requête) comme suit :
[protocol]://[domain]/[path]\?[query string]
Lorsque vous utilisez un caractère générique dans l'URL de la politique, la correspondance avec le caractère générique s'applique uniquement dans les limites de la section qui contient ce caractère générique. Par exemple, envisagez l'URL suivante dans une politique :
https://www.example.com/hello*world
Dans cet exemple, le caractère générique astérisque (
*
) ne s'applique que dans la section du chemin, il correspond donc au URLshttps://www.example.com/helloworld
ethttps://www.example.com/hello-world
, mais pas à l'URL.https://www.example.net/hello?world
Les exceptions suivantes s'appliquent aux limites des sections pour la mise en correspondance des caractères génériques :
-
La présence d'un astérisque à la fin de la section de chemin implique un astérisque dans la section de la chaîne de requête. Par exemple,
http://example.com/hello*
équivaut àhttp://example.com/hello*\?*
. -
La présence d'un astérisque à la fin de la section de domaine implique un astérisque dans les sections de chemin et de chaîne de requête. Par exemple,
http://example.com*
équivaut àhttp://example.com*/*\?*
. -
Une URL figurant dans la politique peut omettre la section de protocole et commencer par un astérisque dans la section de domaine. Dans ce cas, la section de protocole est implicitement définie sur un astérisque. Par exemple, l'URL
*example.com
d'une politique est équivalente à*://*example.com/
. -
Un astérisque à lui seul (
"Resource": "*"
) correspond à n'importe quelle URL.
Par exemple, la valeur :
https://d111111abcdef8.cloudfront.net/*game_download.zip*
dans une politique correspond à toutes les valeurs suivantes URLs :-
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
-
-
Autres noms de domaine : si vous spécifiez un nom de domaine alternatif (CNAME) dans l’URL de la politique, la requête HTTP doit utiliser ce nom de domaine alternatif dans votre page ou application Web. Ne spécifiez pas l’URL Amazon S3 pour le fichier dans une politique.
-
- DateLessThan
-
Date et heure d’expiration de l’URL au format horaire Unix (en secondes) et en heure UTC. Dans la politique, n’entourez pas la valeur avec des points d’interrogation. Pour obtenir des informations sur UTC, consultez Date et heure sur Internet : Horodatages
. Par exemple, l'horodatage 31 janvier 2023 10 h 00 UTC est converti en 1675159200 au format horaire Unix.
Il s'agit du seul paramètre obligatoire dans
Condition
cette section. CloudFront nécessite cette valeur pour empêcher les utilisateurs d'avoir un accès permanent à votre contenu privé.Pour de plus amples informations, consultez Quand CloudFront vérifie la date et l'heure d'expiration dans une URL signée.
- DateGreaterThan (Facultatif)
-
(Facultatif) Date et heure de début de l’URL au format horaire Unix (en secondes) et en heure UTC. Les utilisateurs ne sont pas autorisés à accéder au fichier à la date et à l'heure spécifiées ou avant. N’entourez pas la valeur de points d’interrogation.
- IpAddress (Facultatif)
-
Adresse IP du client formulant la requête HTTP. Remarques :
-
Pour autoriser une adresse IP à accéder au fichier, omettez le paramètre
IpAddress
. -
Vous pouvez spécifier une adresse IP ou une plage d’adresses IP. Vous ne pouvez pas utiliser cette politique pour autoriser l’accès si l’adresse IP du client figure dans l’une des deux plages distinctes.
-
Pour autoriser l’accès depuis une seule adresse IP, vous spécifiez :
"
IPv4 IP address
/32"
-
Vous devez spécifier les plages d'adresses IP au format IPv4 CIDR standard (par exemple,
192.0.2.0/24
). Pour plus d’informations, consultez Routage inter-domaines sans classe (CIDR) : plan d'agrégation et d'affectation d'adresses Internet. Important
Les adresses IP au IPv6 format 2001:0 db 8:85 a3 : :8a2e : 0370:7334 ne sont pas prises en charge.
Si vous utilisez une politique personnalisée qui inclut
IpAddress
, n'activez pas IPv6 la distribution. Si vous souhaitez restreindre l'accès à certains contenus par adresse IP et répondre aux IPv6 demandes d'assistance pour d'autres contenus, vous pouvez créer deux distributions. Pour plus d’informations, consultez Activer IPv6 dans la rubrique Référence des paramètres de distribution.
-
Exemple d’une déclaration de politique pour une URL signée qui utilise une politique personnalisée
Les exemples suivants de déclaration de politique montrent comment accéder à un fichier spécifique, à tous les objets d’un répertoire ou à tous les fichiers associés à un ID de paire de clés. Les exemples montrent aussi comment contrôler l’accès depuis une adresse IP individuelle ou une plage d’adresses IP, et comment empêcher les utilisateurs d’employer l’URL signée au-delà d’une date et heure spécifiées.
Si vous copiez et collez l'un de ces exemples, supprimez tous les espaces vides (y compris les tabulations et les caractères de nouvelle ligne), remplacez les valeurs par vos propres valeurs et insérez un caractère de nouvelle ligne après l'accolade fermante (). }
Pour de plus amples informations, veuillez consulter Valeurs que vous spécifiez dans la déclaration de politique d’une URL signée utilisant une politique personnalisée.
Rubriques
Exemple de déclaration de politique : accéder à un fichier à partir d'une plage d'adresses IP
L’exemple suivant de politique personnalisée dans une URL signée spécifie qu’un utilisateur peut accéder au fichier https://d111111abcdef8.cloudfront.net/game_download.zip
à partir des adresses IP de la plage 192.0.2.0/24
jusqu’au 31 janvier 2023 10 h 00 UTC :
{ "Statement": [ { "Resource": "https://d111111abcdef8.cloudfront.net/game_download.zip", "Condition": { "IpAddress": { "AWS:SourceIp": "192.0.2.0/24" }, "DateLessThan": { "AWS:EpochTime": 1675159200 } } } ] }
Exemple de déclaration de politique : accès à tous les fichiers d'un répertoire à partir d'une plage d'adresses IP
L'exemple de politique personnalisée suivant vous permet de créer une signature URLs pour n'importe quel fichier du training
répertoire, comme indiqué par le caractère générique astérisque (*
) dans le Resource
paramètre. Les utilisateurs peuvent accéder au fichier depuis une adresse IP de la plage 192.0.2.0/24
jusqu’au 31 janvier 2023 10 h 00 UTC :
{ "Statement": [ { "Resource": "https://d111111abcdef8.cloudfront.net/training/*", "Condition": { "IpAddress": { "AWS:SourceIp": "192.0.2.0/24" }, "DateLessThan": { "AWS:EpochTime": 1675159200 } } } ] }
Chaque URL signée avec laquelle vous utilisez cette politique inclut une URL qui identifie un fichier spécifique ; par exemple :
https://d111111abcdef8.cloudfront.net/training/orientation.pdf
Exemple de déclaration de politique : accédez à tous les fichiers associés à un identifiant de paire de clés à partir d'une adresse IP
L'exemple de politique personnalisée suivant vous permet de créer une signature URLs pour n'importe quel fichier associé à n'importe quelle distribution, comme indiqué par le caractère générique astérisque (*
) dans le Resource
paramètre. L'URL signée doit utiliser le protocole https://
, et non http://
. L’utilisateur doit employer l’adresse IP 192.0.2.10/32
. (La valeur 192.0.2.10/32
en notation CIDR fait référence à une seule adresse IP, 192.0.2.10
.) Les fichiers ne sont disponibles qu’entre le 31 janvier 2023 10 h 00 UTC et le 2 février 2023 10 h 00 UTC :
{ "Statement": [ { "Resource": "https://*", "Condition": { "IpAddress": { "AWS:SourceIp": "192.0.2.10/32" }, "DateGreaterThan": { "AWS:EpochTime": 1675159200 }, "DateLessThan": { "AWS:EpochTime": 1675332000 } } } ] }
Chaque URL signée avec laquelle vous utilisez cette politique possède une URL qui identifie un fichier spécifique dans une CloudFront distribution spécifique, par exemple :
https://d111111abcdef8.cloudfront.net/training/orientation.pdf
L’URL signée inclut aussi un ID de paire de clés, qui doit être associé à un groupe de clés autorisé dans la distribution (d111111abcdef8.cloudfront.net) que vous spécifiez dans l’URL.
Création d'une signature pour une URL signée qui utilise une politique personnalisée
La signature d’une URL signée utilisant une politique personnalisée est une version hachée, signée et encodée en base64 de la déclaration de politique. Pour créer une signature pour une politique personnalisée, procédez comme suit.
Pour plus d’informations et d’exemples sur la façon de hacher, signer et encoder la déclaration de politique, consultez :
Option 1 : Créer une signature à l’aide d’une politique personnalisée
-
Utilisez la fonction de hachage SHA-1 et RSA pour hacher et signer la déclaration de politique JSON que vous avez créée dans la procédure Pour créer la déclaration de politique d’une URL signée qui utilise une politique personnalisée. Utilisez la version de la déclaration de politique qui n'inclut plus d'espaces vides mais qui n'a pas encore été codée en base64.
Pour la clé privée requise par la fonction de hachage, utilisez une clé privée dont la clé publique se trouve dans un groupe de clés approuvé actif pour la distribution.
Note
La méthode que vous utilisez pour hacher et signer la déclaration de politique dépend du langage de programmation et de la plateforme. Pour un exemple de code, consultez Exemples de code pour la création de la signature d’une URL signée.
-
Supprimez les espaces vides (y compris les tabulations et les caractères de nouvelle ligne) de la chaîne hachée et signée.
-
Encodez en base64 la chaîne à l’aide de l’encodage MIME base64. Pour plus d'informations, consultez la Section 6.8, Base64 Content-Transfer-Encoding
dans la RFC 2045, MIME (extensions de messagerie Internet polyvalentes), première partie : Format des corps de messages Internet. -
Remplacez les caractères non valides d’une chaîne de requête d’URL par les caractères valides. Le tableau suivant répertorie les caractères valides et non valides.
Remplacer ces caractères non valides Par ces caractères valides +
- (trait d’union)
=
_ (soulignement)
/
~ (tilde)
-
Ajoutez la valeur obtenue à votre URL signée après
&Signature=
, et retournez à Pour créer une URL signée utilisant une politique personnalisée pour terminer la concaténation des parties de votre URL signée.