Travailler avec Presigned URLs - Amazon Simple Storage Service

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.

Travailler avec Presigned URLs

Vous pouvez utiliser Presigned URLs pour accorder un accès limité dans le temps aux objets dans Amazon S3 sans mettre à jour votre politique de compartiment. Un présigné URL peut être saisi dans un navigateur ou utilisé par un programme pour télécharger un objet. Les informations d'identification utilisées par le présigné URL sont celles de l' AWS utilisateur qui a généré leURL.

Vous pouvez également utiliser Presigned URLs pour autoriser quelqu'un à télécharger un objet spécifique dans votre compartiment Amazon S3. Cela permet un téléchargement sans qu'une autre partie ne doive disposer d'informations d'identification ou d'autorisations de AWS sécurité. Si un objet avec la même clé existe déjà dans le compartiment, comme indiqué dans le présignéURL, Amazon S3 remplace l'objet existant par l'objet chargé.

Vous pouvez utiliser le présigné URL plusieurs fois, jusqu'à la date et à l'heure d'expiration.

Lorsque vous créez un document présignéURL, vous devez fournir vos informations d'identification de sécurité, puis spécifier les éléments suivants :

  • Un compartiment Amazon S3

  • Une clé d'objet (si le téléchargement de cet objet se fait dans votre compartiment Amazon S3, s'il s'agit du nom du fichier à charger)

  • Une HTTP méthode (GETpour télécharger des objets ou PUT pour uploader)

  • Un intervalle de temps d'expiration

Actuellement, Amazon S3 presigned URLs ne prend pas en charge l'utilisation des algorithmes de somme de contrôle d'intégrité des données suivants (CRC32,, CRC32CSHA-1,SHA-256) lorsque vous chargez des objets. Pour vérifier l'intégrité de votre objet après le téléchargement, vous pouvez fournir un MD5 résumé de l'objet lorsque vous le téléchargez avec un URL présigné. Pour en savoir plus sur l'intégrité des objets, consultez Vérification de l'intégrité des objets.

Qui peut créer un présigné URL

Toute personne possédant des informations de sécurité valides peut créer un présignéURL. Mais pour qu'une personne puisse accéder à un objet, le présigné URL doit être créé par une personne autorisée à effectuer l'opération sur laquelle le présigné URL est basé.

Les types d'informations d'identification que vous pouvez utiliser pour créer un identifiant présigné URL sont les suivants :

  • IAMprofil d'instance — Valable jusqu'à 6 heures.

  • AWS Security Token Service : valide jusqu'à un maximum de 36 heures en cas de signature avec des informations d'identification de sécurité à long terme ou pendant la durée de validité des informations d'identification temporaires, selon l'élément qui se termine en premier.

  • IAMutilisateur — Valable jusqu'à 7 jours lorsque vous utilisez AWS Signature Version 4.

    Pour créer un présigné URL valide jusqu'à 7 jours, déléguez IAM d'abord les informations d'identification utilisateur (la clé d'accès et la clé secrète) à la méthode que vous utilisez pour créer le URL présigné.

Note

Si vous avez créé un identifiant présigné URL à l'aide d'un identifiant temporaire, il URL expire lorsque l'identifiant expire. En général, un document présigné URL expire lorsque l'identifiant que vous avez utilisé pour le créer est révoqué, supprimé ou désactivé. Cela est vrai même s'il a URL été créé avec une date d'expiration ultérieure. Pour connaître la durée de vie des identifiants de sécurité temporaires, reportez-vous à la section Comparaison AWS STS API des opérations dans le guide de IAM l'utilisateur.

Date d'expiration du présigné URLs

Un présigné URL reste valide pendant la période spécifiée lors de sa URL génération. Si vous créez un présigné URL avec la console Amazon S3, le délai d'expiration peut être défini entre 1 minute et 12 heures. Si vous utilisez le AWS CLI ou AWS SDKs, le délai d'expiration peut être fixé à 7 jours.

