Signature des demandes d'API AWS - 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.

Signature des demandes d'API AWS

Important

Si vous utilisez des kits SDK AWS (voir Exemples de code et bibliothèques) ou un outil de ligne de commande (CLI) AWS pour envoyer des demandes d'API à AWS, vous pouvez ignorer cette section, car les clients de kit 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 utilisée. Lorsque vous fournissez des demandes à des points d'accès multi-régions, les kits SDK et la CLI utiliseront automatiquement Signature version 4A sans configuration supplémentaire.

Les informations d'authentification que vous envoyez dans une demande doivent inclure une signature. Pour calculer une signature, vous devez d'abord concaténer certains éléments de demande pour former une chaîne, appelée chaîne à signer. Vous utilisez ensuite une clé de signature pour calculer le code d'authentification de message utilisant hash (HMAC) de la chaîne à signer.

Dans AWS Signature Version 4, vous n'utilisez pas votre clé d'accès secrète pour signer la demande. À la place, vous utilisez d'abord votre clé d'accès secrète pour dériver une clé de signature. La clé de signature dérivée est spécifique à la date, au service et à la région. Pour plus d'informations sur la dérivation d'une clé de signature dans d'autres langages de programmation, consultez Demander des exemples de signature.

La version 4 de Signature est le protocole de signature AWS. AWS prend également en charge une extension, Signature Version 4A, qui prend en charge les signatures pour les demandes d'API multirégionales. Pour plus d’informations, veuillez consulter le projet sigv4a-signing-examples sur GitHub.

Le schéma suivant illustre le processus général de calcul d'une signature.


            Image des parties d'une signature, y compris la chaîne à signer, la clé de signature et la signature calculée.
  • 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 variable d'éléments de demande 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.

  • Pour clé de signature, le schéma montre une série de calculs, dont le résultat de chaque étape est intégré à l'étape suivante. La dernière étape est la clé de signature.

  • Lorsqu'un service AWS 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.

Quand signer des demandes ?

Lorsque vous écrivez du code personnalisé pour envoyer des demandes d’API à AWS, vous devez inclure le code permettant de signer 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 voulez exercer un contrôle complet de la façon dont les demandes sont envoyées à AWS.

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 son horodatage. Sinon, AWS refuse la demande.