Migration des Amazon S3 S3-Verschlüsselungsclients - AWS SDK for .NET

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

In diesem Thema erfahren Sie, 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 vereinfachen, ohne alle Objekte auf einmal erneut verschlüsseln zu müssen, wurde ein „V1-Transitional“ -Client bereitgestellt. Dieser Client kann sowohl V1- als auch V2-verschlüsselte Objekte entschlüsseln, verschlüsselt Objekte jedoch nur im V1-kompatiblen Format. Der V2-Client kann sowohl V1- als auch V2-verschlüsselte Objekte entschlüsseln (sofern er für V1-Objekte aktiviert ist), verschlüsselt Objekte jedoch nur im V2-kompatiblen Format.

Ü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, die gemeinsam genutzte Objekte verwenden, abgeschlossen sein, bevor die nächste Phase gestartet wird.

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

    Anmerkung

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

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

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

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 so zu aktualisieren, dass sie das neue Format lesen können.

Mit dem V1-Transitional-Client können Ihre Anwendungen sowohl V1- als auch V2-verschlüsselte Objekte entschlüsseln. Dieser Client ist Teil des Amazon.Extensions.S3.Encryption-Pakets. NuGet Führen Sie die folgenden Schritte für jede Ihrer Anwendungen aus, um den V1-Transitiony-Client zu verwenden.

  1. Gehen Sie von einer neuen Abhängigkeit vom Paket Amazon.Extensions.S3.Encryption aus. Wenn Ihr Projekt direkt vom .S3 abhängt oder. AWSSDK AWSSDK KeyManagementServicePakete, Sie müssen diese Abhängigkeiten entweder aktualisieren oder entfernen, damit ihre aktualisierten Versionen mit diesem neuen Paket übernommen werden.

  2. Ändern Sie die entsprechende using Anweisung wie folgt von Amazon.S3.Encryption bisAmazon.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-Transitiony-Client ist vollständig API-kompatibel mit dem V1-Client, sodass keine weiteren Codeänderungen erforderlich sind.

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

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

Nachdem Sie Ihre vorhandenen Clients so aktualisiert haben, dass sie das neue Verschlüsselungsformat lesen, können Sie damit fortfahren, Ihre Anwendungen sicher auf die V2-Verschlüsselungs- und Entschlüsselungsclients zu 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 mit diesem Datenschlüssel verknüpft werden soll. Sie können ein leeres Wörterbuch senden (der Amazon-Verschlüsselungskontext wird trotzdem zusammengeführt), aber die Angabe von zusätzlichem Kontext ist erwünscht.

    2. Wenn Sie vom Benutzer bereitgestellte Methoden zum Umbrechen von Schlüsseln verwenden (symmetrische oder asymmetrische Verschlüsselung):

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

      2. Deklarieren Sie, welcher Verschlüsselungsalgorithmus verwendet werden soll, d. SymmetricAlgorithmType.AesGcm h. oderAsymmetricAlgorithmType.RsaOaepSha1.

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

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

Beispiel: KMS zu KMS+Kontext

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

Nach der 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 (AES-CBC zu AES-GCM Key Wrap)

StorageMode kann ObjectMetadata oder InstructionFile sein.

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

Nach der 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 bei der Entschlüsselung 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.

Beispiel: Asymmetrischer Algorithmus (Schlüsselumbruch von RSA zu RSA-OAEP-SHA1)

StorageMode kann ObjectMetadata oder InstructionFile sein.

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

Nach der 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 V2-Clients so, dass sie V1-Formate nicht mehr lesen

Irgendwann werden alle Objekte mit einem V2-Client verschlüsselt oder neu 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);