Si vous avez créé un jeton URL présigné à l'aide d'un jeton temporaire, URL celui-ci expire lorsque le jeton expire. En général, un document présigné URL expire lorsque l'identifiant que vous avez utilisé pour le créer est révoqué, supprimé ou désactivé. Cela est vrai même s'il a URL été créé avec une date d'expiration ultérieure. Pour plus d'informations sur la manière dont les informations d'identification que vous utilisez affectent le délai d'expiration, consultez Qui peut créer un présigné URL.

Amazon S3 vérifie la date et l'heure d'expiration d'un URL document signé au moment de la HTTP demande. Par exemple, si un client commence à télécharger un fichier volumineux immédiatement avant la date d'expiration, le téléchargement continue même si la date d'expiration intervient pendant le téléchargement. Cependant, si la connexion est perdue et que le client essaie de redémarrer le téléchargement une fois la date d'expiration passée, le téléchargement échoue.

Limiter les capacités présignées URL

Les fonctionnalités d'un présigné URL sont limitées par les autorisations de l'utilisateur qui l'a créé. Essentiellement, les jetons présignés URLs sont des jetons porteurs qui donnent accès à ceux qui les possèdent. À ce titre, nous vous recommandons de les protéger de manière appropriée. Voici quelques méthodes que vous pouvez utiliser pour restreindre l'utilisation de votre présignéURLs.

AWS Version 4 de la signature (SigV4)

Pour appliquer un comportement spécifique lorsque les URL demandes présignées sont authentifiées à l'aide de AWS Signature Version 4 (Sigv4), vous pouvez utiliser des clés de condition dans les politiques de compartiment et les politiques de point d'accès. Par exemple, la politique de compartiment suivante utilise s3:signatureAge cette condition pour refuser toute URL demande présignée Amazon S3 sur les objets du amzn-s3-demo-bucket1 compartiment si la signature date de plus de 10 minutes. Pour utiliser cet exemple, remplacez espaces réservés à la saisie par l'utilisateur avec vos propres informations.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Deny a presigned URL request if the signature is more than 10 min old", "Effect": "Deny", "Principal": {"AWS":"*"}, "Action": "s3:*", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1/*", "Condition": { "NumericGreaterThan": { "s3:signatureAge": 600000 } } } ] }

Pour plus d'informations sur les clés de politique relatives à AWS la version 4 de Signature, consultez la section Authentification de AWS signature version 4 dans le manuel Amazon Simple Storage Service API Reference.

Restriction de chemin réseau

Si vous souhaitez restreindre l'utilisation des accès présignés URLs et de tous les accès Amazon S3 à des chemins réseau particuliers, vous pouvez écrire AWS Identity and Access Management (IAM) des politiques. Vous pouvez définir ces politiques sur le IAM principal émetteur de l'appel, sur le compartiment Amazon S3, ou sur les deux.

Une restriction du chemin réseau sur le IAM principal oblige l'utilisateur de ces informations d'identification à effectuer des demandes depuis le réseau spécifié. Une restriction sur le compartiment ou le point d'accès nécessite que toutes les requêtes adressées à cette ressource proviennent du réseau spécifié. Ces restrictions s'appliquent également en dehors du URL scénario présigné.

La clé de condition IAM globale que vous utilisez dépend du type de point de terminaison. Si vous utilisez le point de terminaison public pour Amazon S3, utilisez aws:SourceIp. Si vous utilisez un point de terminaison de cloud privé virtuel (VPC) pour Amazon S3, utilisez aws:SourceVpc ouaws:SourceVpce.

La déclaration IAM de politique suivante exige que le principal AWS n'accède qu'à partir de la plage réseau spécifiée. Avec cette déclaration de stratégie, tous les accès doivent provenir de cette plage, Cela inclut le cas d'une personne qui utilise un présigné URL pour Amazon S3. Pour utiliser cet exemple, remplacez espaces réservés à la saisie par l'utilisateur avec vos propres informations.

{ "Sid": "NetworkRestrictionForIAMPrincipal", "Effect": "Deny", "Action": "*", "Resource": "*", "Condition": { "NotIpAddressIfExists": {"aws:SourceIp": "IP-address-range"}, "BoolIfExists": {"aws:ViaAWSService": "false"} } }