Schutz von Daten durch serverseitige Verschlüsselung mit CMKs, die in AWS Key Management Service (SSE-KMS) gespeichert sind - Amazon Simple Storage Service

Schutz von Daten durch serverseitige Verschlüsselung mit CMKs, die in AWS Key Management Service (SSE-KMS) gespeichert sind

Die serverseitige Verschlüsselung ist die Verschlüsselung von Daten am Ziel durch die Anwendung oder den Service, die oder der sie empfängt. AWS Key Management Service (AWS KMS) ist ein Service, der sichere, hoch verfügbare Hard- und Software kombiniert, um ein für die Cloud skaliertes Schlüsselmanagementsystem bereitzustellen. Amazon S3 verwendet AWS KMS-.Kundenhauptschlüssel (Customer Master Keys, CMKs), um Ihre Amazon S3-Objekte zu verschlüsseln. AWS KMS verschlüsselt ausschließlich die Objektdaten. Objektmetadaten werden grundsätzlich nicht verschlüsselt.

Bei der Verwendung von CMKs können Sie mit AWS KMS über die AWS Management Console oder die AWS KMS APIs zentral CMKs erstellen, Richtlinien zur Kontrolle der Verwendungsmöglichkeiten von CMKs definieren und die Verwendung von CMKs prüfen, um nachzuweisen, dass sie korrekt verwendet werden. Sie können mit diesen CMKs Ihre Daten in Amazon S3-Buckets schützen. Wenn Sie die SSE-KMS-Verschlüsselung mit einem S3-Bucket verwenden, muss sich der AWS KMS-CMK in derselben Region wie der Bucket befinden.

Für die Verwendung von AWS KMS-CMKs fallen zusätzliche Kosten an. Weitere Informationen finden Sie unter AWS Key Management Service-Konzepte – Kundenhauptschlüssel (CMKs) und Preise für den AWS Key Management Service im AWS Key Management Service Developer Guide.

Anmerkung

Sie benötigen die Berechtigung kms:Decrypt, wenn Sie ein mit einem AWS KMS-CMK verschlüsseltes Amazon S3-Objekt hoch- oder herunterladen. Sie benötigen diese Berechtigung zusätzlich zu den Berechtigungen kms:ReEncrypt, kms:GenerateDataKey und kms:DescribeKey. Weitere Informationen finden Sie unter Fehler beim Hochladen einer großen Datei zu Amazon S3 mit Verschlüsselung über einen AWS KMS-CMK.

AWS-verwaltete CMKs und kundenverwaltete CMKs

Wenn Sie serverseitige Verschlüsselung mit AWS KMS (SSE-KMS) verwenden, können Sie den standardmäßigen AWS-verwalteten CMK verwenden oder einen kundenverwalteten CMK angeben, den Sie bereits erstellt haben.

Wenn Sie keinen kundenverwalteten CMK angeben, erstellt Amazon S3 automatisch einen AWS-verwalteten CMK in Ihrem AWS-Konto, wenn Sie ein mit SSE-KMS verschlüsseltes Objekt zum ersten Mal zu einem Bucket hinzufügen. Standardmäßig verwendet Amazon S3 dieses CMK für SSE-KMS.

Wenn Sie ein vom Kunden verwaltetes CMK für SSE-KMS verwenden möchten, können Sie das CMK erstellen, bevor Sie SSE-KMS konfigurieren. Wenn Sie dann SSE-KMS für Ihren Bucket konfigurieren, können Sie den vorhandenen vom Kunden verwalteten CMK angeben.

Durch die Erstellung eines eigenen kundenverwalteten CMK erhalten Sie mehr Flexibilität und Kontrolle über das CMK. Beispielsweise können Sie kundenverwaltete CMKs erstellen, drehen und deaktivieren. Sie können auch Zugriffskontrollen definieren und die vom Kunden verwalteten CMKs prüfen, mit denen Sie Ihre Daten schützen. Weitere Informationen über vom Kunden verwaltete und von AWS verwaltete CMKs finden Sie unter AWS KMS-Konzepte im AWS Key Management Service Developer Guide.

Wichtig

Wenn Sie in Amazon S3 einen AWS KMS-CMK für Server-seitige Verschlüsselung verwenden, müssen Sie einen symmetrischen CMK auswählen. Amazon S3 unterstützt ausschließlich symmetrische CMKs, asymmetrische CMKs dagegen nicht. Weitere Informationen finden Sie unter Verwenden von symmetrischen und asymmetrischen Schlüsseln im AWS Key Management Service-Entwicklerhandbuch.

AWS-Signaturversion 4

Wenn Sie Objekte hochladen oder auf Objekte zugreifen, die mit SSE-KMS verschlüsselt sind, müssen Sie AWS-Signaturversion 4 für zusätzliche Sicherheit verwenden. Weitere Informationen darüber, wie Sie dies mit einem AWS-SDK tun können, finden Sie unter Signaturversion in der Anforderungsauthentifizierung festlegen.

Wichtig

