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.
AWS Signature Version 4 pour les API demandes
Important
Si vous utilisez un outil AWS SDK (voir Exemple de code et bibliothèques
Dans les régions qui prennent en charge plusieurs versions de signature, la signature manuelle des demandes signifie que vous devez spécifier la version de signature à utiliser. Lorsque vous envoyez des demandes à des points d'accès multirégionaux SDKs et que vous passez CLI automatiquement à l'utilisation de Signature Version 4A sans configuration supplémentaire.
Les informations d'authentification que vous envoyez dans une demande doivent inclure une signature. AWS Signature Version 4 (SigV4) est le protocole de AWS signature permettant d'ajouter des informations d'authentification aux AWS API demandes.
Vous n'utilisez pas votre clé d'accès secrète pour signer API des demandes. Vous utilisez plutôt le processus de signature SigV4. Les demandes de signature impliquent :
-
Création d'une demande canonique basée sur les détails de la demande.
-
Calcul d'une signature à l'aide de vos AWS informations d'identification.
-
Ajouter cette signature à la demande en tant qu'en-tête d'autorisation.
AWS reproduit ensuite ce processus et vérifie la signature, en accordant ou en refusant l'accès en conséquence.
Le SigV4 symétrique vous oblige à dériver une clé limitée à un seul AWS service, dans une seule AWS région, un jour donné. Cela rend la clé et la signature calculée différentes pour chaque région, ce qui signifie que vous devez connaître la région à laquelle la signature est destinée.
La version 4 de signature asymétrique (SigV4a) est une extension qui permet de signer avec un nouvel algorithme et de générer des signatures individuelles vérifiables dans plusieurs régions. AWS Avec SigV4A, vous pouvez signer une demande pour plusieurs régions, avec un routage et un basculement fluides entre les régions. Lorsque vous utilisez la fonctionnalité AWS SDK ou AWS CLI pour invoquer une fonctionnalité qui nécessite une signature multirégionale, le type de signature est automatiquement modifié pour utiliser SigV4a. Pour plus de détails, consultez Comment fonctionne AWS SigV4A.
Comment fonctionne AWS SigV4
Les étapes suivantes décrivent le processus général de calcul d'une signature avec SigV4 :
-
La chaîne à signer dépend du type de demande. Par exemple, lorsque vous utilisez l'en-tête HTTP d'autorisation ou les paramètres de requête pour l'authentification, vous utilisez une combinaison d'éléments de demande pour créer la chaîne à signer. Pour une HTTP POST demande, la
POST
politique contenue dans la demande est la chaîne que vous signez. -
La clé de signature est une série de calculs, le résultat de chaque étape étant intégré à la suivante. La dernière étape est la clé de signature.
-
Lorsqu'un AWS service reçoit une demande authentifiée, il recrée la signature à l'aide des informations d'authentification contenues dans la demande. Si les signatures correspondent, le service traite la demande. Sinon, il rejette la demande.
Pour de plus amples informations, veuillez consulter Éléments d'une signature AWS API de demande.
Comment fonctionne AWS SigV4A
Sigv4a utilise des signatures asymétriques basées sur la cryptographie à clé publique-privée. SIGv4apasse par un processus de dérivation des informations d'identification de portée similaire à celui de Sigv4aSIGv4, sauf que Sigv4a utilise la même clé pour signer toutes les demandes sans avoir à dériver une clé de signature distincte en fonction de la date, du service et de la région. Une paire de clés Elliptic Curve Digital Signature Algorithm
Le système utilise une cryptographie asymétrique pour vérifier les signatures multirégionales, de sorte qu'il AWS suffit de stocker vos clés publiques. Les clés publiques ne sont pas secrètes et ne peuvent pas être utilisées pour signer des demandes. Des signatures asymétriques sont requises pour les API demandes multirégionales, par exemple avec les points d'accès multirégionaux Amazon S3.
Les étapes suivantes décrivent le processus général de calcul d'une signature avec SigV4a :
-
La chaîne à signer dépend du type de demande. Par exemple, lorsque vous utilisez l'en-tête HTTP d'autorisation ou les paramètres de requête pour l'authentification, vous utilisez une combinaison d'éléments de demande pour créer la chaîne à signer. Pour une HTTP POST demande, la
POST
politique contenue dans la demande est la chaîne que vous signez. -
La clé de signature est dérivée d'une clé d'accès AWS secrète par le biais d'une série de calculs, le résultat de chaque étape étant intégré à la suivante. La dernière étape produit la paire de clés.
-
Lorsqu'un AWS service reçoit une demande signée avec SigV4a, AWS vérifie la signature en utilisant uniquement la moitié publique de la paire de clés. Si la signature est valide, la demande est authentifiée et le service traite la demande. Les demandes dont les signatures ne sont pas valides sont rejetées.
Pour plus d'informations sur SIGv4a pour les API requêtes multirégionales, consultez le projet a-signing-examplessigv4
Quand signer des demandes ?
Lorsque vous écrivez du code personnalisé qui envoie API des demandes à AWS, vous devez inclure le code qui signe les demandes. Vous pouvez écrire du code personnalisé pour les raisons suivantes :
-
Vous travaillez avec un langage de programmation pour lequel il n'existe pas AWS SDK.
-
Vous devez avoir un contrôle total sur la manière dont les demandes sont envoyées AWS.
Alors que les API demandes authentifient l'accès avec AWS SigV4, AWS SDKs puis AWS CLI authentifient vos demandes à l'aide des clés d'accès que vous fournissez. Pour plus d'informations sur l'authentification avec AWS SDKs et le AWS CLI, consultezRessources supplémentaires.
Pourquoi les demandes sont-elles signées ?
Le processus de signature aide à sécuriser les demandes de différentes façons :
-
Vérifier l'identité du demandeur
Les demandes authentifiées nécessitent une signature que vous créez à l'aide de vos clés d'accès (ID de clé d'accès, clé d'accès secrète). Si vous utilisez des informations d'identification de sécurité temporaires, les calculs de signature nécessitent également un jeton de sécurité. Pour plus d'informations, veuillez consulter la rubrique Accès par programmation des informations d'identification de sécuritéAWS.
-
Protéger les données en transit
Pour éviter qu'une demande ne soit falsifiée pendant son transit, certains de ses éléments sont utilisés pour calculer son hachage (digest) et la valeur de hachage obtenue est incluse comme partie intégrante de la demande. Lorsqu'un Service AWS reçoit la demande, il utilise les mêmes informations pour calculer un hachage et le compare à la valeur de hachage de votre demande. Si les valeurs ne correspondent pas, AWS refuse la demande.
-
Assurer une protection contre les attaques potentielles par relecture
Dans la plupart des cas, une demande doit parvenir AWS dans les cinq minutes suivant l'horodatage indiqué dans la demande. Dans le cas contraire, AWS refuse la demande.
AWS SigV4 peut être exprimé dans l'en-tête HTTP d'autorisation ou sous forme de chaîne de requête dans leURL. Pour de plus amples informations, veuillez consulter Méthodes d'authentification.
Ressources supplémentaires
-
Pour plus d'informations sur le processus de signature SigV4 pour les différents services, consultezDemander des exemples de signature.
-
Pour configurer les informations d'identification pour l'accès programmatique au AWS CLI, voir Authentification et informations d'accès dans le Guide de l'utilisateur de l'interface de ligne de AWS commande.
-
Ils AWS SDKs incluent le code source GitHub pour les AWS API demandes de signature. Pour obtenir des exemples de code, veuillez consulter Exemples de projets dans le référentiel AWS d'échantillons.
-
AWS SDK for .NET — AWS4Signer.cs
-
AWS SDK for C++ — AWSAuthV4Signer.cpp
-
AWS SDK for Go — v4.go
-
AWS SDK for Java — BaseAws4Signer.java
-
AWS SDK for JavaScript — v4.js
-
AWS SDK for PHP — SignatureV4.php
-
AWS SDK for Python (Boto) — signers.py
-
AWS SDK for Ruby — signer.rb
-