View a markdown version of this page

Migration des Amazon S3-Verschlüsselungsclients (V2 auf V3) - AWS SDK für Ruby

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Migration des Amazon S3-Verschlüsselungsclients (V2 auf V3)

Anmerkung

Wenn Sie Version 1 des S3-Verschlüsselungsclients verwenden, müssen Sie zuerst auf V2 migrieren, bevor Sie zu V3 migrieren. Anweisungen Migration des Amazon S3-Verschlüsselungsclients (V1 auf V2) zur Migration von V1 auf V2 finden Sie unter.

In diesem Thema wird gezeigt, wie Sie Ihre Anwendungen von Version 2 (V2) des Amazon Simple Storage Service (Amazon S3) -Verschlüsselungsclients auf Version 3 (V3) migrieren und die Anwendungsverfügbarkeit während des gesamten Migrationsprozesses sicherstellen. V3 führt AES GCM mit Key Commitment und Commitment Policies ein, um die Sicherheit zu erhöhen und vor Manipulation von Datenschlüsseln zu schützen.

Überblick über die Migration

Version 3 des Amazon S3-Verschlüsselungsclients führt AES GCM mit Key Commitment für erhöhte Sicherheit ein. Dieser neue Verschlüsselungsalgorithmus bietet Schutz vor Manipulation von Datenschlüsseln und gewährleistet die Integrität verschlüsselter Daten. Die Migration auf Version 3 erfordert eine sorgfältige Planung, um die Anwendungsverfügbarkeit und den Datenzugriff während des gesamten Prozesses aufrechtzuerhalten.

Diese Migration erfolgt in zwei Phasen:

1. Aktualisieren Sie bestehende Clients, damit sie neue Formate lesen können. Stellen Sie zunächst eine aktualisierte Version des AWS SDK für Ruby in Ihrer Anwendung bereit. Dadurch können bestehende V2-Verschlüsselungsclients Objekte entschlüsseln, die von den neuen V3-Clients geschrieben wurden. Wenn Ihre Anwendung mehrere AWS SDKs verwendet, müssen Sie jedes SDK separat aktualisieren.

2. Migrieren Sie die Verschlüsselungs- und Entschlüsselungsclients auf Version 3. Sobald alle Ihre V2-Verschlüsselungsclients neue Formate lesen können, können Sie Ihre vorhandenen Verschlüsselungs- und Entschlüsselungsclients auf ihre jeweiligen V3-Versionen migrieren. Dazu gehören die Konfiguration von Commitment Policies und die Aktualisierung Ihres Codes, um die neuen Client-Konfigurationsoptionen nutzen zu können.

Wenn Sie noch nicht von V1 auf V2 migriert haben, müssen Sie diese Migration zuerst abschließen. Eine ausführliche Anleitung Migration des Amazon S3-Verschlüsselungsclients (V1 auf V2) zur Migration von V1 auf V2 finden Sie unter.

Die Funktionen von V3 verstehen

Version 3 des Amazon S3-Verschlüsselungsclients bietet zwei wichtige Sicherheitsfunktionen: Commitment Policies und AES GCM with Key Commitment. Das Verständnis dieser Funktionen ist für die Planung Ihrer Migrationsstrategie und die Gewährleistung der Sicherheit Ihrer verschlüsselten Daten unerlässlich.

Verpflichtungen: Richtlinien

Verpflichtungsrichtlinien steuern, wie der Verschlüsselungsclient bei Verschlüsselungs- und Entschlüsselungsvorgängen mit der Schlüsselzusage umgeht. Key Commitment stellt sicher, dass verschlüsselte Daten nur mit dem exakten Schlüssel entschlüsselt werden können, mit dem sie verschlüsselt wurden, und schützt so vor bestimmten Arten von kryptografischen Angriffen.

Der V3-Verschlüsselungsclient unterstützt drei Commitment Policy-Optionen:

FORBID_ENCRYPT_ALLOW_DECRYPT

