Replizieren von mit serverseitiger Verschlüsselung (SSE-C, SSE-S3, SSE-KMS) erstellten Objekten mithilfe von KMS-Schlüsseln - Amazon Simple Storage Service

Replizieren von mit serverseitiger Verschlüsselung (SSE-C, SSE-S3, SSE-KMS) erstellten Objekten mithilfe von KMS-Schlüsseln

Wichtig

Amazon S3 wendet jetzt serverseitige Verschlüsselung mit von Amazon S3 verwalteten Verschlüsselungsschlüssel (SSE-S3) als Basisverschlüsselung für jeden Bucket in Amazon S3 an. Ab dem 5. Januar 2023 werden alle neuen Objekt-Uploads auf Amazon S3 ohne zusätzliche Kosten und ohne Auswirkungen auf die Leistung automatisch verschlüsselt. Derzeit ist der automatische Verschlüsselungsstatus für die S3-Bucket-Standardverschlüsselungskonfiguration und für neue Objekt-Uploads in den AWS CloudTrail-Protokollen, in S3 Inventory und in S3 Storage Lens verfügbar. In den nächsten Wochen wird der automatische Verschlüsselungsstatus auch für die Amazon-S3-Konsole und als zusätzlicher Amazon-S3-API-Antwortheader in der AWS Command Line Interface und AWS SDKs eingeführt. Sobald dieses Update in allen AWS-Regionen abgeschlossen ist, wird die Dokumentation aktualisiert. Weitere Informationen finden Sie unter Häufig gestellte Fragen zur Standardverschlüsselung.

Standardmäßig repliziert Amazon S3 keine Objekte, die im Ruhezustand mit der serverseitigen Verschlüsselung mit in gespeicherten kundenverwalteten Schlüsseln gespeichert wurden AWS KMS. Dieser Abschnitt beschreibt zusätzliche Konfigurationen, die Sie nutzen können, um Amazon S3 anzuweisen, diese Objekte zu replizieren.

Anmerkung

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.

Ein Beispiel mit Schritt-für-Schritt-Anleitungen finden Sie unter Replizieren verschlüsselter Objekte. Weitere Informationen zum Erstellen einer Replikationskonfiguration finden Sie unter Replizieren von Objekten.

Verwenden der Standard-Bucket-Verschlüsselung mit der Replikation

Wenn Sie die Standard-Verschlüsselung für einen Replikations-Ziel-Bucket aktivieren, gilt das folgende Verschlüsselungsverhalten:

  • Wenn Objekte im Quell-Bucket nicht verschlüsselt sind, werden die Replikatobjekte im Ziel-Bucket mithilfe der Einstellungen der Standard-Verschlüsselung des Ziel-Buckets verschlüsselt. Daher unterscheidet sich das ETag des Quell-Objekts von dem ETag des Replikatobjekts. Sie müssen die Anwendungen, die das ETag verwenden, zur Anpassung an diesen Unterschied aktualisieren.

  • Wenn Objekte im Quell-Bucket mithilfe von SSE-S3 oder SSE-KMS verschlüsselt werden, verwenden die Replikatobjekte im Ziel-Bucket dieselbe Verschlüsselung wie die Verschlüsselung des Quellobjekts. Die Einstellungen der Standard-Verschlüsselung des Ziel-Buckets werden nicht verwendet.

Replizieren von verschlüsselten Objekten (SSE-C)

Die serverseitige Verschlüsselung mit vom Kunden bereitgestellten Schlüsseln (SSE-C) gestattet Ihnen, eigene Schlüssel zu verwalten. Mit SSE-C verwalten Sie die Schlüssel, während Amazon S3 den Verschlüsselungs- und Entschlüsselungsprozess verwaltet. Sie müssen einen Verschlüsselungsschlüssel als Teil Ihrer Anfrage angeben, brauchen aber keinen Code zu schreiben, um die Objektverschlüsselung oder -entschlüsselung durchzuführen. Wenn Sie ein Objekt hochladen, verschlüsselt Amazon S3 das Objekt mithilfe des von Ihnen angegebenen Schlüssels. Amazon S3 löscht diesen Schlüssel dann aus dem Speicher. Wenn Sie ein Objekt abrufen, müssen Sie denselben Verschlüsselungsschlüssel als Teil Ihrer Anfrage angeben. Weitere Informationen finden Sie unter Verwenden von serverseitiger Verschlüsselung mit vom Kunden bereitgestellten Schlüsseln (SSE-C).

