AWS Signature Version 4 pour les demandes d'API - AWS Identity and Access Management

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 demandes d'API

Important

Si vous utilisez un AWS SDK (voir Exemple de code et bibliothèques) ou un outil AWS Command Line Interface (AWS CLI) pour envoyer des demandes d'API AWS, vous pouvez ignorer le processus de signature, car les clients du SDK et de la CLI authentifient vos demandes à l'aide des clés d'accès que vous fournissez. À moins que vous n'ayez une bonne raison de ne pas le faire, nous vous recommandons de toujours utiliser un kit SDK ou la CLI.

Dans les régions qui prennent en charge plusieurs versions de signature, les demandes de signature manuelle impliquent que vous devez spécifier la version de signature à utiliser. Lorsque vous envoyez des demandes à des points d'accès multirégionaux, SDKs la CLI passe 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 demandes d' AWS API.

Vous n’utilisez pas votre clé d’accès secrète pour signer les requêtes d’API. Vous utilisez plutôt le processus de signature SigV4. La signature des requêtes implique :

  1. Création d’une requête canonique basée sur les détails de la requête.

  2. Calcul d'une signature à l'aide de vos AWS informations d'identification.

  3. Ajout de cette signature à la requête en tant qu’en-tête 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é. La clé et la signature calculée sont donc différentes pour chaque région, ce qui signifie que vous devez connaître la région à laquelle la signature est destinée.

Asymmetric Signature Version 4 (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 le AWS SDK ou AWS CLI que vous invoquez 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 à l’aide de SigV4 :

  1. La chaîne à signer dépend du type de demande. Par exemple, lorsque vous utilisez l’en-tête d’autorisation HTTP ou les paramètres de requête pour l’authentification, vous utilisez une combinaison d’éléments de requête pour créer la chaîne à signer. Pour une requête HTTP POST, la politique POST de la demande est la chaîne que vous signez.

  2. La clé de signature est une série de calculs, le résultat de chaque étape étant intégré dans la suivante. La dernière étape est la clé de signature.

  3. 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 le chiffrement à clé publique-privée. Le SigV4a suit un processus de dérivation des informations d'identification de portée similaire à celui du SigV4, sauf que le 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 ECDSA (Elliptic Curve Digital Signature Algorithm) peut être dérivée de votre clé d'accès secrète existante. AWS

Le système utilise le chiffrement asymétrique pour vérifier les signatures multirégions, de sorte qu’ AWS n’a besoin de stocker que vos clés publiques. Les clés publiques ne sont pas secrètes et ne peuvent pas être utilisées pour signer des requêtes. Des signatures asymétriques sont requises pour les requêtes d’API multirégionales, comme pour les points d’accès multirégionaux Amazon S3.

Les étapes suivantes décrivent le processus général de calcul d’une signature à l’aide de SigV4a :

  1. La chaîne à signer dépend du type de demande. Par exemple, lorsque vous utilisez l’en-tête d’autorisation HTTP ou les paramètres de requête pour l’authentification, vous utilisez une combinaison d’éléments de requête pour créer la chaîne à signer. Pour une requête HTTP POST, la politique POST de la demande est la chaîne que vous signez.

  2. La clé de signature est dérivée d’une clé d’accès secrète AWS par le biais d’une série de calculs, le résultat de chaque étape étant intégré dans la suivante. La dernière étape produit la paire de clés.

  3. 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 requête est authentifiée et le service la traite. Les requêtes dont les signatures ne sont pas valides sont rejetées.

Pour plus d'informations sur SIGv4a pour les requêtes d'API multirégionales, consultez le projet a-signing-examplessigv4 sur. GitHub

Quand signer des demandes ?

Lorsque vous écrivez du code personnalisé qui envoie des demandes d'API AWS, vous devez inclure le code qui signe les demandes. Vous pouvez écrire du code personnalisé pour les raisons suivantes :

  • Vous utilisez un langage de programmation pour lequel il n'existe aucun kit SDK AWS .

  • Vous avez besoin d'un contrôle total sur la manière dont les demandes sont envoyées AWS.

Alors que les demandes d'API 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 d'autorisation HTTP ou sous forme de chaîne de requête dans l'URL. Pour de plus amples informations, veuillez consulter Méthodes d'authentification.

Ressources supplémentaires