Diese Richtlinie verschlüsselt Objekte ohne Schlüsselbindung und ermöglicht die Entschlüsselung beider Objekte mit und ohne Schlüsselbindung.

  • Verschlüsselungsverhalten: Objekte werden ohne Schlüsselbindung verschlüsselt, wobei dieselbe Algorithmussuite wie V2 verwendet wird.

  • Entschlüsselungsverhalten: Kann Objekte entschlüsseln, die mit oder ohne Schlüsselbindung verschlüsselt wurden.

  • Auswirkungen auf die Sicherheit: Diese Richtlinie erzwingt keine Übertragung von Schlüsseln und kann zu Manipulationen führen. Objekte, die mit dieser Richtlinie verschlüsselt wurden, profitieren nicht von den erweiterten Sicherheitsvorkehrungen von Key Commitment. Verwenden Sie diese Richtlinie nur während der Migration, wenn Sie die Kompatibilität mit dem V2-Verschlüsselungsverhalten aufrechterhalten müssen.

  • Versionskompatibilität: Mit dieser Richtlinie verschlüsselte Objekte können von allen V2- und V3-Implementierungen des S3-Verschlüsselungsclients gelesen werden.

REQUIRE_ENCRYPT_ALLOW_DECRYPT

Diese Richtlinie verschlüsselt Objekte mit Schlüsselzusage und ermöglicht die Entschlüsselung beider Objekte mit und ohne Schlüsselbindung.

  • Verschlüsselungsverhalten: Objekte werden mithilfe von AES GCM mit Schlüsselzusage verschlüsselt.

  • Entschlüsselungsverhalten: Kann Objekte entschlüsseln, die mit oder ohne Schlüsselbindung verschlüsselt wurden, wodurch Abwärtskompatibilität gewährleistet wird.

  • Auswirkungen auf die Sicherheit: Neue Objekte profitieren vom Schutz vor Schlüsselzuweisungen, während bestehende Objekte ohne Schlüsselzusage weiterhin gelesen werden können. Dadurch wird ein ausgewogenes Verhältnis zwischen Sicherheit und Abwärtskompatibilität während der Migration gewährleistet.

  • Versionskompatibilität: Objekte, die mit dieser Richtlinie verschlüsselt wurden, können nur von der V3- und der neuesten V2-Implementierung des S3-Verschlüsselungsclients gelesen werden.

REQUIRE_ENCRYPT_REQUIRE_DECRYPT

Diese Richtlinie verschlüsselt Objekte mit Schlüsselzusage und erlaubt nur die Entschlüsselung von Objekten, die mit einer Schlüsselzusage verschlüsselt wurden.

  • Verschlüsselungsverhalten: Objekte werden mithilfe von AES-GCM mit Schlüsselzusage verschlüsselt.

  • Entschlüsselungsverhalten: Es können nur Objekte entschlüsselt werden, die mit Key Commitment verschlüsselt wurden. Versuche, Objekte ohne Schlüsselbindung zu entschlüsseln, schlagen fehl.

  • Auswirkungen auf die Sicherheit: Diese Richtlinie bietet ein Höchstmaß an Sicherheit, da bei allen Vorgängen eine Schlüsselverpflichtung durchgesetzt wird. Verwenden Sie diese Richtlinie erst, nachdem alle Objekte mit Schlüsselzusage erneut verschlüsselt und alle Clients auf Version 3 aktualisiert wurden.

  • Versionskompatibilität: Mit dieser Richtlinie verschlüsselte Objekte können nur von der V3- und der neuesten V2-Implementierung des S3-Verschlüsselungsclients gelesen werden. Diese Richtlinie verhindert auch das Lesen von Objekten, die von V2- oder V1-Clients verschlüsselt wurden.

Anmerkung

Achten Sie bei der Planung Ihrer Migration zunächst REQUIRE_ENCRYPT_ALLOW_DECRYPT auf die Aufrechterhaltung der Abwärtskompatibilität und profitieren Sie gleichzeitig von den Sicherheitsvorteilen, die sich aus dem Einsatz neuer Objekte ergeben. Wechseln Sie erst dann zu, REQUIRE_ENCRYPT_REQUIRE_DECRYPT wenn alle Objekte erneut verschlüsselt wurden und alle Clients auf Version 3 aktualisiert wurden.

AES GCM mit Key Commitment

