Migration des Amazon S3 S3-Verschlüsselungsclients (V2 auf V3) - AWS SDK for 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 S3-Verschlüsselungsclients (V2 auf V3)

Anmerkung

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

In diesem Thema erfahren Sie, 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-Richtlinien ein, um die Sicherheit zu erhöhen und vor der Manipulation von Datenschlüsseln zu schützen.

Überblick über die Migration

Version 3 des Amazon S3 S3-Verschlüsselungsclients führt AES GCM mit Key Commitment für mehr Sicherheit ein. Dieser neue Verschlüsselungsalgorithmus bietet Schutz vor Manipulation von Datenschlüsseln und gewährleistet die Integrität verschlüsselter Daten. Die Migration zu V3 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 for 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 verwendet AWS SDKs, müssen Sie jedes SDK separat aktualisieren.

2. Migrieren Sie Verschlüsselungs- und Entschlüsselungsclients auf V3. 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-Richtlinien 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. Ausführliche Anweisungen Migration des Amazon S3 S3-Verschlüsselungsclients (V1 auf V2) zur Migration von V1 zu V2 finden Sie unter.

Die Funktionen von V3 verstehen

Version 3 des Amazon S3 S3-Verschlüsselungsclients führt zwei wichtige Sicherheitsfunktionen ein: 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.

Richtlinien für Verpflichtungen

Commitment-Richtlinien 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 genau dem 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üsselzusage und ermöglicht die Entschlüsselung sowohl von Objekten mit als auch ohne Schlüsselzusage.

  • Verschlüsselungsverhalten: Objekte werden ohne Schlüsselzuweisung 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 Schlüsselbindung und ermöglicht möglicherweise Manipulationen. 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 sowohl von Objekten mit als auch ohne Schlüsselzusage.

  • Verschlüsselungsverhalten: Objekte werden mit Key Commitment unter Verwendung von AES GCM mit Key Commitment verschlüsselt.

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

  • Auswirkungen auf die Sicherheit: Neue Objekte profitieren vom Key-Commitment-Schutz, während bestehende Objekte ohne Key Commitment weiterhin gelesen werden können. Dadurch wird ein Gleichgewicht zwischen Sicherheit und Abwärtskompatibilität während der Migration gewährleistet.

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

REQUIRE_ENCRYPT_REQUIRE_DECRYPT

Diese Richtlinie verschlüsselt Objekte mit Key Commitment und erlaubt nur die Entschlüsselung von Objekten, die mit Key Commitment verschlüsselt wurden.

  • Verschlüsselungsverhalten: Objekte werden mit Key Commitment unter Verwendung von AES GCM mit Key Commitment verschlüsselt.

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

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

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

Anmerkung

Beginnen Sie bei der Planung Ihrer Migration damit, die Abwärtskompatibilität aufrechtzuerhalten und gleichzeitig die Sicherheitsvorteile REQUIRE_ENCRYPT_ALLOW_DECRYPT zu nutzen, die sich aus dem Einsatz von Key Commitment für neue Objekte ergeben. Wechseln Sie erst zu, REQUIRE_ENCRYPT_REQUIRE_DECRYPT nachdem alle Objekte erneut verschlüsselt und alle Clients auf Version 3 aktualisiert wurden.

AES GCM mit zentraler Verpflichtung

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 mehr Sicherheit bietet, indem er vor Manipulation von Datenschlüsseln schützt. 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 es sich von früheren Algorithmen

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

Ohne Schlüsselübergabe ist es für einen Angreifer möglich, den verschlüsselten Datenschlüssel in einer Befehlsdatei so zu ändern, dass er mit 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 Unterstützung für das Lesen von V3-Formaten beinhalten. V2-Clients ohne diese Übergangsunterstützung können Befehlsdateien, die mit verschlüsselt wurden, nicht entschlüsseln. ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY

Warnung

