Création d'un document signé URL à l'aide d'une politique personnalisée - Amazon CloudFront

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'un document signé URL à l'aide d'une politique personnalisée

Pour créer un document signé URL à l'aide d'une politique personnalisée, procédez comme suit.

Pour créer un document signé URL à l'aide d'une politique personnalisée
  1. Si vous utilisez. NETou Java pour créer une clé signéeURLs, 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. NETou avec Java, faites-le maintenant. Pour de plus amples informations, veuillez consulter Reformatez la clé privée (. NETet Java uniquement).

  2. Concaténez les valeurs suivantes dans l'ordre indiqué, en reproduisant le format indiqué dans cet exemple signé : URL

    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 deString.

    1. Base URL for the file

    La base URL est CloudFront URL celle que vous utiliseriez pour accéder au fichier si vous n'utilisiez pas SignedURLs, y compris vos propres paramètres de chaîne de requête, le cas échéant. Dans l'exemple précédent, la base URL esthttps://d111111abcdef8.cloudfront.net/image.jpg. Pour plus d'informations sur le format de URLs pour les distributions, consultezPersonnalisez le URL format des fichiers dans CloudFront.

    Les exemples suivants affichent les valeurs que vous spécifiez pour les distributions.

    • Ce qui suit CloudFront URL concerne un fichier image dans une distribution (en utilisant le nom de CloudFront domaine). Notez que image.jpg se trouve dans un répertoire images. Le chemin du fichier URL doit correspondre au chemin du fichier sur votre HTTP serveur ou dans votre compartiment Amazon S3.

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

    • CloudFront URLCe qui suit 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

    • Ce qui suit CloudFront URL concerne un fichier image d'une distribution qui utilise un autre nom de domaine et le HTTPS protocole :

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

    2. ?

    ?Cela indique que les paramètres de la chaîne de requête suivent la baseURL. Incluez le ? même si vous n'avez pas vos propres paramètres de chaîne de requête.

    3. Your query string parameters, if any&

    Ce champ est facultatif. Si vous voulez ajouter vos propres paramètres de chaîne de requête, par exemple :

    color=red&size=medium

    puis ajoutez-les après ? et avant le Policy paramètre. Dans certaines circonstances exceptionnelles, il se peut que vous ayez besoin de placer vos paramètres de chaîne de requête après Key-Pair-Id.

    Important

    Vos paramètres ne peuvent pas se nommer Policy, Signature ou Key-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 JSON format, 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 un document signé URL qui utilise une politique personnalisée.

    La déclaration de politique contrôle l'accès qu'une signature URL accorde à un utilisateur. Il inclut le URL fichier, une date et une heure d'expiration, une date et une heure facultatives de URL validité, ainsi qu'une adresse IP facultative ou une plage d'adresses IP autorisées à accéder au fichier.

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

    Une version hachée, signée et codée en base64 de la JSON déclaration de politique. Pour de plus amples informations, veuillez consulter Création d'une signature pour un signataire URL 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 le document signéURL. CloudFront compare les informations de la signature avec celles de la déclaration de politique pour vérifier qu'elles n'ont pas URL été falsifiées.

    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.

Création d'une déclaration de politique pour un document signé URL qui utilise une politique personnalisée

Procédez comme suit pour créer une déclaration de politique pour un document signé URL 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 Exemples de déclarations de politique pour un document signé URL qui utilise une politique personnalisée.

Pour créer la déclaration de politique pour un document signé URL qui utilise une politique personnalisée
  1. Construisez la déclaration de politique en utilisant le JSON format 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 pour un document signé URL qui utilise 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>" } } } ] }

    Notez ce qui suit :

  2. 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.

  3. Encodez la déclaration de politique en base64 à l'aide MIME du codage base64. Pour plus d'informations, voir Section 6.8, Base64 Content-Transfer-Encoding en RFC2045, MIME (Extensions de messagerie Internet polyvalentes) Première partie : Format des corps de messages Internet.

  4. Remplacez les caractères non valides dans une chaîne de URL requête par des 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)

  5. Ajoutez la valeur obtenue à votre signature URL aprèsPolicy=.

  6. Créez une signature pour la déclaration de politique signée URL en hachant, en signant et en codant en base64 la déclaration de politique. Pour de plus amples informations, veuillez consulter Création d'une signature pour un signataire URL qui utilise une politique personnalisée.

Valeurs que vous spécifiez dans la déclaration de politique pour un document signé URL qui utilise 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

LeURL, y compris toutes les chaînes de requête, mais à l'exception des Key-Pair-Id paramètres CloudFront PolicySignature, et. Par exemple :

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

Vous ne pouvez spécifier qu'une seule URL valeur pourResource.

Important

Vous pouvez omettre le Resource paramètre dans une politique, mais cela signifie que toute personne possédant le signe URL peut accéder à tous les fichiers de toute distribution associée à la paire de clés que vous utilisez pour créer le signeURL.