AES GCM with Key Commitment (ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY) ist ein neuer Verschlüsselungsalgorithmus, der in Version 3 eingeführt wurde und durch den Schutz vor der Manipulation von Datenschlüsseln erhöhte Sicherheit bietet. Für die Planung Ihrer Migration ist es wichtig zu verstehen, wie dieser Algorithmus funktioniert und wann er angewendet wird.

Wie ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY unterscheidet sich das von früheren Algorithmen

Frühere Versionen des S3-Verschlüsselungsclients verwendeten AES CBC oder AES GCM, ohne dass ein Schlüssel festgelegt wurde, um den Datenschlüssel in den Befehlsdateien zu verschlüsseln. ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEYfügt dem Verschlüsselungsprozess eine kryptografische Verpflichtung hinzu, die die verschlüsselten Daten an einen bestimmten Schlüssel bindet. Dadurch wird verhindert, dass ein Angreifer den verschlüsselten Datenschlüssel in der Anweisungsdatei manipuliert und der Client Daten mit einem falschen Schlüssel entschlüsselt.

Ohne eine Schlüsselbindung kann ein Angreifer den verschlüsselten Datenschlüssel in einer Anweisungsdatei so ändern, dass er zu einem anderen Schlüssel entschlüsselt wird, was möglicherweise unbefugten Zugriff oder Datenbeschädigung ermöglicht. ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEYverhindert diesen Angriff, indem sichergestellt wird, dass der verschlüsselte Datenschlüssel nur mit dem ursprünglichen Schlüssel entschlüsselt werden kann, der bei der Verschlüsselung verwendet wurde.

Versionskompatibilität

Mit verschlüsselte Objekte ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY können nur mit V3-Implementierungen des S3-Verschlüsselungsclients und bestimmten Übergangsversionen von V2 entschlüsselt werden, die das Lesen von V3-Formaten unterstützen. V2-Clients ohne diese Übergangsunterstützung können mit verschlüsselte Befehlsdateien nicht entschlüsseln. ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY

Warnung

Stellen Sie sicher, dass alle Clients, die Ihre verschlüsselten Objekte lesen müssen, auf Version 3 REQUIRE_ENCRYPT_ALLOW_DECRYPT oder eine Übergangsversion, die V3-Formate unterstützt, aktualisiert wurden, bevor Sie die Verschlüsselung mit aktivieren ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY (mithilfe von Richtlinien oder REQUIRE_ENCRYPT_REQUIRE_DECRYPT Verpflichtungen). Wenn V2-Clients ohne Übergangsunterstützung versuchen, mit verschlüsselten Objekten zu lesenALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY, schlägt die Entschlüsselung fehl.

Während der Migration können Sie die FORBID_ENCRYPT_ALLOW_DECRYPT Commitment-Richtlinie verwenden, um die Verschlüsselung fortzusetzen, ohne ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY dass Ihre V3-Clients weiterhin Objekte lesen können, die mit Key Commitment verschlüsselt wurden. Dies bietet einen sicheren Migrationspfad, bei dem Sie zuerst alle Lesegeräte aktualisieren und dann zur Verschlüsselung mit Schlüsselbindung wechseln.

Aktualisieren Sie bestehende Clients, um neue Formate zu lesen

Der V3-Verschlüsselungsclient verwendet Verschlüsselungsalgorithmen und Key-Commitment-Funktionen, die V2-Clients standardmäßig nicht unterstützen. Der erste Schritt der Migration besteht darin, Ihre V2-Entschlüsselungsclients auf eine Version des AWS SDK für Ruby zu aktualisieren, die V3-verschlüsselte Objekte lesen kann. Nach Abschluss dieses Schritts können die V2-Clients Ihrer Anwendung Objekte entschlüsseln, die mit V3-Verschlüsselungsclients verschlüsselt wurden.

Um Objekte zu lesen, die von V3-Clients (denen, die Richtlinien REQUIRE_ENCRYPT_ALLOW_DECRYPT oder REQUIRE_ENCRYPT_REQUIRE_DECRYPT Commitment-Richtlinien verwenden) verschlüsselt wurden, müssen Sie Version 1.93.0 oder höher des aws-sdk-s3 Gems verwenden. Diese Version unterstützt das Entschlüsseln von Objekten, die mit AES GCM mit Key Commitment verschlüsselt wurden.