Bevor Sie die Verschlüsselung mit ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY (mithilfe von REQUIRE_ENCRYPT_ALLOW_DECRYPT oder REQUIRE_ENCRYPT_REQUIRE_DECRYPT Commitment-Richtlinien) aktivieren, stellen Sie sicher, dass alle Clients, die Ihre verschlüsselten Objekte lesen müssen, auf Version 3 oder eine Übergangsversion aktualisiert wurden, die V3-Formate unterstützt. Wenn V2-Clients ohne Übergangsunterstützung versuchen, Objekte zu lesen, mit denen verschlüsselt wurdeALG_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 weiterhin zu verschlüsseln, 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üsselzusage 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 for 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 (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 bietet Unterstützung für die Entschlüsselung 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'

Gemfiles verwenden

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

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

  2. Führen Sie bundle update aws-sdk-s3 den Befehl aus, um das Gem zu aktualisieren.

  3. Führen Sie den Befehl aus, um Ihre Version zu überprüfenbundle 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 werden jedoch weiterhin neue Objekte mit V2-Algorithmen verschlüsseln, bis Sie sie, wie im nächsten Abschnitt beschrieben, auf V3 migrieren.

Migrieren Sie Verschlüsselungs- und Entschlüsselungsclients zu V3

Nachdem Sie Ihre Clients so aktualisiert haben, dass sie die neuen Verschlüsselungsformate lesen können, 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 können.

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. Dadurch wird überprüft, ob das Objekt seit der Verschlüsselung nicht geändert wurde.

Konfiguration von V3-Clients

Der V3-Verschlüsselungsclient führt neue Konfigurationsoptionen ein, mit denen das Verhalten bei der Schlüsselübergabe und die Abwärtskompatibilität gesteuert werden können. Das Verständnis dieser Optionen ist für eine erfolgreiche Migration unerlässlich.

commitment_policy

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

  • :require_encrypt_allow_decrypt- Verschlüsselt neue Objekte mit Key Commitment und ermöglicht die Entschlüsselung von Objekten mit oder ohne Key Commitment. Dies ist die empfohlene Einstellung für die Migration, da sie mehr 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 (mithilfe 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 Key Commitment und ermöglicht nur die Entschlüsselung von Objekten, die mit Key Commitment verschlüsselt wurden. Verwenden Sie diese Einstellung erst, nachdem alle Objekte mit Key Commitment erneut verschlüsselt wurden und alle Clients auf Version V3 aktualisiert wurden.

security_profile

Der security_profile Parameter bestimmt die Unterstützung für das Lesen von Objekten, die mit ä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, Objekte zu entschlüsseln, 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, nur Objekte zu entschlüsseln, die 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 Legacy-Objekte vorhanden sind.

envelope_location

Der envelope_location Parameter bestimmt, wo 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 der Verwendung von Metadatenspeichern gilt AES GCM with Key Commitment nicht.

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

Bei der Verwendung können Sie optional den instruction_file_suffix Parameter angeben:instruction_file, um das für Befehlsdateiobjekte 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 commitment_policy: :require_encrypt_allow_decrypt und einsecurity_profile: :v3_and_legacy. Auf diese Weise können Ihre V3-Clients neue Objekte mit Schlüsselbindung verschlüsseln und gleichzeitig alle vorhandenen V1- und V2-Objekte entschlüsseln.

  2. Nach dem Upgrade aller Clients: Verwenden Sie weiterhin alle Objekte, für die ein Schlüsselverbindungsschutz erforderlich ist, commitment_policy: :require_encrypt_allow_decrypt und zwar solange, security_profile: :v3_and_legacy bis Sie alle Objekte erneut verschlüsselt haben.

  3. Vollständige V3-Erzwingung: Erst wenn alle Objekte mit Key Commitment 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 noch V2-Objekte existieren).

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

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

Nachdem Sie Ihre Clients so aktualisiert haben, dass sie die neuen Verschlüsselungsformate lesen können, 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 können.

Verwenden von V3-Verschlüsselungsclients

Vor der 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

Nach der 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 besteht in der Hinzufügung des commitment_policy Parameters. Wenn Sie ihn auf einstellen, :require_encrypt_require_decrypt wird sichergestellt, dass neue Objekte mit Key Commitment verschlüsselt werden und dass der Client nur Objekte entschlüsselt, die mit Key Commitment verschlüsselt wurden, wodurch die Sicherheit vor Manipulation von Datenschlüsseln erhöht wird.

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 spezifische Migrationsszenarien und Konfigurationsoptionen, die bei der Migration von V2 zu V3 nützlich sein können.

Befehlsdatei und 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 Befehlsdatei. Die Wahl der Speichermethode wirkt sich darauf aus, welche Objekte von AES GCM mit Key Commitment-Schutz profitieren.

Metadaten-Speicher (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 er die Verschlüsselungsmetadaten zusammen mit dem Objekt behält und es nicht erforderlich ist, separate Befehlsdateiobjekte zu verwalten.

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 des Metadatenspeichers gilt AES GCM with Key Commitment nicht für den verschlüsselten Datenschlüssel. Die Inhaltsverschlüsselung profitiert jedoch immer noch von der Schlüsselzusage, wenn Sie commitment_policy: :require_encrypt_allow_decrypt oder :require_encrypt_require_decrypt verwenden.

Speicherung von Befehlsdateien

Alternativ können Sie den Verschlüsselungsclient so konfigurieren, dass Verschlüsselungsmetadaten in einem separaten S3-Objekt gespeichert werden, das als Befehlsdatei bezeichnet wird. Bei der Verwendung von Instruction Files mit V3 wird der verschlüsselte Datenschlüssel durch AES GCM mit Key Commitment geschützt, was zusätzliche Sicherheit vor 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 der Verwendung envelope_location: :instruction_file erstellt der Verschlüsselungsclient zwei S3-Objekte:

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

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

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

Wann sollten die einzelnen Speichermethoden verwendet werden

  • Verwenden Sie den Metadatenspeicher für die meisten Szenarien. Es vereinfacht die Objektverwaltung, da 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 Verschlüsselungsmetadaten vom verschlüsselten Objekt trennen müssen. Beachten Sie, dass für die Verwendung von Befehlsdateien zwei S3-Objekte (das verschlüsselte Objekt und die zugehörige Befehlsdatei) statt eines verwaltet werden müssen.

Warnung

Wenn Sie vom Metadatenspeicher zum Speicher für Befehlsdateien 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.