Amazon Simple Storage Service
Entwicklerhandbuch (API-Version 2006-03-01)

Schutz von Daten durch serverseitige Verschlüsselung mit verwalteten AWS KMS–-Schlüsseln (SSE-KMS)

Bei der serverseitigen Verschlüsselung geht es um den Schutz von Daten im Ruhezustand. AWS Key Management Service (AWS KMS) ist ein Service, der eine sichere und hoch verfügbare Hard- und Software bereitstellt, um ein für die Cloud geeignetes Schlüsselverwaltungssystem bereitzustellen. AWS KMS verwendet Kundenmasterschlüssel (Customer Master Keys, CMKs) zum Verschlüsseln Ihrer Amazon S3-Objekte. Sie verwenden AWS KMS über AWS Management Console oder über AWS KMS-APIs, um Verschlüsselungsschlüssel zentral zu erstellen, die Richtlinien für die Verwendung der Schlüssel festzulegen und die Schlüsselnutzung zu überprüfen, um sicherzustellen, dass sie korrekt verwendet werden. Diese Schlüssel können Sie verwenden, um Ihre Daten in Amazon S3-Buckets hochzuladen.

Wenn Sie einem Bucket in einer Region zum ersten Mal ein mit SSE-KMS verschlüsseltes Objekt hinzufügen, wird automatisch ein Standard-CMK für Sie erstellt. Dieser Schlüssel wird für die SSE-KMS-Verschlüsselung verwendet, es sei denn, Sie wählen einen CMK aus, den Sie separat mithilfe von AWS Key Management Service erstellt haben. Die Erstellung eines eigenen CMK gewährt Ihnen größere Flexibilität, einschließlich der Möglichkeit, Zugriffssteuerelemente zu erstellen, zu rotieren, zu deaktivieren und zu definieren sowie die Verschlüsselungsschlüssel, mit denen die Daten geschützt werden, zu prüfen.

Weitere Informationen finden Sie unter Was ist AWS Key Management Service? im AWS Key Management Service Developer Guide. Wenn Sie AWS KMS verwenden, entstehen zusätzlichen Gebühren für die Verwendung von AWS-KMS-Schlüsseln. Weitere Informationen finden Sie unter AWS Key Management Service-Preise.

Anmerkung

Wenn Sie mit SSE-KMS verschlüsselte Objekte hochladen oder darauf zugreifen, benötigen Sie AWS Signature Version 4 für eine zusätzliche Sicherheit. Weitere Informationen zur Ausführung über einen AWS SDK finden Sie unter Angeben der Signaturversion bei der Anfrageauthentifizierung.

Die wichtigsten Punkte von SSE-KMS sind:

  • Sie können Verschlüsselungsschlüssel selbst erstellen und verwalten, oder Ihren Standardschlüssel verwenden, der speziell für einen Kunden abhängig vom Service und von der Region erstellt wurde.

  • 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.

  • Von der AWS KMS-Konsole aus können überprüfbare Masterschlüssel erstellt, rotiert und deaktiviert werden.

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

Amazon S3 unterstützt Bucket-Richtlinien, die Sie verwenden können, wenn Sie eine serverseitige Verschlüsselung für alle in Ihrem Bucket gespeicherten Objekte benötigen. 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":"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" } } } ] }

Amazon S3 unterstützt darüber hinaus den Bedingungsschlüssel s3:x-amz-server-side-encryption-aws-kms-key-id, den Sie verwenden können, um einen spezifischen KMS-Schlüssel für die Objektverschlüsselung anzufordern. Der von Ihnen in der Richtlinie angegebene KMS-Schlüssel muss das Format "arn:aws:kms:region:acct-id:key/key-id" " haben.

Anmerkung

Beim Hochladen eines Objekts können Sie den KMS-Schlüssel mit dem x-amz-server-side-encryption-aws-kms-key-id-Header angeben. Wenn der -Header in der Anforderung fehlt, geht Amazon S3 davon aus, dass der KMS-Standardschlüssel verwendet werden soll. Unabhängig davon muss die KMS-Schlüssel-ID, die Amazon S3 für die Objektverschlüsselung verwendet, mit der KMS-Schlüssel-ID in der Richtlinie übereinstimmen. Andernfalls lehnt Amazon S3 die Anfrage ab.