Installation über die Befehlszeile

Verwenden Sie bei Projekten, die das aws-sdk-s3 Gem über die Befehlszeile installieren, die Versionsoption, um zu überprüfen, ob die Mindestversion von 1.208.0 installiert ist.

gem install aws-sdk-s3 -v '>= 1.208.0'

Verwenden von Gemfiles

Für Projekte, die ein Gemfile zur Verwaltung von Abhängigkeiten verwenden, setzen Sie die Mindestversion des aws-sdk-s3 Gems auf 1.208.0. Beispiel:

gem 'aws-sdk-s3', '>= 1.208.0'
  1. Ändern Sie Ihr Gemfile, um die Mindestversion anzugeben.

  2. Führen Sie ausbundle update aws-sdk-s3, um das Gem zu aktualisieren.

  3. Um Ihre Version zu verifizieren, führen Sie es ausbundle info aws-sdk-s3.

Anmerkung

Nach dem Update auf die neueste Version können Ihre vorhandenen V2-Verschlüsselungsclients Objekte entschlüsseln, die von V3-Clients verschlüsselt wurden. Sie verschlüsseln jedoch weiterhin neue Objekte mithilfe von V2-Algorithmen, bis Sie sie wie im nächsten Abschnitt beschrieben auf V3 migrieren.

Migrieren Sie Verschlüsselungs- und Entschlüsselungsclients auf Version 3

Nachdem Sie Ihre Clients auf die neuen Verschlüsselungsformate aktualisiert haben, können Sie Ihre Anwendungen auf die V3-Verschlüsselungs- und Entschlüsselungsclients aktualisieren. Die folgenden Schritte zeigen Ihnen, wie Sie Ihren Code erfolgreich von V2 auf V3 migrieren.

Bevor Sie Ihren Code für die Verwendung des V3-Verschlüsselungsclients aktualisieren, stellen Sie sicher, dass Sie die vorherigen Schritte befolgt haben und die aws-sdk-s3 Gem-Version 1.93.0 oder höher verwenden.

Anmerkung

Lesen Sie beim Entschlüsseln mit AES-GCM das gesamte Objekt bis zum Ende, bevor Sie die entschlüsselten Daten verwenden. Damit wird überprüft, ob das Objekt seit der Verschlüsselung nicht verändert wurde.

Konfiguration von V3-Clients

Der V3-Verschlüsselungsclient führt neue Konfigurationsoptionen ein, die das Verhalten bei der Schlüsselbindung und die Abwärtskompatibilität steuern. Das Verständnis dieser Optionen ist für eine erfolgreiche Migration unerlässlich.

commitment_policy

Der commitment_policy Parameter steuert, wie der Verschlüsselungsclient die Schlüsselzusage bei Verschlüsselungs- und Entschlüsselungsvorgängen verarbeitet. Dies ist die wichtigste Konfigurationsoption für V3-Clients.

  • :require_encrypt_allow_decrypt- Verschlüsselt neue Objekte mit Schlüsselzusage und ermöglicht die Entschlüsselung von Objekten mit oder ohne Schlüsselbindung. Dies ist die empfohlene Einstellung für die Migration, da sie eine erhöhte Sicherheit für neue Objekte bietet und gleichzeitig die Abwärtskompatibilität mit vorhandenen V2-Objekten gewährleistet.

  • :forbid_encrypt_allow_decrypt- Verschlüsselt neue Objekte ohne Schlüsselbindung (unter Verwendung von V2-Algorithmen) und ermöglicht die Entschlüsselung von Objekten mit oder ohne Schlüsselbindung. Verwenden Sie diese Einstellung nur, wenn Sie das V2-Verschlüsselungsverhalten während der Migration beibehalten müssen, z. B. wenn einige Clients V3-verschlüsselte Objekte noch nicht lesen können.

  • :require_encrypt_require_decrypt- Verschlüsselt neue Objekte mit Schlüsselzusage und ermöglicht nur die Entschlüsselung von Objekten, die mit einer Schlüsselzusage verschlüsselt wurden. Verwenden Sie diese Einstellung erst, nachdem alle Objekte mit Schlüsselzusage erneut verschlüsselt wurden und alle Clients auf Version 3 aktualisiert wurden.

