View a markdown version of this page

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

Der AWS SDK für .NET V3 hat das Ende des Supports erreicht.

Wir empfehlen Ihnen, auf V4 zu AWS SDK für .NET migrieren. Weitere Einzelheiten und Informationen zur Migration finden Sie in unserer Ankündigung zum Ende des Supports.

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 (V1 auf V2)

Anmerkung

Wenn Sie V2 verwenden und auf V4 migrieren möchten, finden Sie weitere Informationen unterMigration des Amazon S3-Verschlüsselungsclients (V2 auf V4).

Dieses Thema zeigt, wie Sie Ihre Anwendungen von Version 1 (V1) des Amazon Simple Storage Service (Amazon S3) Verschlüsselungsclients auf Version 2 (V2) migrieren und die Anwendungsverfügbarkeit während des gesamten Migrationsprozesses sicherstellen.

Objekte, die mit dem V2-Client verschlüsselt wurden, können mit dem V1-Client nicht entschlüsselt werden. Um die Migration zum neuen Client zu erleichtern, ohne alle Objekte auf einmal erneut verschlüsseln zu müssen, wurde ein "V1-transitional" -Client bereitgestellt. Dieser Client kann sowohl V1- als auch Objekte entschlüsseln, verschlüsselt V2-encrypted Objekte jedoch nur im Format. V1-compatible Der V2-Client kann sowohl V1- als auch V2-encrypted Objekte entschlüsseln (wenn er für V1-Objekte aktiviert ist), verschlüsselt Objekte jedoch nur im Format. V2-compatible

Überblick über die Migration

Diese Migration erfolgt in drei Phasen. Diese Phasen werden hier vorgestellt und später ausführlich beschrieben. Jede Phase muss für alle Clients abgeschlossen sein, die gemeinsame Objekte verwenden, bevor die nächste Phase gestartet wird.

  1. Aktualisieren Sie bestehende Clients auf V1-transitional Clients, damit sie neue Formate lesen können. Aktualisieren Sie zunächst Ihre Anwendungen so, dass sie vom V1-transitional Client und nicht vom V1-Client abhängig sind. Der V1-transitional Client ermöglicht es Ihrem vorhandenen Code, Objekte zu entschlüsseln, die von den neuen V2-Clients geschrieben wurden, und Objekte, die im V1-compatible Format geschrieben wurden.

    Anmerkung

    Der V1-transitional Client wird nur für Migrationszwecke bereitgestellt. Fahren Sie mit dem Upgrade auf den V2-Client fort, nachdem Sie zum V1-transitional Client gewechselt sind.

  2. Migrieren Sie V1-transitional Clients zu V2-Clients, um neue Formate zu schreiben. Ersetzen Sie als Nächstes alle V1-transitional Clients in Ihren Anwendungen durch V2-Clients und setzen Sie das Sicherheitsprofil aufV2AndLegacy. Wenn Sie dieses Sicherheitsprofil auf V2-Clients einrichten, können diese Clients Objekte entschlüsseln, die im V1-compatible Format verschlüsselt wurden.

  3. Aktualisieren Sie die V2-Clients so, dass sie die V1-Formate nicht mehr lesen. Nachdem alle Clients auf V2 migriert wurden und alle Objekte im V2-compatible Format verschlüsselt oder erneut verschlüsselt wurden, setzen Sie das V2-Sicherheitsprofil schließlich auf V2 statt auf. V2AndLegacy Dadurch wird die Entschlüsselung formatierter Objekte verhindert. V1-compatible

Aktualisieren Sie bestehende Clients auf V1-transitional Clients, um neue Formate lesen zu können

Der V2-Verschlüsselungsclient verwendet Verschlüsselungsalgorithmen, die ältere Versionen des Clients nicht unterstützen. Der erste Schritt der Migration besteht darin, Ihre V1-Entschlüsselungsclients zu aktualisieren, damit sie das neue Format lesen können.

