Verwenden serverseitiger Verschlüsselung mit AWS KMS -Schlüsseln (SSE-KMS) in Verzeichnis-Buckets - Amazon Simple Storage Service

Verwenden serverseitiger Verschlüsselung mit AWS KMS -Schlüsseln (SSE-KMS) in Verzeichnis-Buckets

Die Sicherheitskontrollen in AWS KMS tragen dazu bei, dass Sie Ihre Compliance-Anforderungen bezüglich der Verschlüsselung erfüllen. Sie können Verzeichnis-Buckets für die serverseitige Verschlüsselung mit AWS Key Management Service (AWS KMS)-Schlüsseln (SSE-KMS) konfigurieren und diese KMS-Schlüssel verwenden, um Ihre Daten in Amazon-S3-Verzeichnis-Buckets zu schützen. Weitere Informationen zu SSE-KMS finden Sie unter Verwenden serverseitiger Verschlüsselung mit AWS KMS-Schlüsseln (SSE-KMS).

Berechtigungen

Um ein mit einem AWS KMS key verschlüsseltes Objekt zu Amazon S3 hoch- oder von dort herunterzuladen, benötigen Sie die Berechtigungen kms:GenerateDataKey und kms:Decrypt für den Schlüssel. Weitere Informationen finden Sie unter Schlüssel-Benutzern die Verwendung eines KMS-Schlüssels für kryptografische Operationen gestatten im Entwicklerhandbuch zu AWS Key Management Service. Informationen zu AWS KMS-Berechtigungen, die für mehrteilige Uploads erforderlich sind, finden Sie unter API für mehrteilige Uploads und Berechtigungen.

Weitere Informationen zu KMS-Schlüsseln für SSE-KMS finden Sie unter Angeben der serverseitigen Verschlüsselung mit AWS KMS-(SSE-KMS).

AWS KMS keys

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.

Wenn Sie einen vom Kunden verwalteten AWS KMS-Schlüssel für die Verschlüsselung in Ihrem Verzeichnis-Bucket angeben, verwenden Sie nur die Schlüssel-ID oder den Schlüssel-ARN. Das Schlüsselaliasformat des KMS-Schlüssels wird nicht unterstützt.

Weitere Informationen zu KMS-Schlüsseln für SSE-KMS finden Sie unter AWS KMS keys.

Verwenden der SSE-KMS-Verschlüsselung für kontoübergreifende Vorgänge

Beachten Sie Folgendes, wenn Sie kontoübergreifende Operationen in Verzeichnis-Buckets verschlüsseln:

  • Wenn Sie kontoübergreifenden Zugriff auf Ihre S3-Objekte gewähren möchten, können Sie eine Richtlinie konfigurieren, die einen vom Kunden verwalteten Schlüssel vorsieht, um den Zugriff von einem anderen Konto aus zu ermöglichen.

  • Um einen vom Kunden verwalteten Schlüssel anzugeben, müssen Sie einen vollqualifizierten KMS-Schlüssel-ARN verwenden.

Amazon-S3-Bucket-Schlüssel

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.

Für Zonale Endpunkt-API-Vorgänge (auf Objektebene) mit Ausnahme von CopyObject und UploadPartCopy erfolgt die Authentifizierung und Autorisierung von Anfragen über CreateSession, um die Latenzzeit zu verringern. 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. 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.

Bucket-Schlüssel werden für einen zeitlich begrenzten Zeitraum innerhalb von Amazon S3 verwendet, wodurch Amazon S3 keine Anforderungen an AWS KMS stellen muss, um Verschlüsselungsvorgänge abzuschließen. Weitere Informationen zur Verwendung von S3-Bucket-Schlüsseln finden Sie unter Amazon-S3-Bucket-Schlüssel und Reduzieren des Preises von SSE-KMS mit Amazon-S3-Bucket-Schlüsseln.

SSE-KMS erforderlich

Um SSE-KMS für alle Objekte in einem bestimmten Verzeichnis-Bucket zu erzwingen, können Sie eine Bucket-Richtlinie verwenden. Wenn Sie beispielsweise die CreateSession-API-Operation verwenden, um die Berechtigung zum Hochladen eines neuen Objekts (PutObject, CopyObject undCreateMultipartUpload) zu erteilen, verweigert die folgende Bucket-Richtlinie jedem die Upload-Objektberechtigung (s3express:CreateSession), wenn die CreateSession-Anforderung keinen x-amz-server-side-encryption-aws-kms-key-id-Header enthält, der SSE-KMS anfordert.

JSON
{ "Version":"2012-10-17", "Id":"UploadObjectPolicy", "Statement":[{ "Sid":"DenyObjectsThatAreNotSSEKMS", "Effect":"Deny", "Principal":"*", "Action":"s3express:CreateSession", "Resource":"arn:aws:s3express:us-east-1:111122223333:bucket/amzn-s3-demo-bucket--usw2-az1--x-s3", "Condition":{ "Null":{ "s3express:x-amz-server-side-encryption-aws-kms-key-id":"true" } } } ] }