Sicherheitsprofil

Der security_profile Parameter bestimmt die Unterstützung für das Lesen von Objekten, die in älteren Versionen des Verschlüsselungsclients geschrieben wurden. Dieser Parameter ist wichtig, um die Abwärtskompatibilität während der Migration aufrechtzuerhalten.

  • :v3_and_legacy- Ermöglicht dem V3-Client das Entschlüsseln von Objekten, die mit V1- und V2-Verschlüsselungsclients verschlüsselt wurden. Verwenden Sie diese Einstellung während der Migration, um sicherzustellen, dass Ihre V3-Clients alle vorhandenen verschlüsselten Objekte lesen können.

  • :v3- Ermöglicht dem V3-Client das Entschlüsseln von Objekten, die nur mit V2-Verschlüsselungsclients verschlüsselt wurden. Verwenden Sie diese Einstellung, wenn Sie bereits alle V1-Objekte in das V2-Format migriert haben.

  • Wenn nicht angegeben, entschlüsselt der Client nur Objekte, die von V3-Clients verschlüsselt wurden. Verwenden Sie dies nur für die Entwicklung neuer Anwendungen, für die keine veralteten Objekte existieren.

envelope_location

Der envelope_location Parameter bestimmt, wo die Verschlüsselungsmetadaten (einschließlich des verschlüsselten Datenschlüssels) gespeichert werden. Dieser Parameter beeinflusst, welche Objekte durch AES GCM mit Key Commitment geschützt werden.

  • :metadata(Standard) — Speichert Verschlüsselungsmetadaten in den Metadaten-Headern des S3-Objekts. Dies ist das Standardverhalten und wird für die meisten Anwendungsfälle empfohlen. Bei Verwendung von Metadatenspeichern gilt AES GCM mit Key Commitment nicht.

  • :instruction_file- Speichert Verschlüsselungsmetadaten in einem separaten S3-Objekt (Anweisungsdatei) mit einem konfigurierbaren Suffix. Bei der Verwendung von Anweisungsdateien schützt AES GCM mit Key Commitment den verschlüsselten Datenschlüssel vor Manipulationen. Verwenden Sie diese Einstellung, wenn Sie die zusätzliche Sicherheit benötigen, die Key Commitment für den Datenschlüssel selbst bietet.

Bei Verwendung können Sie optional den instruction_file_suffix Parameter angeben:instruction_file, um das für Anweisungsdateiobjekte verwendete Suffix anzupassen. Das Standardsuffix ist. .instruction

Wann sollten die einzelnen Konfigurationsoptionen verwendet werden

Folgen Sie während der Migration dieser empfohlenen Konfigurationsstrategie:

  1. Erste Migration: Stellen Sie ein commitment_policy: :require_encrypt_allow_decrypt undsecurity_profile: :v3_and_legacy. Auf diese Weise können Ihre V3-Clients neue Objekte mit Schlüsselzusage verschlüsseln und gleichzeitig alle vorhandenen V1- und V2-Objekte entschlüsseln.

  2. Nachdem alle Clients aktualisiert wurden: Verwenden commitment_policy: :require_encrypt_allow_decrypt Sie so lange, security_profile: :v3_and_legacy bis Sie alle Objekte, für die ein Schlüsselverbindungsschutz erforderlich ist, erneut verschlüsselt haben.

  3. Vollständige V3-Durchsetzung: Erst wenn alle Objekte mit Schlüsselzusage erneut verschlüsselt wurden und Sie keine V1/V2 Objekte mehr lesen müssen, können Sie optional zu dem security_profile Parameter wechseln commitment_policy: :require_encrypt_require_decrypt und ihn entfernen (oder ihn auf setzen, :v2 falls V2-Objekte noch existieren).

Verwenden Sie zum envelope_location Beispiel weiterhin Ihre bestehende Speichermethode (:metadataoder:instruction_file), es sei denn, Sie haben einen bestimmten Grund, sie zu ändern. Wenn Sie derzeit den Metadatenspeicher verwenden und die zusätzliche Sicherheit von AES GCM mit Key Commitment für den Datenschlüssel wünschen, können Sie zu diesem wechseln. Beachten Sie jedoch:instruction_file, dass hierfür alle Clients aktualisiert werden müssen, die diese Objekte lesen.