Die S3-Replikation unterstützt Objekte, die mit SSE-C verschlüsselt sind. Sie können die SSE-C-Objektreplikation in der Amazon-S3-Konsole oder mit den AWS SDKs auf dieselbe Weise konfigurieren, wie Sie die Replikation für unverschlüsselte Objekte konfigurieren. Die S3-Replikation repliziert automatisch neu hochgeladene mit SSE-C verschlüsselte Objekte, sofern sie entsprechend Ihrer S3-Replikationskonfiguration infrage kommen. Verwenden Sie die S3-Batchreplikation, um vorhandene Objekte in Ihren Buckets zu replizieren. Es gibt keine zusätzlichen SSE-C-Berechtigungen, die über das hinausgehen, was derzeit für die Replikation erforderlich ist. Weitere Informationen zum Replizieren von Objekten finden Sie unter Einrichten der Replikation und Replizieren bestehender Objekte mit S3-Batch-Replikation.

Für die Replikation von SSE-C-Objekten fallen keine zusätzlichen Gebühren an. Einzelheiten zu den Replikationspreisen finden Sie auf der Seite Amazon S3 – Preise.

Replizieren von verschlüsselten Objekten (SSE-S3, SSE-KMS)

Standardmäßig repliziert Amazon S3 keine Objekte, die im Ruhezustand mit der serverseitigen Verschlüsselung mit in AWS KMS gespeicherten AWS KMS keys gespeichert wurden . Dieser Abschnitt beschreibt zusätzliche Konfigurationen, die Sie hinzufügen können, um Amazon S3 anzuweisen, diese Objekte zu replizieren.

Ein Beispiel mit Schritt-für-Schritt-Anleitungen finden Sie unter Replizieren verschlüsselter Objekte. Weitere Informationen zum Erstellen einer Replikationskonfiguration finden Sie unter Replizieren von Objekten.

Angeben zusätzlicher Informationen in der Replikations-Konfiguration

In der Replikations-Konfiguration machen Sie Folgendes:

  • Fügen Sie der Destination-Konfiguration den symmetrischen vom Kunden verwalteten AWS KMS-Schlüssel hinzu, mit dem Amazon S3 Objektreplikate verschlüsseln soll.

  • Aktivieren Sie ausdrücklich die Replikation von Objekten, die mit den KMS-Schlüssel verschlüsselt wurden, indem Sie das SourceSelectionCriteria-Element hinzufügen.

<ReplicationConfiguration> <Rule> ... <SourceSelectionCriteria> <SseKmsEncryptedObjects> <Status>Enabled</Status> </SseKmsEncryptedObjects> </SourceSelectionCriteria> <Destination> ... <EncryptionConfiguration> <ReplicaKmsKeyID>AWS KMS key ID for the AWS-Region of the destination bucket.</ReplicaKmsKeyID> </EncryptionConfiguration> </Destination> ... </Rule> </ReplicationConfiguration>
Wichtig

Der KMS-Schlüssel muss in derselben AWS-Region erstellt worden sein wie der Ziel-Bucket.

Der KMS-Schlüssel muss gültig sein. Die PUT-API-Operation für die Bucket-Replikation überprüft nicht die Gültigkeit von KMS-Schlüsseln. Wenn Sie einen ungültigen KMS-Schlüssel verwenden, erhalten Sie als Antwort den HTTP-200-OK-Statuscode, aber die Replikation schlägt fehl.

