Angeben der serverseitigen Verschlüsselung mit AWS KMS (SSE-KMS) für neue Objekt-Uploads in Verzeichnis-Buckets - Amazon Simple Storage Service

Angeben der serverseitigen Verschlüsselung mit AWS KMS (SSE-KMS) für neue Objekt-Uploads in Verzeichnis-Buckets

Um Ihre Daten für Verzeichnis-Buckets mit serverseitiger Verschlüsselung zu verschlüsseln, können Sie entweder die serverseitige Verschlüsselung mit von Amazon S3 verwalteten Schlüsseln (SSE-S3) (Standard) oder die serverseitige Verschlüsselung mit AWS Key Management Service (AWS KMS)-Schlüsseln (SSE-KMS) verwenden. Wir empfehlen, dass die Standardverschlüsselung des Buckets die gewünschte Verschlüsselungskonfiguration verwendet und dass Sie die Standardverschlüsselung des Buckets in Ihren CreateSession-Anforderungen oder PUT-Objektanforderungen nicht überschreiben. Anschließend werden neue Objekte automatisch mit den gewünschten Verschlüsselungseinstellungen verschlüsselt. Weitere Informationen zum Überschreibungsverhalten der Verschlüsselung in Verzeichnis-Buckets finden Sie unter Festlegen einer serverseitigen Verschlüsselung mit AWS KMS für neue Objekt-Uploads.

Für alle Amazon-S3-Buckets ist die Verschlüsselung standardmäßig konfiguriert und alle neuen Objekte, die in einen S3-Bucket hochgeladen werden, werden im Ruhezustand automatisch verschlüsselt. Die serverseitige Verschlüsselung mit von Amazon S3 verwalteten Schlüsseln (SSE-S3) ist die Standardverschlüsselungskonfiguration für jeden Bucket in Amazon S3. Wenn Sie einen anderen Verschlüsselungstyp für einen Verzeichnis-Bucket angeben möchten, können Sie die serverseitige Verschlüsselung mit AWS Key Management Service (AWS KMS)-Schlüsseln (SSE-KMS) verwenden. Um neue Objekte in einem Verzeichnis-Bucket mit SSE-KMS zu verschlüsseln, müssen Sie SSE-KMS als Standardverschlüsselungskonfiguration des Verzeichnis-Buckets mit einem KMS-Schlüssel (also einem vom Kunden verwalteten Schlüssel) angeben. Der Von AWS verwalteter Schlüssel (aws/s3) wird nicht unterstützt. Ihre SSE-KMS-Konfiguration kann für die gesamte Lebensdauer des Buckets nur einen vom Kunden verwalteten Schlüssel pro Verzeichnis-Bucket unterstützen. Nachdem Sie einen vom Kunden verwalteten Schlüssel für SSE-KMS angegeben haben, können Sie den vom Kunden verwalteten Schlüssel für die SSE-KMS-Konfiguration des Buckets nicht mehr überschreiben. Wenn Sie dann serverseitige Verschlüsselungseinstellungen für neue Objekte mit SSE-KMS angeben, müssen Sie sicherstellen, dass der Verschlüsselungsschlüssel derselbe vom Kunden verwaltete Schlüssel ist, den Sie für die Standardverschlüsselungskonfiguration des Verzeichnis-Buckets angegeben haben. Um einen neuen, vom Kunden verwalteten Schlüssel für Ihre Daten zu verwenden, empfehlen wir, Ihre vorhandenen Objekte mit einem neuen vom Kunden verwalteten Schlüssel in einen neuen Verzeichnis-Bucket zu kopieren.

Sie können die Verschlüsselung anwenden, wenn Sie entweder ein neues Objekt hochladen oder ein vorhandenes Objekt kopieren. Wenn Sie die Verschlüsselung eines Objekts ändern, wird ein neues Objekt erstellt, um das alte zu ersetzen.

Sie können SSE-KMS über die REST-API-Operationen, AWS-SDKs und die AWS Command Line Interface (AWS CLI) angeben.

