Angeben des AWS Key Management Service in Amazon S3 unter Verwendung der REST-API - Amazon Simple Storage Service

Dieses Handbuch wird nicht mehr aktualisiert. Aktuelle Informationen und Anweisungen finden Sie im neuen Amazon S3-Benutzerhandbuch.

Angeben des AWS Key Management Service in Amazon S3 unter Verwendung der REST-API

Wenn Sie ein Objekt erstellen, d. h., wenn Sie ein neues Objekt hochladen oder ein vorhandenes Objekt kopieren, können Sie für die Verschlüsselung Ihrer Daten die serverseitige Verschlüsselung mit AWS Key Management Service (AWS KMS)-Kundenmasterschlüsseln (CMKs) angeben. Fügen Sie hierzu der Anforderung den Header x-amz-server-side-encryption hinzu. Setzen Sie den Wert des Headers auf den aws:kms-Verschlüsselungsalgorithmus. Amazon S3 bestätigt, dass Ihr Objekt unter Verwendung von SSE-KMS gespeichert wird, indem es den Antwort-Header x-amz-server-side-encryption zurückgibt.

Wenn Sie den Header x-amz-server-side-encryption mit dem Wert aws:kms angeben, können Sie auch die folgenden Anforderungs-Header verwenden:

  • x-amz-server-side-encryption-aws-kms-key-id

  • x-amz-server-side-encryption-context

Amazon S3-REST-APIs, die SSE-KMS unterstützen

Die folgenden REST-APIs akzeptieren die Anforderungs-Header x-amz-server-side-encryption, x-amz-server-side-encryption-aws-kms-key-id und x-amz-server-side-encryption-context.

  • PUT Object – Wenn Sie Daten über die PUT-API hochladen, können Sie diese Anforderungs-Header angeben.

  • PUT Object – Copy – Wenn Sie ein Objekt kopieren, erhalten Sie ein Quell- und ein Zielobjekt. Wenn Sie SSE-KMS-Header mit der Operation COPY übergeben, werden sie nur auf das Zielobjekt angewendet. Beim Kopieren eines vorhandenen Objekts wird das Zielobjekt unabhängig davon, ob das Quellobjekt verschlüsselt ist, nicht verschlüsselt, es sei denn, Sie fordern die serverseitige Verschlüsselung explizit an.

  • POST Object – Wenn Sie eine POST-Operation für das Hochladen eines Objekts verwenden, geben Sie die Informationen in die Formularfelder und nicht in die Anforderungs-Header ein.

  • Initiieren eines mehrteiligen Uploads – Wenn Sie große Objekte über die API für mehrteilige Uploads hochladen, können Sie diese Header angeben. Sie geben diese Header in der Initiierungsanforderung an.

Die Antwort-Header der folgenden REST-APIs geben den Header x-amz-server-side-encryption zurück, wenn ein Objekt unter Verwendung der serverseitigen Verschlüsselung gespeichert wird.

Wichtig
  • Alle GET- und PUT-Anforderungen für ein Objekt, das durch AWS KMS geschützt wird, schlagen fehl, wenn Sie diese nicht mit Secure Sockets Language (SSL) oder Signature Version 4 erstellen.

  • Wenn Ihr Objekt SSE-KMS verwendet, dürfen Sie keine Verschlüsselungsanforderungs-Header für GET- und HEAD-Anforderungen senden. Andernfalls erhalten Sie den Fehler HTTP 400 BadRequest.

Verschlüsselungskontext (x-amz-server-side-encryption-context)

Wenn Sie x-amz-server-side-encryption:aws:kms angeben, unterstützt die Amazon S3-API einen Verschlüsselungskontext mit dem Header x-amz-server-side-encryption-context. Ein Verschlüsselungskontext ist ein optionaler Satz von Schlüssel-Wert-Paaren, die zusätzliche kontextbezogene Informationen zu den Daten enthalten können. Weitere Informationen zum Verschlüsselungskontext finden Sie unter AWS Key Management Service-Konzepte - Verschlüsselungskontext im AWS Key Management Service-Entwicklerhandbuch.

Der Verschlüsselungskontext kann ein beliebiger Wert sein, vorausgesetzt, der Header entspricht dem mit Base64-codierten JSON-Format. Da der Verschlüsselungskontext jedoch nicht verschlüsselt ist und protokolliert wird, wenn die AWS CloudTrail-Protokollierung aktiviert ist, sollte Ihr Verschlüsselungskontext keine sensiblen Informationen enthalten. Wir empfehlen zudem, dass Ihr Kontext die verschlüsselten oder entschlüsselten Daten beschreibt, damit Sie die von AWS KMS erstellten CloudTrail-Ereignisse besser verstehen.

Daher fügt Amazon S3 möglicherweise einen vordefinierten Schlüssel aws:s3:arn mit einem Wert an, der gleich dem Amazon-Ressourcennamen (ARN) des Objekts für den von Ihnen bereitgestellten Verschlüsselungskontext ist. Dies geschieht nur, wenn sich der Schlüssel aws:s3:arn noch nicht im von Ihnen bereitgestellten Verschlüsselungskontext befindet. In diesem Fall wird dieser vordefinierte Schlüssel angefügt, wenn Amazon S3 Ihre Put-Anforderungen verarbeitet. Wenn sich dieser aws:s3:arn-Schlüssel bereits in Ihrem Verschlüsselungskontext befindet, wird der Schlüssel Ihrem Verschlüsselungskontext nicht noch einmal hinzugefügt.

Wenn Sie diesen vordefinierten Schlüssel als Teil Ihres Verschlüsselungskontexts verwenden, können Sie relevante Anforderungen in CloudTrail verfolgen. So können Sie stets sehen, welcher ARN des Amazon S3-Objekts mit welchem Verschlüsselungsschlüssel verwendet wurde. Wenn dieser vordefinierte Schlüssel Teil Ihres Verschlüsselungskontexts ist, wird darüber hinaus sichergestellt, dass der Verschlüsselungskontext zwischen verschiedenen Amazon S3-Objekten nicht identisch ist. Dies bedeutet eine zusätzliche Sicherheit für Ihre Objekte. Ihr vollständiger Verschlüsselungskontext wird überprüft, ob der Wert gleich dem Objekt-ARN ist.

AWS KMS-Schlüssel-ID (x-amz-server-side-encryption-aws-kms-key-id)

Sie können den Header x-amz-server-side-encryption-aws-kms-key-id verwenden, um die ID des vom Kunden verwalteten CMK anzugeben, der zum Schutz der Daten verwendet wird. Wenn Sie x-amz-server-side-encryption:aws:kms, jedoch nicht x-amz-server-side-encryption-aws-kms-key-id angeben, verwendet Amazon S3 den von AWS verwalteten CMK in AWS KMS, um die Daten zu schützen. Wenn Sie einen vom Kunden verwalteten AWS KMS-CMK verwenden möchten, müssen Sie den x-amz-server-side-encryption-aws-kms-key-id des vom Kunden verwalteten CMK angeben.

Wichtig

Wenn Sie einen AWS KMS-CMK für serverseitige Verschlüsselung in Amazon S3 verwenden, müssen Sie einen symmetrischen CMK wählen. Amazon S3 unterstützt nur symmetrische CMKs und keine asymmetrischen CMKs. Weitere Informationen finden Sie unter Verwenden von symmetrischen und asymmetrischen Schlüsseln im AWS Key Management Service-Entwicklerhandbuch.