Das folgende Beispiel zeigt eine Replikationskonfiguration, die optionale Konfigurationselemente enthält.

<?xml version="1.0" encoding="UTF-8"?> <ReplicationConfiguration> <Role>arn:aws:iam::account-id:role/role-name</Role> <Rule> <ID>Rule-1</ID> <Priority>1</Priority> <Status>Enabled</Status> <DeleteMarkerReplication> <Status>Disabled</Status> </DeleteMarkerReplication> <Filter> <Prefix>Tax</Prefix> </Filter> <Destination> <Bucket>arn:aws:s3:::destination-bucket</Bucket> <EncryptionConfiguration> <ReplicaKmsKeyID>The AWS KMS key ID for the AWS-Region of the destination buckets. (S3 uses this key to encrypt object replicas.)</ReplicaKmsKeyID> </EncryptionConfiguration> </Destination> <SourceSelectionCriteria> <SseKmsEncryptedObjects> <Status>Enabled</Status> </SseKmsEncryptedObjects> </SourceSelectionCriteria> </Rule> </ReplicationConfiguration>

Diese Replikations-Konfiguration weist eine Regel auf. Die Regel wird auf alle Objekte mit dem Schlüsselpräfix Tax angewendet. Amazon S3 verwendet die AWS KMS key-ID zum Verschlüsseln dieser Objektreplikate.

Erteilen zusätzlicher Berechtigungen für die IAM-Rolle

Um Objekte zu replizieren, die im Ruhezustand mit AWS KMS verschlüsselt sind, vergeben Sie die folgenden zusätzlichen Berechtigungen für die AWS Identity and Access Management (IAM)-Rolle, die Sie in der Replikationskonfiguration angeben. Sie erteilen diese Berechtigungen, indem Sie die mit der IAM-Rolle verknüpfte Berechtigungsrichtlinie aktualisieren.

  • s3:GetObjectVersionForReplication-Aktion für Quellobjekte – Diese Aktion ermöglicht Amazon S3, sowohl unverschlüsselte Objekte als auch Objekte, die mit serverseitiger Verschlüsselung mit SSE-S3-Schlüsseln oder SSE-KMS erstellt wurden, zu replizieren.

    Anmerkung

    Wir empfehlen, dass Sie die Aktion s3:GetObjectVersionForReplication statt der Aktion s3:GetObjectVersion verwenden, da s3:GetObjectVersionForReplication Amazon S3 nur die minimalen Berechtigungen bereitstellt, die für eine Replikation nötig sind. Darüber hinaus ermöglicht die Aktion s3:GetObjectVersion die Replikation von unverschlüsselten und über SSE-S3 verschlüsselten Objekten, nicht aber von Objekten, die mit SSE-KMS erstellt wurden.

  • AWS KMS-Aktionen kms:Decrypt und kms:Encrypt für die KMS-Schlüssel

    • Sie müssen kms:Decrypt-Berechtigungen für den AWS KMS key gewähren, der zum Entschlüsseln des Quellobjekts verwendet wird.

    • Sie müssen kms:Encrypt-Berechtigungen für den AWS KMS key gewähren, der zum Verschlüsseln des Objektreplikats verwendet wird.

Wir empfehlen, diese Berechtigungen auf Ziel-Buckets und Objekte zu beschränken, die AWS KMS-Bedingungsschlüssel verwenden. Das AWS-Konto, dem die IAM-Rolle gehört, muss über Berechtigungen für die AWS KMS-Aktionen (kms:Encrypt und kms:Decrypt) für die in der Richtlinie aufgeführten KMS-Schlüssel verfügen. Wenn die KMS-Schlüssel im Besitz eines anderen AWS-Konto sind, muss der KMS-Schlüsselbesitzer diese Berechtigungen dem AWS-Konto erteilen, das die IAM-Rolle besitzt. Weitere Informationen zur Verwaltung des Zugriffs auf diese KMS-Schlüssel finden Sie unter Verwendung von IAM-Richtlinien mit AWS KMS im AWS Key Management Service-Entwicklerhandbuch.