Anmerkung
  • Bei Verzeichnis-Buckets ist das Überschreibungsverhalten der Verschlüsselung wie folgt:

    • Wenn Sie CreateSession mit der REST-API verwenden, um zonale Endpunkt-API-Anforderungen (außer CopyObject und UploadPartCopy) zu authentifizieren und zu autorisieren, können Sie die Verschlüsselungseinstellungen nur dann zu SSE-S3 oder SSE-KMS überschreiben, wenn Sie zuvor die Standardverschlüsselung des Buckets mit SSE-KMS festgelegt haben.

    • Wenn Sie CreateSession mit dem AWS CLI oder den AWS SDKs verwenden, um Zonal Endpunkt-API-Anforderungen außer CopyObject und UploadPartCopy zu authentifizieren und zu autorisieren, können Sie die Verschlüsselungseinstellungen nicht überschreiben.

    • Wenn Sie CopyObject-Anforderungen stellen, können Sie die Verschlüsselungseinstellungen für SSE-S3 oder SSE-KMS nur dann überschreiben, wenn Sie zuvor die Standardverschlüsselung des Buckets mit SSE-KMS angegeben haben. Wenn Sie UploadPartCopy-Anforderungen stellen, können Sie die Verschlüsselungseinstellungen nicht überschreiben.

  • Sie können multi-regionale AWS KMS keys in Amazon S3 verwenden. Amazon S3 behandelt jedoch derzeit Multi-Regions-Schlüssel wie Einzel-Regions-Schlüssel und verwendet nicht die Multi-Regions-Funktionen des Schlüssels. Weitere Informationen finden Sie unter Using multi-Region keys (Verwenden von Multi-Regions-Zugriffpunkt-Schlüsseln) im AWS Key Management Service-Entwicklerhandbuch.

  • Wenn Sie einen KMS-Schlüssel verwenden möchten, der sich im Besitz eines anderen Kontos befindet, müssen Sie über die Berechtigung zum Verwenden des Schlüssels verfügen. Weitere Informationen zu kontoübergreifenden Berechtigungen für KMS-Schlüssel finden Sie unter Erstellen von KMS-Schlüsseln, die von anderen Konten verwendet werden können im Entwicklerhandbuch zu AWS Key Management Service.

Anmerkung

Pro Verzeichnis-Bucket wird für die gesamte Lebensdauer des Buckets nur ein vom Kunden verwalteter Schlüssel unterstützt. Der Von AWS verwalteter Schlüssel (aws/s3) wird nicht unterstützt. Nachdem Sie SSE-KMS als Standardverschlüsselungskonfiguration Ihres Buckets mit einem vom Kunden verwalteten Schlüssel angegeben haben, können Sie den vom Kunden verwalteten Schlüssel für die SSE-KMS-Konfiguration des Buckets nicht mehr ändern.

Für Zonale Endpunkt-API-Vorgänge (auf Objektebene) mit Ausnahme von CopyObject und UploadPartCopy authentifizieren und autorisieren Sie Anfragen über CreateSession, um die Latenzzeit zu verringern. Wir empfehlen, dass die Standardverschlüsselung des Buckets die gewünschten Verschlüsselungskonfigurationen verwendet und dass Sie die Standardverschlüsselung des Buckets in Ihren CreateSession-Anforderungen oder PUT-Objektanforderungen nicht überschreiben. Anschließend werden neue Objekte automatisch mit den gewünschten Verschlüsselungseinstellungen verschlüsselt. Um neue Objekte in einem Verzeichnis-Bucket mit SSE-KMS zu verschlüsseln, müssen Sie SSE-KMS als Standardverschlüsselungskonfiguration des Verzeichnis-Buckets mit einem KMS-Schlüssel (also einem vom Kunden verwalteten Schlüssel) angeben. Wenn dann eine Sitzung für API-Operationen an zonalen Endpunkten erstellt wird, werden neue Objekte während der Sitzung automatisch mit SSE-KMS- und S3-Bucket -Schlüsseln ver- und entschlüsselt. Weitere Informationen zum Überschreibungsverhalten der Verschlüsselung in Verzeichnis-Buckets finden Sie unter Festlegen einer serverseitigen Verschlüsselung mit AWS KMS für neue Objekt-Uploads.

In den Zonal-Endpunkt-API-Aufrufen (außer CopyObject und UploadPartCopy) unter Verwendung der REST-API können Sie die Werte der Verschlüsselungseinstellungen (x-amz-server-side-encryption, x-amz-server-side-encryption-aws-kms-key-id, x-amz-server-side-encryption-contextund x-amz-server-side-encryption-bucket-key-enabled) aus der CreateSession -Anfrage nicht überschreiben. Sie müssen diese Werte für die Verschlüsselungseinstellungen nicht explizit in API-Aufrufen für zonale Endpunkte angeben. Amazon S3 verwendet die Werte der Verschlüsselungseinstellungen aus der CreateSession-Anforderung, um neue Objekte im Verzeichnis-Bucket zu schützen.