Alle GET- und PUT-Anforderungen für ein durch AWS KMS geschütztes Objekt schlagen fehl, wenn Sie nicht über SSL oder unter Verwendung von SigV4 erfolgen.

SSE-KMS-Highlights

Die Highlights von SSE-KMS sind wie folgt:

  • Sie können einen vom Kunden verwalteten CMK wählen, den Sie erstellen und verwalten, oder Sie können einen von AWS verwalteten CMK auswählen, den Amazon S3 in Ihrem AWS-Konto erstellt und für Sie verwaltet. Wie ein vom Kunden verwalteter CMK ist Ihr AWS-verwalteter CMK einzigartig für Ihr AWS-Konto und Ihre Region. Nur Amazon S3 hat die Berechtigung, diesen CMK in Ihrem Namen zu verwenden. Amazon S3 unterstützt nur symmetrische CMKs.

  • Über die AWS KMS-Konsole können Sie prüffähige vom Kunden verwaltete CMKs erstellen, rotieren und deaktivieren.

  • Das ETag in der Antwort ist nicht das MD5 der Objektdaten.

  • Die für die Verschlüsselung Ihrer Daten verwendeten Datenschlüssel sind ebenfalls verschlüsselt und werden zusammen mit den Daten gespeichert, die sie schützen.

  • Die Sicherheitskontrollen in AWS KMS tragen dazu bei, dass Sie Ihre Compliance-Anforderungen bezüglich der Verschlüsselung erfüllen.

Erzwingen serverseitiger Verschlüsselung

Um die serverseitige Verschlüsselung aller Objekte in einem bestimmten Amazon S3-Bucket anzufordern, können Sie eine Bucket-Richtlinie verwenden. Beispielsweise verweigert die folgende Bucket-Richtlinie jedem die s3:PutObject-Berechtigung zum Hochladen von Objekten, wenn die Anforderung nicht den x-amz-server-side-encryption-Header enthält, der eine serverseitige Verschlüsselung mit SSE-KMS anfordert.

{ "Version":"2012-10-17", "Id":"PutObjPolicy", "Statement":[{ "Sid":"DenyUnEncryptedObjectUploads", "Effect":"Deny", "Principal":"*", "Action":"s3:PutObject", "Resource":"arn:aws:s3:::YourBucket/*", "Condition":{ "StringNotEquals":{ "s3:x-amz-server-side-encryption":"aws:kms" } } } ] }

Um festzulegen, dass ein bestimmter AWS KMS-CMK verwendet werden muss, um die Objekte in einem Bucket zu verschlüsseln, können Sie den s3:x-amz-server-side-encryption-aws-kms-key-id-Bedingungsschlüssel verwenden. Um den AWS KMS-CMK festzulegen, müssen Sie einen Amazon-Ressourcennamen (ARN) verwenden, der im Format arn:aws:kms:region:acct-id:key/key-id" vorliegt.

Anmerkung

Wenn Sie ein Objekt hochladen, können Sie das AWS KMS-CMK über den x-amz-server-side-encryption-aws-kms-key-id-Header festlegen. Wenn der Header nicht in der Anforderung vorhanden ist, geht Amazon S3 von einem von AWS verwalteten CMK aus. Unabhängig davon muss die AWS KMS-Schlüssel-ID, die Amazon S3 für die Objektverschlüsselung verwendet, mit der AWS KMS-Schlüssel-ID in der Richtlinie übereinstimmen. Andernfalls verweigert Amazon S3 die Anforderung.

Die vollständige Liste der Amazon S3‐spezifischen Bedingungsschlüssel und weitere Informationen zur Angabe von Bedingungsschlüsseln finden Sie unter Amazon S3-Bedingungsschlüssel.

Verwenden von AWS Key Management Service in der Amazon S3-Konsole

Weitere Informationen zur Verwendung der Amazon S3-Konsole mit in AWS KMS gespeicherten CMKs finden Sie unter Wie füge ich eine Verschlüsselung zu einem S3-Objekt hinzu? im Konsolenbenutzerhandbuch für Amazon Simple Storage Service.

API-Unterstützung für AWS Key Management Service in Amazon S3

Um SSE-KMS in den REST-APIs der Objekterstellung anzufordern, verwenden Sie den x-amz-server-side-encryption-Header. Um die ID des AWS KMS-CMKs anzugeben, der für das Objekt verwendet wurde, verwenden Sie x-amz-server-side-encryption-aws-kms-key-id. Die Amazon S3-API unterstützt außerdem Verschlüsselungskontext, mit dem Header x-amz-server-side-encryption-context. Weitere Informationen finden Sie unter Angeben von AWS Key Management Service in Amazon S3 unter Verwendung der REST-API.

Die AWS-SDKs stellen außerdem Wrapper-APIs bereit, mit denen Sie SSE-KMS mit Amazon S3 anfordern können. Weitere Informationen finden Sie unter Festlegen des AWS Key Management Service in Amazon S3 mit den AWS-SDKs.