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.
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. Une URL présignée peut être saisie dans un navigateur ou utilisée par un programme pour charger un objet. Les informations d'identification utilisées par l'URL présignée sont celles de l' AWS utilisateur qui a généré l'URL.
Vous pouvez également utiliser Presigned URLs pour autoriser quelqu'un à 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é que celle spécifiée dans l’URL présignée existe déjà dans le compartiment, Amazon S3 remplace l’objet existant par l’objet chargé.
Vous pouvez utiliser l’URL présignée plusieurs fois, jusqu’à la date et l’heure d’expiration.
Lorsque vous créez une URL présignée, 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 méthode HTTP (
GET
pour télécharger des objets,PUT
pour télécharger,HEAD
pour lire les métadonnées des objets, etc.) -
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, CRC32C, SHA-1, SHA-256) lorsque vous importez 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 une URL présignée. Pour en savoir plus sur l’intégrité des objets, consultez Vérification de l’intégrité des objets dans Amazon S3.
Rubriques
Utilisateurs habilités à créer une URL présignée
Toute personne qui possède des autorisations de sécurité valides peut créer une URL présignée. Mais pour que l’utilisateur puisse accéder correctement à un objet, l’URL présignée doit être créée par une personne qui possède l’autorisation d’effectuer l’opération sur laquelle l’URL présignée est basée.
Les informations d’identification que vous pouvez utiliser pour créer une URL présignée sont les suivantes :
-
Profil d’instance IAM : valide pendant 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.
-
Utilisateur IAM — Valable jusqu'à 7 jours lorsque vous utilisez AWS Signature version 4.
Afin de créer une URL présignée valide pendant 7 jours maximum, commencez par déléguer des informations d’identification d’utilisateur IAM (clé d’accès et clé secrète) à la méthode que vous utilisez pour créer l’URL présignée.
Note
Si vous avez créé une URL présignée à l’aide d’informations d’identification temporaires, l’URL expire quand les informations d’identification expirent. En général, une URL présignée expire lorsque les informations d’identification que vous avez utilisées pour la créer sont révoquées, supprimées ou désactivées. Cela est vrai même si l’URL a été créée avec une date d’expiration ultérieure. Pour connaître la durée de vie des informations d'identification de sécurité temporaires, consultez la section Comparaison des opérations AWS STS d'API dans le guide de l'utilisateur IAM.
Date d'expiration du présigné URLs
Une URL présignée reste valide pendant la période spécifiée lors de sa génération. Si vous créez une URL présignée à l’aide de 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éé une URL présignée à l’aide d’un jeton temporaire, cette URL expirera quand le jeton expirera. En général, une URL présignée expire lorsque les informations d’identification que vous avez utilisées pour la créer sont révoquées, supprimées ou désactivées. Cela est vrai même si l’URL a été créée 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 Utilisateurs habilités à créer une URL présignée.
Amazon S3 vérifie la date et l’heure d’expiration d’une URL signée au moment de la requête HTTP. 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.
Limitation des capacités des URL présignées
Les capacités d’une URL présignée sont limitées par les autorisations de l’utilisateur qui l’a créée. 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 imposer un comportement spécifique lorsque les requêtes d’URL présignées sont authentifiées à l’aide d’ AWS Signature Version 4 (SigV4), vous pouvez utiliser les clés de condition dans les stratégies de compartiment et les stratégies de point d’accès. Par exemple, la politique de compartiment suivante utilise la condition s3:signatureAge
pour refuser toute demande d’URL présignée Amazon S3 sur les objets du compartiment amzn-s3-demo-bucket
si la signature date de plus de 10 minutes. Pour utiliser cet exemple, remplacez
par vos propres informations.user input
placeholders
{ "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-bucket
/*", "Condition": { "NumericGreaterThan": { "s3:signatureAge":600000
} } } ] }
Pour plus d'informations sur les clés de politique relatives à AWS la version 4 de Signature, consultez AWS la section Authentification de 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 des politiques AWS Identity and Access Management (IAM). Vous pouvez définir ces politiques sur le principal IAM qui effectue l’appel, le compartiment Simple Storage Service (Amazon S3) ou les deux.
Une restriction de chemin réseau sur le principal IAM exige que l’utilisateur de ces informations d’identification effectue des requêtes à partir du 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 hors du scénario des URL présignées.
La clé de condition globale IAM 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
ou aws:SourceVpce
.
La déclaration de politique IAM 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 lorsqu’une personne utilise une URL présignée pour Amazon S3. Pour utiliser cet exemple, remplacez
par vos propres informations.user input
placeholders
{ "Sid": "NetworkRestrictionForIAMPrincipal", "Effect": "Deny", "Action": "*", "Resource": "*", "Condition": { "NotIpAddressIfExists": {"aws:SourceIp": "
IP-address-range
"}, "BoolIfExists": {"aws:ViaAWSService": "false"} } }