Anmerkung

Wenn Sie die AWS CLI oder die AWS-SDKs verwenden, wird das Sitzungs-Token in CreateSession automatisch aktualisiert, um Serviceunterbrechungen zu vermeiden, wenn eine Sitzung abläuft. Die AWS CLI- oder die AWS-SDKs verwenden die Standardverschlüsselungskonfiguration des Buckets für die CreateSession-Anforderung. Das Überschreiben der Werte der Verschlüsselungseinstellungen in der CreateSession-Anforderung wird nicht unterstützt. Außerdem wird es in den API-Aufrufen für zonale Endpunkte (außer CopyObject und UploadPartCopy) nicht unterstützt, die Werte der Verschlüsselungseinstellungen aus der CreateSession-Anforderung zu überschreiben.

Um für CopyObject neue Objektkopien in einem Verzeichnis-Bucket mit SSE-KMS zu verschlüsseln, müssen Sie SSE-KMS als Standardverschlüsselungskonfiguration des Verzeichnis-Buckets mit einem KMS-Schlüssel (also einem vom Kunden verwalteten Schlüssel) angeben. Wenn Sie dann serverseitige Verschlüsselungseinstellungen für neue Objektkopien mit SSE-KMS angeben, müssen Sie sicherstellen, dass der Verschlüsselungsschlüssel derselbe vom Kunden verwaltete Schlüssel ist, den Sie für die Standardverschlüsselungskonfiguration des Verzeichnis-Buckets angegeben haben. Um für UploadPartCopy neue Objektteilkopien in einem Verzeichnis-Bucket mit SSE-KMS zu verschlüsseln, müssen Sie SSE-KMS als Standardverschlüsselungskonfiguration des Verzeichnis-Buckets mit einem KMS-Schlüssel (also einem vom Kunden verwalteten Schlüssel) angeben. Sie können keine serverseitigen Verschlüsselungseinstellungen für neue Objektteilkopien mit SSE-KMS in den UploadPartCopy-Anforderungs-Headern angeben. Außerdem müssen die Verschlüsselungseinstellungen, die Sie in der CreateMultipartUpload-Anforderung angeben, der Standardverschlüsselungskonfiguration des Ziel-Buckets entsprechen.

Amazon-S3-REST-API-Vorgänge, die SSE-KMS unterstützen

Die folgenden REST-API-Operationen 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.

  • CreateSession – Wenn Sie API-Operationen für zonale Endpunkte (Objektebene) verwenden (außer CopyObject und UploadPartCopy), können Sie diese Anforderungs-Header angeben.

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

  • CopyObject – Wenn Sie ein Objekt kopieren, erhalten Sie ein Quell- und ein Zielobjekt. Wenn Sie SSE-KMS-Header mit der CopyObject-Operation übergeben, werden sie nur auf das Zielobjekt angewendet.

  • CreateMultipartUpload – Wenn Sie große Objekte über die API-Operation für mehrteilige Uploads hochladen, können Sie diese Header angeben. Sie geben diese Header in der CreateMultipartUpload-Anforderung an.

Die Antwort-Header der folgenden REST-API-Operationen 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 durch AWS KMS geschütztes Objekt schlagen fehl, wenn diese Anforderungen nicht über Transport Layer Security (TLS) oder Signature Version 4 gestellt werden.

  • 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 optional das Bereitstellen eines expliziten Verschlüsselungskontexts mit dem x-amz-server-side-encryption-context-Header. Für Verzeichnis-Buckets ist ein Verschlüsselungskontext ein Satz von Schlüssel-Wert-Paaren, die kontextbezogene Informationen zu den Daten enthalten. Der Wert muss dem Standard-Verschlüsselungskontext entsprechen – dem Amazon-Ressourcennamen (ARN) für den Bucket. Ein zusätzlicher Wert für den Verschlüsselungskontext wird nicht unterstützt.

Weitere Informationen zum Verschlüsselungskontext in Verzeichnis-Buckets finden Sie unter Verschlüsselungskontext. Allgemeine Informationen zum Verschlüsselungs-Kontext finden Sie unter AWS Key Management Service Concepts – Encryption Context (Konzepte – Verschlüsselungs-Kontext) im AWS Key Management Service-Entwicklerhandbuch.

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 Schlüssels anzugeben, der zum Schutz der Daten verwendet wird.

