Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
AWS Signaturversion 4 für API-Anfragen
Wichtig
Wenn Sie ein AWS SDK (siehe Beispielcode und Bibliotheken
In Regionen, die mehrere Signaturversionen unterstützen, müssen Sie beim manuellen Signieren von Anfragen angeben, welche Signaturversion verwendet werden soll. Wenn Sie Anfragen an Access Points mit mehreren Regionen senden, SDKs wechselt die CLI automatisch zur Verwendung von Signature Version 4A ohne zusätzliche Konfiguration.
Die Authentifizierungsinformationen, die Sie in einer Anfrage senden, müssen eine Signatur enthalten. AWS Signature Version 4 (Sigv4) ist das AWS Signaturprotokoll zum Hinzufügen von Authentifizierungsinformationen zu AWS API-Anfragen.
Sie verwenden Ihren geheimen Zugriffsschlüssel nicht zum Signieren von API-Anfragen. Stattdessen verwenden Sie den SigV4-Signaturprozess. Signieren von Anfragen beinhaltet:
-
Erstellen einer kanonischen Anfrage basierend auf den Anfragedetails.
-
Berechnung einer Signatur anhand Ihrer AWS Anmeldeinformationen.
-
Hinzufügen dieser Signatur zur Anfrage als Autorisierungs-Header.
AWS repliziert dann diesen Vorgang und verifiziert die Signatur, wobei der Zugriff entsprechend gewährt oder verweigert wird.
Bei symmetrischem SigV4 müssen Sie einen Schlüssel ableiten, der auf einen einzelnen AWS Service in einer einzelnen Region an einem bestimmten Tag beschränkt ist. AWS Dadurch sind der Schlüssel und die berechnete Signatur für jede Region unterschiedlich. Das bedeutet, dass Sie wissen müssen, für welche Region die Signatur bestimmt ist.
Asymmetric Signature Version 4 (SigV4a) ist eine Erweiterung, die das Signieren mit einem neuen Algorithmus und das Generieren individueller Signaturen unterstützt, die in mehr als einer AWS -Region überprüfbar sind. Mit SigV4a können Sie eine Anfrage für mehrere Regionen signieren, mit nahtlosem Routing und Failover zwischen den Regionen. Wenn Sie das AWS SDK verwenden oder Funktionen aufrufen AWS CLI , für die mehrere Regionen signiert werden müssen, wird der Signaturtyp automatisch auf SigV4a umgestellt. Details hierzu finden Sie unter Wie funktioniert SigV4a AWS.
Wie funktioniert SigV4 AWS
Die folgenden Schritte beschreiben den allgemeinen Prozess der Berechnung einer Signatur mit SigV4:
-
Die zu signierende Zeichenfolge hängt von der Art der Anfrage ab. Wenn Sie beispielsweise den HTTP-Autorisierungs-Header oder die Abfrageparameter zur Authentifizierung verwenden, nutzen Sie eine Kombination aus Anforderungselementen, um die zu signierende Zeichenfolge zu erstellen. Bei einer HTTP-POST-Anfrage ist die
POST
-Richtlinie in der Anfrage die von Ihnen signierte Zeichenfolge. -
Der Signaturschlüssel besteht aus einer Reihe von Berechnungen, wobei das Ergebnis jedes Schritts in den nächsten einfließt. Der letzte Schritt ist der Signaturschlüssel.
-
Wenn ein AWS Dienst eine authentifizierte Anfrage empfängt, erstellt er die Signatur anhand der in der Anfrage enthaltenen Authentifizierungsinformationen neu. Wenn die Signaturen übereinstimmen, verarbeitet der Service die Anforderung. Andernfalls wird die Anforderung abgelehnt.
Weitere Informationen finden Sie unter Elemente einer AWS API Anforderungssignatur.
Wie funktioniert SigV4a AWS
SigV4a verwendet asymmetrische Signaturen, die auf der Kryptografie mit öffentlichen und privaten Schlüsseln basieren. SigV4a durchläuft einen ähnlichen Prozess zur Ableitung von Anmeldeinformationen wie Sigv4, außer dass SigV4a denselben Schlüssel verwendet, um alle Anfragen zu signieren, ohne dass ein eindeutiger Signaturschlüssel basierend auf Datum, Dienst und Region abgeleitet werden muss. Ein ECDSA-Schlüsselpaar (Elliptic Curve Digital Signature Algorithm
Das System verwendet asymmetrische Kryptografie zur Überprüfung von Multi-Region-Signaturen, sodass AWS nur Ihre öffentlichen Schlüssel speichern muss. Öffentliche Schlüssel sind nicht geheim und können nicht zum Signieren von Anfragen verwendet werden. Asymmetrische Signaturen sind für Anfragen an die Multi-Region-API erforderlich, z. B. bei Multi-Region-Zugangspunkten von Amazon S3.
Die folgenden Schritte beschreiben den allgemeinen Prozess der Berechnung einer Signatur mit SigV4a:
-
Die zu signierende Zeichenfolge hängt von der Art der Anfrage ab. Wenn Sie beispielsweise den HTTP-Autorisierungs-Header oder die Abfrageparameter zur Authentifizierung verwenden, nutzen Sie eine Kombination aus Anforderungselementen, um die zu signierende Zeichenfolge zu erstellen. Bei einer HTTP-POST-Anfrage ist die
POST
-Richtlinie in der Anfrage die von Ihnen signierte Zeichenfolge. -
Der Signaturschlüssel wird durch eine Reihe von Berechnungen aus einem geheimen AWS -Zugriffsschlüssel abgeleitet, wobei das Ergebnis jedes Schritts in den nächsten einfließt. Im letzten Schritt wird das Schlüsselpaar erstellt.
-
Wenn ein AWS Dienst eine mit SigV4a signierte Anfrage empfängt, AWS verifiziert er die Signatur nur anhand der öffentlichen Hälfte des Schlüsselpaars. Wenn die Unterschrift gültig ist, wird die Anfrage authentifiziert und der Service bearbeitet die Anfrage. Anfragen mit ungültigen Signaturen werden abgelehnt.
Wann müssen Anforderungen signiert werden?
Wenn Sie benutzerdefinierten Code schreiben, an den API-Anfragen gesendet werden, müssen Sie Code AWS angeben, der die Anfragen signiert. Möglicherweise schreiben Sie benutzerdefinierten Code, weil:
-
Sie arbeiten mit einer Programmiersprache, für die kein AWS SDK verfügbar ist.
-
Sie benötigen die vollständige Kontrolle darüber, an welche Empfänger Anfragen gesendet werden AWS.
API-Anfragen authentifizieren zwar den Zugriff mit AWS Sigv4, AWS SDKs und dann AWS CLI authentifizieren Sie Ihre Anfragen mithilfe der von Ihnen bereitgestellten Zugriffsschlüssel. Weitere Hinweise zur Authentifizierung mit AWS SDKs und dem finden Sie unter. AWS CLIWeitere Ressourcen
Warum werden Anforderungen signiert?
Das Signieren erhöht die Sicherheit der Anforderungen, und zwar auf folgende Weise:
-
Überprüfung der Identität des Anforderers
Für authentifizierte Anfragen ist eine Signatur erforderlich, die Sie mithilfe Ihrer Zugriffsschlüssel (Zugriffsschlüssel-ID, geheimer Zugriffsschlüssel) erstellen. Wenn Sie temporäre Sicherheitsanmeldeinformationen verwenden, ist für die Signaturberechnungen auch ein Sicherheitstoken erforderlich. Weitere Informationen finden Sie unter programmgesteuerter Zugriff auf AWS -Sicherheitsanmeldeinformationen.
-
Schutz der Daten während der Übertragung
Um zu verhindern, dass eine Anforderung während der Übertragung manipuliert wird, werden einige ihrer Elemente verwendet, um einen Hash-Wert (Digest) der Anforderung zu berechnen. Der daraus resultierende Hash-Wert wird in die Anforderung aufgenommen. Wenn an die Anfrage AWS-Service empfängt, verwendet es dieselben Informationen, um einen Hash zu berechnen, und vergleicht ihn mit dem Hashwert in Ihrer Anfrage. Wenn die Werte nicht übereinstimmen, wird die AWS Anfrage abgelehnt.
-
Schutz vor potenziellen Replay-Angriffen
In den meisten Fällen muss eine Anfrage AWS innerhalb von fünf Minuten nach dem Zeitstempel in der Anfrage eingehen. Andernfalls wird die AWS Anfrage abgelehnt.
AWS SigV4 kann im HTTP-Autorisierungsheader oder als Abfragezeichenfolge in der URL ausgedrückt werden. Weitere Informationen finden Sie unter Authentifizierungsmethoden.
Weitere Ressourcen
-
Weitere Informationen über den SigV4-Signaturprozess für verschiedene Services finden Sie unter Anfordern von Signaturbeispielen.
-
Informationen zum Konfigurieren von Anmeldeinformationen für den programmatischen Zugriff auf die AWS CLI finden Sie unter Authentifizierungs- und Zugriffsanmeldeinformationen im Benutzerhandbuch für die AWS Befehlszeilenschnittstelle.
-
Sie AWS SDKs enthalten Quellcode GitHub zum Signieren von AWS API-Anfragen. Codebeispiele finden Sie unter Beispielprojekte im AWS-Beispielrepository.
-
AWS SDK for .NET — AWS4Signer.cs
-
AWS SDK for C++ — AWSAuthV4Signer.cpp
-
AWS SDK für Go — sigv4.go
-
AWS SDK for Java BaseAws— 4Signer.java
-
AWS SDK for JavaScript — Signatur-v4
-
AWS SDK for PHP — SignatureV4.php
-
AWS SDK for Python (Boto) — signers.py
-
AWS SDK for Ruby — signer.rb
-