Um festzulegen, dass ein bestimmter AWS KMS key verwendet werden muss, um die Objekte in einem Bucket zu verschlüsseln, können Sie den s3express:x-amz-server-side-encryption-aws-kms-key-id-Bedingungsschlüssel verwenden. Zum Festlegen des KMS-Schlüssels müssen Sie einen Schlüssel-Amazon-Ressourcennamen (ARN) im arn:aws:kms:region:acct-id:key/key-id-Format verwenden. AWS Identity and Access Management führt keine Validierung durch, wenn die Zeichenfolge für s3express:x-amz-server-side-encryption-aws-kms-key-id existiert. Die AWS KMS-Schlüssel-ID, die Amazon S3 für die Objektverschlüsselung verwendet, muss mit der AWS KMS-Schlüssel-ID in der Richtlinie übereinstimmen, andernfalls lehnt Amazon S3 die Anfrage ab.

Weitere Informationen zum Verwenden von SSE-KMS für das Hochladen neuer Objekte finden Sie unter. Angeben der serverseitigen Verschlüsselung mit AWS KMS (SSE-KMS) für neue Objekt-Uploads in Verzeichnis-Buckets

Eine vollständige Liste spezifischer Bedingungsschlüssel für Verzeichnis-Buckets finden Sie unter Autorisieren regionaler Endpunkt-API-Operationen mit IAM.

Verschlüsselungskontext

Für Verzeichnis-Buckets ist ein Verschlüsselungskontext ein Satz von Schlüssel-Wert-Paaren, die kontextbezogene Informationen zu den Daten enthalten. Ein zusätzlicher Wert für den Verschlüsselungskontext wird nicht unterstützt. Weitere Informationen zum Thema Verschlüsselungskontext finden Sie unter Verschlüsselungskontext.

Wenn Sie SSE-KMS für einen Verzeichnis-Bucket verwenden, verwendet Amazon S3 standardmäßig den Bucket-ARN (Amazon-Ressourcenname) als Verschlüsselungskontextpaar:

arn:aws:s3express:region:account-id:bucket/bucket-base-name--zone-id--x-s3

Stellen Sie sicher, dass Ihre IAM-Richtlinien oder AWS KMS -Schlüsselrichtlinien Ihren Bucket-ARN als Verschlüsselungskontext verwenden.

Sie können optional ein explizites Verschlüsselungskontextpaar angeben indem Sie den x-amz-server-side-encryption-context-Header in einer API-Anforderung für einen zonalen Endpunkt verwenden, z .B. CreateSession. Der Wert dieses Headers ist eine Base64-kodierte Zeichenfolge einer UTF-8-kodierten JSON-Datei, die den Verschlüsselungskontext als Schlüssel-Wert-Paare enthält. Für Verzeichnis-Buckets muss der Verschlüsselungskontext dem Standardverschlüsselungskontext entsprechen – dem Bucket-ARN (Amazon-Ressourcenname). Da der Verschlüsselungskontext nicht verschlüsselt ist, sollte er keine sensiblen Informationen enthalten.

Sie können den Verschlüsselungskontext verwenden, um Ihre kryptografischen Vorgänge zu identifizieren und zu kategorisieren. Sie können auch den standardmäßigen Verschlüsselungskontext-ARN-Wert verwenden, um relevante Anforderungen in AWS CloudTrail zu verfolgen, indem Sie sehen, welcher Verzeichnis-Bucket-ARN mit welchem Verschlüsselungsschlüssel verwendet wurde.

Wenn Sie im requestParameters-Feld einer CloudTrail-Protokolldatei SSE-KMS für einen Verzeichnis-Bucket verwenden, ist der Verschlüsselungskontextwert der ARN des Buckets.

"encryptionContext": { "aws:s3express:arn": "arn:aws:s3:::arn:aws:s3express:region:account-id:bucket/bucket-base-name--zone-id--x-s3" }

Außerdem protokollieren die AWS KMS-CloudTrail-Ereignisse für die Objektverschlüsselung mit SSE-KMS in einem Verzeichnis-Bucket den Bucket-ARN und nicht den Objekt-ARN.

Senden von Anfragen für AWS KMS-verschlüsselte Objekte

Auf Verzeichnis-Buckets kann nur über HTTPS (TLS) zugegriffen werden. Außerdem signieren Verzeichnis-Buckets Anfragen mithilfe von AWS Signature Version 4 (SigV4). Weitere Hinweise zum Senden von Anforderungen für verschlüsselte AWS KMS-Objekte finden Sie unter Senden von Anfragen für AWS KMS-verschlüsselte Objekte.

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 Bad Request.

Prüfen der SSE-KMS-Verschlüsselung in Verzeichnis-Buckets

Um die Verwendung Ihrer AWS KMS-Schlüssel für Ihre SSE-KMS-verschlüsselten Daten zu überprüfen, können Sie AWS CloudTrail-Protokolle verwenden. Sie können Einblicke in Ihre kryptografischen Operationen wie GenerateDataKey und Decrypt erhalten. CloudTrail unterstützt zahlreiche Attributwerte für die Filterung Ihrer Suche, darunter den Ereignisnamen, den Benutzernamen und die Ereignisquelle.