Ihre SSE-KMS-Konfiguration kann für die gesamte Lebensdauer des Buckets nur einen vom Kunden verwalteten Schlüssel pro Verzeichnis-Bucket unterstützen. Der Von AWS verwalteter Schlüssel (aws/s3) wird nicht unterstützt. Nachdem Sie einen vom Kunden verwalteten Schlüssel für SSE-KMS angegeben haben, können Sie den vom Kunden verwalteten Schlüssel für die SSE-KMS-Konfiguration des Buckets nicht mehr überschreiben.

Sie können den vom Kunden verwalteten Schlüssel, den Sie für die SSE-KMS-Konfiguration des Buckets angegeben haben, wie folgt identifizieren:

  • Sie stellen eine HeadObject API-Operationsanforderung, um den Wert von x-amz-server-side-encryption-aws-kms-key-id in Ihrer Antwort zu ermitteln.

Um einen neuen, vom Kunden verwalteten Schlüssel für Ihre Daten zu verwenden, empfehlen wir, Ihre vorhandenen Objekte mit einem neuen vom Kunden verwalteten Schlüssel in einen neuen Verzeichnis-Bucket zu kopieren.

Weitere Informationen zum Verschlüsselungskontext in Verzeichnis-Buckets finden Sie unter AWS KMS keys.

S3 Bucket Keys (x-amz-server-side-encryption-aws-bucket-key-enabled)

S3 Bucket Keys sind immer für GET- und PUT-Vorgänge in einem Verzeichnis-Bucket aktiviert und können nicht deaktiviert werden. S3 Bucket Keys werden nicht unterstützt, wenn Sie SSE-KMS-verschlüsselte Objekte von Allzweck-Buckets zu Verzeichnis-Buckets, von Verzeichnis-Buckets zu Allzweck-Buckets oder zwischen Verzeichnis-Buckets über CopyObject, UploadPartCopy, die Copy-Operation in Batch Operations oder die import-Aufgaben kopieren. In diesem Fall ruft Amazon S3 AWS KMS jedes Mal auf, wenn eine Kopieranforderung für ein mit KMS verschlüsseltes Objekt ausgeführt wird. Weitere Informationen zu den S3-Bucket-Schlüsseln in Verzeichnis-Buckets finden Sie unter Verschlüsselungskontext.

Anmerkung

Wenn Sie die AWS CLI-SDKs verwenden, wird das Sitzungs-Token in CreateSession automatisch aktualisiert, um Serviceunterbrechungen zu vermeiden, wenn eine Sitzung abläuft. Das Überschreiben der Werte der Verschlüsselungseinstellungen in der CreateSession-Anforderung wird nicht unterstützt. Außerdem wird es in den API-Aufrufen für zonale Endpunkte (außer CopyObject und UploadPartCopy) nicht unterstützt, die Werte der Verschlüsselungseinstellungen aus der CreateSession-Anforderung zu überschreiben.

Um neue Objekte in einem Verzeichnis-Bucket mit SSE-KMS zu verschlüsseln, müssen Sie SSE-KMS als Standardverschlüsselungskonfiguration des Verzeichnis-Buckets mit einem KMS-Schlüssel (also einem vom Kunden verwalteten Schlüssel) angeben. Wenn dann eine Sitzung für API-Operationen an zonalen Endpunkten erstellt wird, werden neue Objekte während der Sitzung automatisch mit SSE-KMS- und S3-Bucket -Schlüsseln ver- und entschlüsselt.

Um die folgenden AWS CLI-Beispielbefehle zu verwenden, ersetzen Sie user input placeholders durch eigene Daten.

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 KMS-Schlüsseln angeben. Verwenden Sie dazu den Befehl put-bucket-encryption, um die Standardverschlüsselungskonfiguration des Verzeichnis-Buckets auf SSE-KMS (aws:kms) festzulegen. Fügen Sie der Anforderung insbesondere den --server-side-encryption aws:kms-Header hinzu. Verwenden Sie die --ssekms-key-id example-key-id, um Ihren kundenverwalteten AWS KMS-Schlüssel hinzuzufügen, den Sie erstellt haben. Wenn Sie --server-side-encryption aws:kms angeben, müssen Sie eine AWS KMS-Schlüssel-ID Ihres vom Kunden verwalteten Schlüssels angeben. Directory-Buckets verwenden keinen von AWS verwalteten Schlüssel. Ein Beispielbefehl finden Sie unter Verwendung der AWS CLI.

Wenn Sie dann ein neues Objekt mit dem folgenden Befehl hochladen, verwendet Amazon S3 die Bucket-Einstellungen für die Standardverschlüsselung, um das Objekt standardmäßig zu verschlüsseln.