Wichtig

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

SSE-KMS verschlüsselt nur die Objektdaten. Objektmetadaten werden grundsätzlich nicht verschlüsselt.

Verwendung von AWS Key Management Service in der Amazon S3 Management Console

Weitere Informationen zur Verwendung von verwalteten KMS-Verschlüsselungsschlüsseln in der Amazon S3 Management Console finden Sie unter Hochladen von S3-Objekten im Amazon Simple Storage Service-Benutzerhandbuch.

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

Die REST APIs zur Objekterstellung (siehe Angeben von AWS Key Management Service in Amazon S3 unter Verwendung der REST-API) stellen einen Anfrage-Header bereit, x-amz-server-side-encryption, den Sie verwenden können, um SSE-KMS mit dem Wert aws:kms anzufordern. Darüber hinaus gibt x-amz-server-side-encryption-aws-kms-key-id die ID des AWS KMS-Masterverschlüsselungsschlüssels an, der für das Objekt verwendet wurde. Die Amazon S3-API unterstützt außerdem Verschlüsselungskontext, mit dem Header x-amz-server-side-encryption-context.

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. Ihr Kontext sollte darüber hinaus die Daten beschreiben, die verschlüsselt oder entschlüsselt werden, damit Sie die von AWS KMS generierten CloudTrail-Ereignisse besser verstehen. Weitere Informationen finden Sie unter Verschlüsselungskontext im AWS Key Management Service Developer Guide.

Außerdem kann Amazon S3 einen vordefinierten Schlüssel von aws:s3:arn mit dem Wert des Objekt-ARN für den von Ihnen bereitgestellten Verschlüsselungskontext bereitstellen. Das passiert nur, wenn der Schlüssel aws:s3:arn nicht bereits in dem von Ihnen angegebenen Verschlüsselungskontext enthalten ist. In diesem Fall wird dieser vordefinierte Schlüssel angehängt, wenn Amazon S3 Ihre Put-Anfragen verarbeitet. Wenn dieser aws:s3:arn-Schlüssel bereits in Ihrem Verschlüsselungskontext enthalten ist, wird der Schlüssel Ihrem Verschlüsselungskontext nicht noch einmal hinzugefügt.

Wenn dieser vordefinierte Schlüssel Teil Ihres Verschlüsselungskontexts ist, können Sie entsprechende CloudTrail-Anfragen nachverfolgen. Sie können also immer erkennen, welcher S3 Objekt-ARN für welchen Verschlüsselungsschlüssel verwendet wurde. Wenn dieser vordefinierte Schlüssel Teil Ihres Verschlüsselungskontexts ist, ist darüber hinaus garantiert, dass der Verschlüsselungskontext nicht identisch zwischen verschiedenen S3-Objekten ist, wodurch sich eine zusätzliche Sicherheit für Ihre Objekte ergibt. Ihr vollständiger Verschlüsselungskontext wird überprüft, ob der Wert gleich dem Objekt-ARN ist.

Diese Anfrage-Header werden von den folgenden Amazon S3-APIs unterstützt.

  • PUT-Operation – Wenn Sie Daten mit der PUT API hochladen (siehe PUT Object), können Sie diese Anfrage-Header angeben.

  • Initiieren eines mehrteiligen Uploads – Diese Header können Sie angeben, wenn Sie große Objekte mithilfe der API für mehrteilige Uploads hochladen möchten. Sie geben diese Header in der Initiierungsanfrage an (siehe Initiieren eines mehrteiligen Uploads).

  • POST-Operation – Wenn Sie statt Anfrage-Headern eine POST-Operation für das Hochladen eines Objekts verwenden (siehe POST Object), geben Sie dieselben Informationen in die Formularfelder ein.

  • COPY-Operation – Wenn Sie ein Objekt kopieren (siehe PUT Object - Copy), erhalten Sie ein Quell- und ein Zielobjekt. Wenn Sie SSE-KMS-Header mit der COPY-Operation übergeben, werden sie nur auf das Zielobjekt angewendet.

Die AWS SDKs stellen außerdem Wrapper-APIs bereit, damit Sie eine SSE-KMS mit Amazon S3 anfordern können.