Migrieren Sie Verschlüsselungs- und Entschlüsselungsclients auf Version 3

Nachdem Sie Ihre Clients auf die neuen Verschlüsselungsformate aktualisiert haben, können Sie Ihre Anwendungen auf die V3-Verschlüsselungs- und Entschlüsselungsclients aktualisieren. Die folgenden Beispiele zeigen Ihnen, wie Sie Ihren Code erfolgreich von V2 auf V3 migrieren.

Verwenden von V3 Encryption Clients

Pre-migration (V2)

require 'aws-sdk-s3' # Create V2 encryption client with KMS client = Aws::S3::EncryptionV2::Client.new( kms_key_id: kms_key_id, key_wrap_schema: :kms_context, content_encryption_schema: :aes_gcm_no_padding, security_profile: :v2_and_legacy, commitment_policy: :forbid_encrypt_allow_decrypt ) # Encrypt and upload object client.put_object(bucket: 'my-bucket', key: 'my-object', body: 'secret data') # Download and decrypt object resp = client.get_object(bucket: 'my-bucket', key: 'my-object') decrypted_data = resp.body.read

Während der Migration (V3 mit Abwärtskompatibilität)

require 'aws-sdk-s3' # Create V3 encryption client with KMS client = Aws::S3::EncryptionV3::Client.new( kms_key_id: kms_key_id, key_wrap_schema: :kms_context, content_encryption_schema: :aes_gcm_no_padding, security_profile: :v3_and_legacy, commitment_policy: :require_encrypt_allow_decrypt ) # Encrypt and upload object client.put_object(bucket: 'my-bucket', key: 'my-object', body: 'secret data') # Download and decrypt object resp = client.get_object(bucket: 'my-bucket', key: 'my-object') decrypted_data = resp.body.read

Post-migration (V3)

require 'aws-sdk-s3' # Create V3 encryption client with KMS client = Aws::S3::EncryptionV3::Client.new( kms_key_id: kms_key_id, key_wrap_schema: :kms_context, content_encryption_schema: :aes_gcm_no_padding, security_profile: :v3, # Use the commitment policy (REQUIRE_ENCRYPT_REQUIRE_DECRYPT) # This encrypts with key commitment and does not decrypt V2 objects commitment_policy: :require_encrypt_require_decrypt ) # Encrypt and upload object client.put_object(bucket: 'my-bucket', key: 'my-object', body: 'secret data') # Download and decrypt object resp = client.get_object(bucket: 'my-bucket', key: 'my-object') decrypted_data = resp.body.read

Der Hauptunterschied in V3 ist das Hinzufügen des commitment_policy Parameters. Wenn Sie ihn so einstellen, :require_encrypt_require_decrypt wird sichergestellt, dass neue Objekte mit Schlüsselzusage verschlüsselt werden und dass der Client nur Objekte entschlüsselt, die mit Schlüsselzusage verschlüsselt wurden. Dadurch wird die Sicherheit vor der Manipulation von Datenschlüsseln erhöht.

Der put_object Anruf selbst bleibt unverändert. Alle Sicherheitsverbesserungen werden auf Client-Ebene konfiguriert.

Weitere Beispiele

Dieser Abschnitt enthält zusätzliche Beispiele für bestimmte Migrationsszenarien und Konfigurationsoptionen, die bei der Migration von V2 zu V3 hilfreich sein können.

Befehlsdatei im Vergleich zum Metadatenspeicher

Der S3-Verschlüsselungsclient kann Verschlüsselungsmetadaten (einschließlich des verschlüsselten Datenschlüssels) an zwei verschiedenen Orten speichern: in den Metadaten-Headern des S3-Objekts oder in einer separaten Anweisungsdatei. Die Wahl der Speichermethode wirkt sich darauf aus, welche Objekte vom AES-GCM mit Key Commitment-Schutz profitieren.

Metadatenspeicher (Standard)