Amazon S3 Bucket Keys und Replikation

Um die Replikation mit einem S3-Bucket-Schlüssel zu verwenden, muss die AWS KMS key-Schlüsselrichtlinie für den KMS-Schlüssel, der zum Verschlüsseln des Objektreplikats verwendet wird, kms:Decrypt-Berechtigungen für den aufrufenden Prinzipal enthalten. Der Aufruf zur kms:Decrypt Überprüfung der Integrität des S3-Bucket-Schlüssels, bevor er verwendet wird. Weitere Informationen finden Sie unter Verwenden eines S3-Bucket-Schlüssels mit Replikation.

Wenn ein S3-Bucket-Schlüssel für den Quell- oder Ziel-Bucket aktiviert ist, ist der Verschlüsselungskontext derAmazon-Ressourcenname (ARN) des Buckets, nicht der Objekt-ARN (z. B. arn:aws:s3:::bucket_ARN). Sie müssen Ihre IAM-Richtlinien aktualisieren, um den Bucket-ARN für den Verschlüsselungskontext verwenden zu können:

"kms:EncryptionContext:aws:s3:arn": [ "arn:aws:s3:::bucket_ARN" ]

Weitere Informationen finden Sie unter Verschlüsselungskontext (x-amz-server-side-encryption-context) und Änderungen, die Sie vor dem Aktivieren eines S3-Bucket-Schlüssels beachten sollten.

Beispielrichtlinien – Verwenden von SSE-S3 und SSE-KMS bei der Replikation

Die folgenden IAM-Beispielrichtlinien zeigen Anweisungen für die Verwendung von SSE-S3 und SSE-KMS bei der Replikation.

Beispiel : Verwenden von SSE-KMS – separate Ziel-Buckets

Die folgende Beispielrichtlinie zeigt Anweisungen zur Verwendung von SSE-KMS mit separaten Ziel-Buckets.

{ "Action": ["kms:Decrypt"], "Effect": "Allow", "Condition": { "StringLike": { "kms:ViaService": "s3.source-bucket-region.amazonaws.com", "kms:EncryptionContext:aws:s3:arn": [ "arn:aws:s3:::source-bucket-name/key-prefix1*", ] } }, "Resource": [ "List of AWS KMS key ARNs used to encrypt source objects.", ] }, { "Action": ["kms:Encrypt"], "Effect": "Allow", "Condition": { "StringLike": { "kms:ViaService": "s3.destination-bucket-1-region.amazonaws.com", "kms:EncryptionContext:aws:s3:arn": [ "arn:aws:s3:::destination-bucket-name-1/key-prefix1*", ] } }, "Resource": [ "AWS KMS key ARNs (for the AWS-Region of the destination bucket 1). Used to encrypt object replicas created in destination bucket 1.", ] }, { "Action": ["kms:Encrypt"], "Effect": "Allow", "Condition": { "StringLike": { "kms:ViaService": "s3.destination-bucket-2-region.amazonaws.com", "kms:EncryptionContext:aws:s3:arn": [ "arn:aws:s3:::destination-bucket-2-name/key-prefix1*", ] } }, "Resource": [ "AWS KMS key ARNs (for the AWS-Region of destination bucket 2). Used to encrypt object replicas created in destination bucket 2.", ] }
Beispiel : Replizieren von mit SSE-S3 und SSE-KMS erstellten Objekten