Notez ce qui suit :

  • Protocole : la valeur doit commencer par http://, https:// ou *://.

  • Paramètres de chaîne de requête — S'il URL contient des paramètres de chaîne de requête, utilisez une barre oblique inverse (\) pour éviter 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 URL dans 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 le contenu URL de la politique CloudFront correspond URL à celui de la HTTP demande, le contenu URL de la politique est divisé 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 URL dans la politique, la correspondance des caractères génériques s'applique uniquement dans les limites de la section qui contient le caractère générique. Par exemple, considérez ceci URL 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 URLs https://www.example.com/helloworld ethttps://www.example.com/hello-world, mais pas au. 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*/*\?*.

    • Un URL dans la politique peut omettre la section du protocole et commencer par un astérisque dans la section du domaine. Dans ce cas, la section de protocole est implicitement définie sur un astérisque. Par exemple, le URL *example.com in a policy est équivalent à*://*example.com/.

    • Un astérisque en lui-même ("Resource": "*") correspond à n'importe URL lequel.

    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

  • Noms de domaine alternatifs — Si vous spécifiez un autre nom de domaine (CNAME) URL dans la politique, la HTTP demande doit utiliser le nom de domaine alternatif de votre page Web ou de votre application. Ne spécifiez pas l'Amazon S3 URL pour le fichier dans une politique.

DateLessThan

Date et heure d'expiration du URL format Unix (en secondes) et du temps universel coordonné (UTC). Dans la politique, n’entourez pas la valeur avec des points d’interrogation. Pour plus d'informationsUTC, voir Date et heure sur Internet : horodatages.

Par exemple, le 31 janvier 2023 à 10 h 00 est UTC 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 plus d’informations, consultez Quand CloudFront vérifie la date et l'heure d'expiration dans un document signé URL.

DateGreaterThan (Facultatif)

Date et heure de début facultatives pour le URL format Unix (en secondes) et le temps universel coordonné (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 à l'origine de la HTTP demande. Notez ce qui suit :

  • 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 IPv4 CIDR au format standard (par exemple,192.0.2.0/24). Pour plus d'informations, voir Routage inter-domaines sans classe (CIDR) : le plan d'attribution et d'agrégation 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 inclutIpAddress, 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.

Exemples de déclarations de politique pour un document signé URL 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 également comment contrôler l'accès à partir d'une adresse IP individuelle ou d'une plage d'adresses IP, et comment empêcher les utilisateurs d'utiliser l'adresse signée URL après une date et une 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 pour un document signé URL qui utilise une politique personnalisée.

Exemple de déclaration de politique : accéder à un fichier à partir d'une plage d'adresses IP

L'exemple de politique personnalisée suivant dans un document signé URL indique qu'un utilisateur peut accéder au fichier à https://d111111abcdef8.cloudfront.net/game_download.zip partir d'adresses IP comprises dans la plage allant 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 à partir d'une adresse IP comprise dans 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 document signé URL avec lequel vous utilisez cette politique possède un URL identifiant 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. Les personnes signées URL doivent utiliser le https:// protocole, nonhttp://. L’utilisateur doit employer l’adresse IP 192.0.2.10/32. (La valeur 192.0.2.10/32 en CIDR notation fait référence à une adresse IP unique,192.0.2.10.) Les fichiers ne sont disponibles que du 31 janvier 2023 à 10 h 00 au 2 février UTC 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 document signé URL avec lequel vous utilisez cette politique possède un identifiant URL qui identifie un fichier spécifique dans une CloudFront distribution spécifique, par exemple :

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

Le document signé inclut URL également un identifiant de paire de clés, qui doit être associé à un groupe de clés fiables dans la distribution (d111111abcdef8.cloudfront.net) que vous spécifiez dans le. URL

Création d'une signature pour un signataire URL qui utilise une politique personnalisée

La signature d'un document signé URL qui utilise une politique personnalisée est une version hachée, signée et codé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
  1. Utilisez la fonction de hachage SHA -1 RSA pour hacher et signer la déclaration de JSON politique que vous avez créée dans la procédure. Pour créer la déclaration de politique pour un document signé URL 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 créer une signature pour un document signé URL.

  2. Supprimez les espaces vides (y compris les tabulations et les caractères de nouvelle ligne) de la chaîne hachée et signée.

  3. Encodez la chaîne en base64 en utilisant MIME le codage base64. Pour plus d'informations, voir Section 6.8, Base64 Content-Transfer-Encoding en RFC2045, MIME (Extensions de messagerie Internet polyvalentes) Première partie : Format des corps de messages Internet.

  4. Remplacez les caractères non valides dans une chaîne de URL requête par des 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)

  5. Ajoutez la valeur résultante à votre signature URL après &Signature= et revenez Pour créer un document signé URL à l'aide d'une politique personnalisée pour terminer la concaténation des parties de votre signature. URL