Der V1-transitional Client ermöglicht es Ihren Anwendungen, sowohl V1- V2-encrypted als auch Objekte zu entschlüsseln. Dieser Client ist Teil des Amazon.Extensions.S3.Encryption NuGet Pakets. Führen Sie die folgenden Schritte für jede Ihrer Anwendungen aus, um den V1-transitional Client zu verwenden.

  1. Erstellen Sie eine neue Abhängigkeit vom Amazon.Extensions.S3.Encryption Paket. Wenn Ihr Projekt direkt von den AWSSDK.S3 AWSSDK.KeyManagementService OR-Paketen abhängt, müssen Sie entweder diese Abhängigkeiten aktualisieren oder sie entfernen, damit ihre aktualisierten Versionen mit diesem neuen Paket übernommen werden.

  2. Ändern Sie die entsprechende using Anweisung wie folgt von Amazon.S3.Encryption in: Amazon.Extensions.S3.Encryption

    // using Amazon.S3.Encryption; using Amazon.Extensions.S3.Encryption;
  3. Erstellen Sie Ihre Anwendung neu und stellen Sie sie erneut bereit.

Der V1-transitional Client ist vollständig API-compatible mit dem V1-Client kompatibel, sodass keine weiteren Codeänderungen erforderlich sind.

Migrieren Sie V1-transitional Clients zu V2-Clients, um neue Formate zu schreiben

Der V2-Client ist Teil des Amazon.Extensions.S3.Encryption NuGet Pakets. Er ermöglicht Ihren Anwendungen, sowohl V1- als auch V2-encrypted Objekte zu entschlüsseln (sofern dies konfiguriert ist), verschlüsselt Objekte jedoch nur im V2-compatible Format.

Nachdem Sie Ihre vorhandenen Clients auf das neue Verschlüsselungsformat aktualisiert haben, können Sie Ihre Anwendungen sicher auf die V2-Verschlüsselungs- und Entschlüsselungsclients aktualisieren. Führen Sie für jede Ihrer Anwendungen die folgenden Schritte aus, um den V2-Client zu verwenden:

  1. Ändern Sie EncryptionMaterials zu EncryptionMaterialsV2.

    1. Bei Verwendung von KMS:

      1. Geben Sie eine KMS-Schlüssel-ID an.

      2. Deklarieren Sie die Verschlüsselungsmethode, die Sie verwenden; das heißt,KmsType.KmsContext.

      3. Stellen Sie KMS einen Verschlüsselungskontext zur Verfügung, der diesem Datenschlüssel zugeordnet werden soll. Sie können ein leeres Wörterbuch senden (der Amazon-Verschlüsselungskontext wird trotzdem zusammengeführt), es wird jedoch empfohlen, zusätzlichen Kontext anzugeben.

    2. Wenn Sie vom Benutzer bereitgestellte Key-Wrap-Methoden verwenden (symmetrische oder asymmetrische Verschlüsselung):

      1. Stellen Sie eine AES oder eine RSA Instanz bereit, die die Verschlüsselungsmaterialien enthält.

      2. Geben Sie an, welcher Verschlüsselungsalgorithmus verwendet werden soll. Das heißt, SymmetricAlgorithmType.AesGcm oderAsymmetricAlgorithmType.RsaOaepSha1.

  2. Wechseln Sie AmazonS3CryptoConfiguration zu, AmazonS3CryptoConfigurationV2 wobei die SecurityProfile Eigenschaft auf festgelegt istSecurityProfile.V2AndLegacy.

  3. Ändern Sie AmazonS3EncryptionClient zu AmazonS3EncryptionClientV2. Dieser Client verwendet die neu AmazonS3CryptoConfigurationV2 konvertierten EncryptionMaterialsV2 Objekte aus den vorherigen Schritten.

Beispiel: KMS zu KMS+Kontext

Pre-migration

using System.Security.Cryptography; using Amazon.S3.Encryption; var encryptionMaterial = new EncryptionMaterials("1234abcd-12ab-34cd-56ef-1234567890ab"); var configuration = new AmazonS3CryptoConfiguration() { StorageMode = CryptoStorageMode.ObjectMetadata }; var encryptionClient = new AmazonS3EncryptionClient(configuration, encryptionMaterial);

