Amazon Web Services
Allgemeine Referenz (Version 1.0)

Signieren von AWS-API-Anforderungen

Wenn Sie HTTP-Anforderungen an AWS senden, signieren Sie diese Anforderungen, damit AWS die Absender identifizieren kann. Die Anforderungen werden mit Ihrem AWS-Zugriffsschlüssel signiert, der aus einer Zugriffsschlüssel-ID und einem geheimen Zugriffsschlüssel besteht. Einige Anforderungen müssen nicht signiert werden, z. B. anonyme Anforderungen an Amazon Simple Storage Service (Amazon S3) und einige API-Operationen in AWS Security Token Service (AWS STS) wie beispielsweise AssumeRoleWithWebIdentity.

Anmerkung

Sie müssen nur lernen, wie Sie HTTP-Anforderungen signieren, wenn Sie sie manuell erstellen. Wenn Sie die AWS Command Line Interface (AWS CLI) oder eines der AWS SDKs verwenden, um Anforderungen an AWS zu senden, signieren diese Tools die Anforderungen für Sie automatisch, und zwar mit dem Zugriffsschlüssel, den Sie bei der Konfiguration der Tools angeben. Wenn Sie diese Tools verwenden, müssen Sie nicht lernen, wie Sie Anforderungen signieren.

Wann müssen Sie Anforderungen signieren?

Wenn Sie für das Senden von HTTP-Anforderungen an AWS benutzerdefinierten Code schreiben, müssen Sie Code zum Signieren der Anforderungen einfügen. Dies kann aus den folgenden Gründen erforderlich sein:

  • Sie arbeiten mit einer Programmiersprache, für die kein AWS SDK verfügbar ist.

  • Sie möchten vollständig kontrollieren, wie eine Anforderung an AWS gesendet wird.

Sie müssen eine Anforderung nicht signieren, wenn Sie die AWS Command Line Interface (AWS CLI) oder eines der AWS SDKs verwenden. Diese Tools verwalten die Verbindungsdetails – sie berechnen z. B. die Signaturen, verarbeiten das erneute Absenden von Anforderungen und übernehmen die Fehlerbehandlung. In den meisten Fällen enthalten sie auch Beispielcode, Tutorials und andere Ressourcen für den Einstieg in das Schreiben von Anwendungen, die mit AWS interagieren.

Warum werden Anforderungen signiert?

Das Signieren erhöht die Sicherheit der Anforderungen, und zwar auf folgende Weise:

  • Überprüfung der Identität des Anforderers

    Durch das Signieren wird sichergestellt, dass die Anforderung von einer Person mit einem gültigen Zugriffsschlüssel gesendet wurde. Weitere Informationen finden Sie unter Verstehen und Abrufen von 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 die Anforderung bei einem AWS-Service eingeht, verwendet dieser die gleichen Informationen, um einen Hash-Wert zu berechnen und diesen mit dem Hash-Wert in Ihrer Anforderung abzugleichen. Wenn die Werte nicht übereinstimmen, wird die Anforderung von AWS abgelehnt.

  • Schutz vor potenziellen Replay-Angriffen

    Meistens muss eine Anforderung AWS innerhalb von fünf Minuten (laut Zeitstempel) erreichen. Andernfalls wird die Anforderung von AWS abgelehnt.

Signieren von Anforderungen

Zum Signieren einer Anforderung berechnen Sie zuerst einen Hash (Digest) der Anforderung. Verwenden Sie anschließend den Hash-Wert, einige andere Informationen aus der Anforderung und Ihren geheimen Zugriffsschlüssel, um einen weiteren Hash-Wert zu berechnen, der als Signatur bezeichnet wird. Sie haben anschließend die folgenden Möglichkeiten, der Anforderung die Signatur hinzuzufügen:

  • Verwenden des HTTP-Authorization-Headers.

  • Hinzufügen eines Abfrage-Zeichenfolgewertes in der Anforderung. Da die Signatur in diesem Fall Teil der URL ist, wird diese Art von URL als vorsignierte URL bezeichnet.

Signaturversionen

AWS unterstützt zwei Signaturversionen: Signaturversion 4 und Signature Version 2. Sie sollten Signaturversion 4 verwenden. Signaturversion 4 wird von allen AWS-Services unterstützt, ausgenommen Amazon SimpleDB, das Signature Version 2 benötigt. Für AWS-Services, die beide Versionen unterstützen, empfehlen wir die Verwendung von Signaturversion 4.

Signaturversion 4 wird von allen AWS-Regionen unterstützt.