Standardmäßig speichert der Verschlüsselungsclient Verschlüsselungsmetadaten in den Metadaten-Headern des S3-Objekts. Dies ist der empfohlene Ansatz für die meisten Anwendungsfälle, da dabei die Verschlüsselungsmetadaten zusammen mit dem Objekt gespeichert werden und keine separaten Anweisungsdateiobjekte verwaltet werden müssen.

require 'aws-sdk-s3' # Create V3 encryption client with metadata storage (default) client = Aws::S3::EncryptionV3::Client.new( kms_key_id: kms_key_id, key_wrap_schema: :kms_context, content_encryption_schema: :aes_gcm_no_padding, security_profile: :v3_and_legacy, commitment_policy: :require_encrypt_allow_decrypt, envelope_location: :metadata # Explicitly set to metadata (this is the default) ) # Encrypt and upload object # Encryption metadata is stored in the object's metadata headers client.put_object(bucket: 'my-bucket', key: 'my-object',body: 'secret data')

Bei Verwendung von Metadatenspeichern gilt AES GCM with Key Commitment nicht für den verschlüsselten Datenschlüssel. Die Inhaltsverschlüsselung profitiert jedoch weiterhin von Key Commitment, wenn Sie commitment_policy: :require_encrypt_allow_decrypt oder :require_encrypt_require_decrypt verwenden.

Anweisung: Dateispeicherung

Alternativ können Sie den Verschlüsselungsclient so konfigurieren, dass er Verschlüsselungsmetadaten in einem separaten S3-Objekt speichert, das als Anweisungsdatei bezeichnet wird. Wenn Sie Instruction Files mit V3 verwenden, ist der verschlüsselte Datenschlüssel durch AES GCM with Key Commitment geschützt, was zusätzliche Sicherheit vor der Manipulation von Datenschlüsseln bietet.

require 'aws-sdk-s3' # Create V3 encryption client with instruction file storage client = Aws::S3::EncryptionV3::Client.new( kms_key_id: kms_key_id, key_wrap_schema: :kms_context, content_encryption_schema: :aes_gcm_no_padding, security_profile: :v3_and_legacy, commitment_policy: :require_encrypt_allow_decrypt, envelope_location: :instruction_file, # Store metadata in separate instruction file instruction_file_suffix: '.instruction' # Optional: customize the suffix (default is '.instruction') ) # Encrypt and upload object # Encryption metadata is stored in a separate object: 'my-object.instruction' client.put_object(bucket: 'my-bucket', key: 'my-object', body: 'secret data') # When retrieving the object, the client automatically reads the instruction file resp = client.get_object(bucket: 'my-bucket', key: 'my-object') decrypted_data = resp.body.read

Bei Verwendung envelope_location: :instruction_file erstellt der Verschlüsselungsclient zwei S3-Objekte:

  1. Das verschlüsselte Datenobjekt (z. B.my-object)

  2. Die Anweisungsdatei, die Verschlüsselungsmetadaten enthält (z. B.my-object.instruction)

Mit dem instruction_file_suffix Parameter können Sie das für Anweisungsdateien verwendete Suffix anpassen. Der Standardwert ist .instruction.

Wann sollten die einzelnen Speichermethoden verwendet werden

  • Verwenden Sie den Metadatenspeicher für die meisten Szenarien. Dies vereinfacht die Objektverwaltung, da die Verschlüsselungsmetadaten zusammen mit dem Objekt übertragen werden.

  • Verwenden Sie Instruction File Storage, wenn die Größe der Objektmetadaten ein Problem darstellt oder wenn Sie die Verschlüsselungsmetadaten vom verschlüsselten Objekt trennen müssen. Beachten Sie, dass die Verwendung von Instruction Files die Verwaltung von zwei S3-Objekten (dem verschlüsselten Objekt und seiner Anweisungsdatei) anstelle von einem erfordert.

Warnung

Wenn Sie vom Metadatenspeicher zum Anweisungsdateispeicher wechseln (oder umgekehrt), können vorhandene Objekte, die mit der alten Speichermethode verschlüsselt wurden, von Clients, die mit der neuen Speichermethode konfiguriert wurden, nicht gelesen werden. Planen Sie Ihre Speichermethode sorgfältig und sorgen Sie für Konsistenz in Ihrer gesamten Anwendung.