Post-migration

using System.Security.Cryptography; using Amazon.Extensions.S3.Encryption; using Amazon.Extensions.S3.Encryption.Primitives; var encryptionContext = new Dictionary<string, string>(); var encryptionMaterial = new EncryptionMaterialsV2("1234abcd-12ab-34cd-56ef-1234567890ab", KmsType.KmsContext, encryptionContext); var configuration = new AmazonS3CryptoConfigurationV2(SecurityProfile.V2AndLegacy) { StorageMode = CryptoStorageMode.ObjectMetadata }; var encryptionClient = new AmazonS3EncryptionClientV2(configuration, encryptionMaterial);

Beispiel: Symmetrischer Algorithmus (zu Key Wrap) AES-CBC AES-GCM

StorageMode kann ObjectMetadata oder InstructionFile sein.

Pre-migration

using System.Security.Cryptography; using Amazon.S3.Encryption; var symmetricAlgorithm = Aes.Create(); var encryptionMaterial = new EncryptionMaterials(symmetricAlgorithm); var configuration = new AmazonS3CryptoConfiguration() { StorageMode = CryptoStorageMode.ObjectMetadata }; var encryptionClient = new AmazonS3EncryptionClient(configuration, encryptionMaterial);

Post-migration

using System.Security.Cryptography; using Amazon.Extensions.S3.Encryption; using Amazon.Extensions.S3.Encryption.Primitives; var symmetricAlgorithm = Aes.Create(); var encryptionMaterial = new EncryptionMaterialsV2(symmetricAlgorithm, SymmetricAlgorithmType.AesGcm); var configuration = new AmazonS3CryptoConfigurationV2(SecurityProfile.V2AndLegacy) { StorageMode = CryptoStorageMode.ObjectMetadata }; var encryptionClient = new AmazonS3EncryptionClientV2(configuration, encryptionMaterial);
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.

Beispiel: Asymmetrischer Algorithmus (RSA to RSA-OAEP-SHA1 Key Wrap)

StorageMode kann ObjectMetadata oder InstructionFile sein.

Pre-migration

using System.Security.Cryptography; using Amazon.S3.Encryption; var asymmetricAlgorithm = RSA.Create(); var encryptionMaterial = new EncryptionMaterials(asymmetricAlgorithm); var configuration = new AmazonS3CryptoConfiguration() { StorageMode = CryptoStorageMode.ObjectMetadata }; var encryptionClient = new AmazonS3EncryptionClient(configuration, encryptionMaterial);

Post-migration

using System.Security.Cryptography; using Amazon.Extensions.S3.Encryption; using Amazon.Extensions.S3.Encryption.Primitives; var asymmetricAlgorithm = RSA.Create(); var encryptionMaterial = new EncryptionMaterialsV2(asymmetricAlgorithm, AsymmetricAlgorithmType.RsaOaepSha1); var configuration = new AmazonS3CryptoConfigurationV2(SecurityProfile.V2AndLegacy) { StorageMode = CryptoStorageMode.ObjectMetadata }; var encryptionClient = new AmazonS3EncryptionClientV2(configuration, encryptionMaterial);

Aktualisieren Sie die V2-Clients so, dass sie V1-Formate nicht mehr lesen

Irgendwann werden alle Objekte mit einem V2-Client verschlüsselt oder erneut verschlüsselt worden sein. Nach Abschluss dieser Konvertierung können Sie die V1-Kompatibilität in den V2-Clients deaktivieren, indem Sie die SecurityProfile Eigenschaft auf setzenSecurityProfile.V2, wie im folgenden Codeausschnitt gezeigt.

//var configuration = new AmazonS3CryptoConfigurationV2(SecurityProfile.V2AndLegacy); var configuration = new AmazonS3CryptoConfigurationV2(SecurityProfile.V2);