Im Folgenden sehen Sie eine vollständige IAM-Richtlinie, die die erforderlichen Berechtigungen zum Replizieren von unverschlüsselten Objekten, Objekten, die mit SSE-S3 erstellt wurden, und Objekten, die mit SSE-KMS erstellt wurden, gewährt.

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:GetReplicationConfiguration", "s3:ListBucket" ], "Resource":[ "arn:aws:s3:::source-bucket" ] }, { "Effect":"Allow", "Action":[ "s3:GetObjectVersionForReplication", "s3:GetObjectVersionAcl" ], "Resource":[ "arn:aws:s3:::source-bucket/key-prefix1*" ] }, { "Effect":"Allow", "Action":[ "s3:ReplicateObject", "s3:ReplicateDelete" ], "Resource":"arn:aws:s3:::destination-bucket/key-prefix1*" }, { "Action":[ "kms:Decrypt" ], "Effect":"Allow", "Condition":{ "StringLike":{ "kms:ViaService":"s3.source-bucket-region.amazonaws.com", "kms:EncryptionContext:aws:s3:arn":[ "arn:aws:s3:::source-bucket-name/key-prefix1*" ] } }, "Resource":[ "List of AWS KMS key ARNs used to encrypt source objects." ] }, { "Action":[ "kms:Encrypt" ], "Effect":"Allow", "Condition":{ "StringLike":{ "kms:ViaService":"s3.destination-bucket-region.amazonaws.com", "kms:EncryptionContext:aws:s3:arn":[ "arn:aws:s3:::destination-bucket-name/prefix1*" ] } }, "Resource":[ "AWS KMS key ARNs (for the AWS-Region of the destination buckets) to use for encrypting object replicas" ] } ] }

Erteilen von zusätzlichen Berechtigungen für kontenübergreifende Szenarien

In einem kontoübergreifenden Szenario, in dem die Quell- und Ziel-Buckets verschiedenen AWS-Konten gehören, können Sie einen KMS-Schlüssel zum Verschlüsseln von Objektreplikaten verwenden. Der KMS-Schlüssel-Besitzer muss dem Besitzer des Quell-Buckets jedoch die Berechtigung erteilen, den KMS-Schlüssel zu verwenden.

So erteilen Sie dem Quell-Bucket-Eigentümer die Berechtigung zur Verwendung des KMS-Schlüssels (AWS KMS-Konsole)
  1. Melden Sie sich bei der AWS Management Console an und öffnen Sie die AWS KMS-Konsole unter https://console.aws.amazon.com/kms.

  2. Wenn Sie die AWS-Region ändern möchten, verwenden Sie die Regionsauswahl in der oberen rechten Ecke der Seite.

  3. Zum Anzeigen der Schlüssel in Ihrem Konto, die Sie erstellen und verwalten, wählen Sie im Navigationsbereich Customer managed keys (Vom Kunden verwaltete Schlüssel) aus.

  4. Wählen Sie den KMS-Schlüssel aus.

  5. Wählen Sie unter General configuration (Allgemeine Konfiguration) den Tab Schlüsselrichtlinie.

  6. Scrollen Sie nach unten zu Other AWS-Konten (Andere).

  7. Wählen Sie Add Other AWS-Konten (Andere hinzufügen) aus.

  8. In arn:aws:iam:: geben Sie die Konto-ID des Quell-Buckets ein.

  9. Wählen Sie Save (Speichern).

So erteilen Sie dem Quell-Bucket-Eigentümer die Berechtigung zur Verwendung des KMS-Schlüssels (AWS CLI)

Überlegungen zur AWS KMS-Transaktionsquote

Wenn Sie nach der Cross-Region Replication (CRR)-Aktivierung zu viele neue Objekte mit AWS KMS-Verschlüsselung hinzufügen, kann es zu einer Drosselung kommen (Fehler: HTTP 503 Service Unavailable). Die Drosselung erfolgt, wenn die Anzahl an AWS KMS-Transaktionen pro Sekunde das aktuelle Kontingent überschreitet. Weitere Informationen finden Sie unter Kontingente im AWS Key Management Service-Entwicklerhandbuch.

Zum Anfordern einer Erhöhung für ein Kontingent verwenden Sie Service-Quotas verwenden. Weitere Informationen finden Sie unter Amazon Web Services Quotas. Wenn Service Quotas in Ihrer Region nicht unterstützt werden, öffnen Sie einen AWS Support-Fall.