aws s3api put-object --bucket bucket-base-name--zone-id--x-s3 --key example-object-key --body filepath

Sie müssen Ihren API-Operationen für zonale Endpunkte -\-bucket-key-enabled nicht explizit hinzufügen. S3 Bucket Keys sind immer für GET- und PUT-Vorgänge in einem Verzeichnis-Bucket aktiviert und können nicht deaktiviert werden. S3 Bucket Keys werden nicht unterstützt, wenn Sie SSE-KMS-verschlüsselte Objekte von Allzweck-Buckets zu Verzeichnis-Buckets, von Verzeichnis-Buckets zu Allzweck-Buckets oder zwischen Verzeichnis-Buckets über CopyObject, UploadPartCopy, die Copy-Operation in Batch Operations oder die import-Aufgaben kopieren. In diesem Fall ruft Amazon S3 AWS KMS jedes Mal auf, wenn eine Kopieranforderung für ein mit KMS verschlüsseltes Objekt ausgeführt wird.

Sie können ein Objekt aus einem Quell-Bucket (z. B. einem Allzweck-Bucket) in einen neuen Bucket (z. B. einen Verzeichnis-Bucket) kopieren und die SSE-KMS-Verschlüsselung für die Zielobjekte verwenden. Verwenden Sie dazu den Befehl put-bucket-encryption, um die Standardverschlüsselungskonfiguration des Ziel-Buckets (z. B. eines Verzeichnis-Buckets) auf SSE-KMS (aws:kms) festzulegen. Ein Beispielbefehl finden Sie unter Verwendung der AWS CLI. Wenn Sie dann ein Objekt mit dem folgenden Befehl kopieren, verwendet Amazon S3 die Bucket-Einstellungen für die Standardverschlüsselung, um das Objekt standardmäßig zu verschlüsseln.

aws s3api copy-object --copy-source amzn-s3-demo-bucket/example-object-key --bucket bucket-base-name--zone-id--x-s3 --key example-object-key

Bei Verwendung von AWS-SDKs können Sie Amazon S3 anweisen, AWS KMS keys für die serverseitige Verschlüsselung zu verwenden. Die folgenden Beispiele zeigen, wie SSE-KMS mit den AWS SDKs für Java und .NET verwendet wird. Weitere Informationen über andere SDKs finden Sie unter Beispiel-Code und Bibliotheken im AWS-Entwicklerzentrum.

Anmerkung

Wenn Sie die AWS-SDKs verwenden, wird das Sitzungs-Token in CreateSession automatisch aktualisiert, um Serviceunterbrechungen zu vermeiden, wenn eine Sitzung abläuft. Das Überschreiben der Werte der Verschlüsselungseinstellungen in der CreateSession-Anforderung wird nicht unterstützt. Außerdem wird es in den API-Aufrufen für zonale Endpunkte (außer CopyObject und UploadPartCopy) nicht unterstützt, die Werte der Verschlüsselungseinstellungen aus der CreateSession-Anforderung zu überschreiben.

Um neue Objekte in einem Verzeichnis-Bucket mit SSE-KMS zu verschlüsseln, müssen Sie SSE-KMS als Standardverschlüsselungskonfiguration des Verzeichnis-Buckets mit einem KMS-Schlüssel (also einem vom Kunden verwalteten Schlüssel) angeben. Wenn dann eine Sitzung für API-Operationen an zonalen Endpunkten erstellt wird, werden neue Objekte während der Sitzung automatisch mit SSE-KMS- und S3-Bucket -Schlüsseln ver- und entschlüsselt.

Weitere Informationen zur Verwendung von AWS-SDKs zum Festlegen der Standardverschlüsselungskonfiguration eines Verzeichnis-Buckets auf SSE-KMS finden Sie unter Verwenden der AWS SDKs.

Wichtig

Wenn Sie einen AWS KMS key für serverseitige Verschlüsselung in Amazon S3 verwenden, müssen Sie einen symmetrischen KMS-Verschlüsselungsschlüssel wählen. Amazon S3 unterstützt nur KMS-Schlüssel mit symmetrischer Verschlüsselung. Weitere Informationen zu diesen Schlüsseln finden Sie unter Symmetrische KMS-Verschlüsselungsschlüssel im Entwicklerhandbuch für AWS Key Management Service.

Weitere Informationen zum Erstellen von kundenverwalteten Schlüsseln finden Sie unter Programmieren der AWS KMS-API im AWS Key Management Service-Entwicklerhandbuch.