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 an ihrem Ziel durch die Anwendung oder den Service, der sie empfängt. AWS Key Management Service (AWS KMS) ist ein Service, der sichere, hochverfügbare Hard- und Software kombiniert, um ein für die Cloud skaliertes Schlüssel-Verwaltungssystem bereitzustellen. Amazon S3 verwendet AWS KMS-Kunden-Masterschlüssel (CMKs), um Ihre Amazon-S3-Objekte zu verschlüsseln. AWS KMS verschlüsselt nur 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 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 KMS-Konzepte – Kunden-Masterschlüssel (CMKs) im AWS Key Management Service-Entwicklerhandbuch und in den AWS KMS-Preisen.

Wichtig

Um ein mit einem AWS KMS-CMK verschlüsseltes Objekt auf Amazon S3 hochzuladen, benötigen Sie kms:Decrypt- und kms:GenerateDataKey-Berechtigungen für den Schlüssel. Um ein mit einem AWS KMS-CMK verschlüsseltes Objekt herunterzuladen, benötigen Sie kms:Decrypt-Berechtigungen. Informationen zu AWS KMS-Berechtigungen und mehrteiligen Uploads finden Sie unter API für mehrteilige Uploads und Berechtigungen.

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 vom Kunden verwalteten CMK angeben, erstellt Amazon S3 automatisch einen von AWS verwalteten CMK in Ihrem AWS-Konto , wenn Sie erstmals ein mit SSE-KMS verschlüsseltes Objekt zu einem Bucket hinzufügen. Standardmäßig verwendet Amazon S3 diesen CMK für SSE-KMS.

Wenn Sie einen vom Kunden verwalteten CMK für SSE-KMS verwenden möchten, können Sie den 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 vom Kunden verwalteten CMK erhalten Sie mehr Flexibilität und Kontrolle. 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 kundenverwaltete und AWS-verwaltete CMKs finden Sie unter AWS KMS concepts (KMS-Konzepte) im AWS Key Management Service-Entwicklerhandbuch.

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 Using Symmetric and Asymmetric Keys (Verwenden von symmetrischen und asymmetrischen Schlüsseln) im AWS Key Management Service-Benutzerhandbuch.

Amazon-S3-Bucket-Schlüssel

Wenn Sie serverseitige Verschlüsselung mit AWS KMS (SSE-KMS) konfigurieren, können Sie Ihren Bucket für die Verwendung von S3-Bucket-Schlüsseln für SSE-KMS konfigurieren. Dieser Schlüssel auf Bucket-Ebene für SSE-KMS kann Ihre KMS-Anforderungskosten um bis zu 99 Prozent reduzieren, indem der Anforderungsverkehr von Amazon S3 zu verringert wir AWS KMS.

Wenn Sie Ihren Bucket für die Verwendung von S3-Bucket-Schlüsseln für SSE-KMS bei neuen Objekten konfigurieren, generiert AWS KMS einen Schlüssel auf Bucket-Ebene, mit dem eindeutige Datenschlüssel für Objekte im Bucket erstellt werden. Dieser Bucket-Schlüssel wird für einen zeitlich begrenzten Zeitraum in Amazon S3 verwendet, wodurch sich für Amazon S3 die Notwendigkeit weiter reduziert, zur Durchführung von Verschlüsselungs-Operationen Anforderungen an AWS KMS zu stellen. Weitere Informationen zur Verwendung von S3-Bucket-Schlüsseln finden Sie unter Reduzieren des Preises von SSE-KMS mit Amazon-S3-Bucket-Schlüsseln.

AWS Signature Version 4

Wenn Sie Objekte hochladen oder auf Objekte zugreifen, die mit SSE-KMS verschlüsselt sind, müssen Sie AWS Signature Version 4 für zusätzliche Sicherheit verwenden. Weitere Informationen dazu, wie Sie dies mit einem AWS-SDK durchführen, finden Sie unter Angabe der Signature-Version in der Anforderungs-Authentifizierung.

Wichtig

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

SSE-KMS – Highlights

Die Highlights von SSE-KMS sind wie folgt:

  • Sie können einen kundenverwalteten CMK wählen, den Sie erstellen und verwalten, oder Sie können einen AWS-verwalteten CMK auswählen, den Amazon S3 in Ihrem AWS-Konto erstellt und für Sie verwaltet. Wie ein kundenverwalteter 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, die sie schützen, gespeichert.

  • 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 Anfrage nicht den x-amz-server-side-encryption-Header enthält, der eine serverseitige Verschlüsselung mit SSE-KMS anfordert.

{ "Version":"2012-10-17", "Id":"PutObjectPolicy", "Statement":[{ "Sid":"DenyUnEncryptedObjectUploads", "Effect":"Deny", "Principal":"*", "Action":"s3:PutObject", "Resource":"arn:aws:s3:::awsexamplebucket1/*", "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 in der Anfrage nicht vorhanden ist, geht Amazon S3 von dem 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 lehnt Amazon S3 die Anfrage ab.

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

Verschlüsselungskontext

Amazon S3 unterstützt 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 in Amazon S3 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.

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 erstellten CloudTrail-Ereignisse besser verstehe AWS KMS.

In Amazon S3 wird häufig der Objekt- oder Bucket-ARN (Amazon Resource Name, Amazon-Ressourcenname) als Verschlüsselungskontext verwendet. Wenn Sie SSE-KMS verwenden, ohne einen S3-Bucket-Schlüssel zu aktivieren, verwenden Sie den Objekt-ARN als Verschlüsselungskontext, beispielsweis, arn:aws:s3:::object_ARN. Wenn Sie dagegen SSE-KMS verwenden und einen S3-Bucket-Schlüssel aktivieren, verwenden Sie den Bucket-ARN für Ihren Verschlüsselungskontext, beispielsweis, arn:aws:s3:::bucket_ARN. Weitere Informationen zu S3-Bucket-Schlüsseln finden Sie unter Reduzieren des Preises von SSE-KMS mit Amazon-S3-Bucket-Schlüsseln.

Wenn sich der Schlüssel aws:s3:arn noch nicht im Verschlüsselungskontext befindet, kann Amazon S3 einen vordefinierten Schlüssel von aws:s3:arn an den von Ihnen bereitgestellten Verschlüsselungskontext anhängen. Amazon S3 hängt diesen vordefinierten Schlüssel an, wenn er Ihre Anforderungen verarbeitet. Wenn Sie SSE-KMS ohne einen S3-Bucket-Schlüssel verwenden, entspricht der Wert dem Objekt-ARN. Wenn Sie SSE-KMS mit einem aktivierten S3-Bucket-Schlüssel verwenden, entspricht der Wert dem Bucket-ARN.

Sie können diesen vordefinierten Schlüssel verwenden, um relevante Anforderungen in CloudTrail zu verfolgen. So können Sie stets sehen, welcher Amazon-S3-ARN mit welchem Verschlüsselungsschlüssel verwendet wurde. Sie können CloudTrail-Protokolle verwenden, um sicherzustellen, dass der Verschlüsselungskontext bei verschiedenen Amazon-S3-Objekten und Buckets nicht identisch ist, was zusätzliche Sicherheit gewährt. Ihr vollständiger Verschlüsselungskontext wird daraufhin überprüft, ob der Wert mit dem Objekt- oder Bucket-ARN identisch ist.