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.
-
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.
-
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 auf
V2AndLegacy. Wenn Sie dieses Sicherheitsprofil auf V2-Clients einrichten, können diese Clients Objekte entschlüsseln, die im V1-compatible Format verschlüsselt wurden. -
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
V2statt auf.V2AndLegacyDadurch 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
-
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. -
Ändern Sie die entsprechende
usingAnweisung wie folgt vonAmazon.S3.Encryptionin:Amazon.Extensions.S3.Encryption// using Amazon.S3.Encryption; using Amazon.Extensions.S3.Encryption; -
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
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:
-
Ändern Sie
EncryptionMaterialszuEncryptionMaterialsV2.-
Bei Verwendung von KMS:
-
Geben Sie eine KMS-Schlüssel-ID an.
-
Deklarieren Sie die Verschlüsselungsmethode, die Sie verwenden; das heißt,
KmsType.KmsContext. -
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.
-
-
Wenn Sie vom Benutzer bereitgestellte Key-Wrap-Methoden verwenden (symmetrische oder asymmetrische Verschlüsselung):
-
Stellen Sie eine
AESoder eineRSAInstanz bereit, die die Verschlüsselungsmaterialien enthält. -
Geben Sie an, welcher Verschlüsselungsalgorithmus verwendet werden soll. Das heißt,
SymmetricAlgorithmType.AesGcmoderAsymmetricAlgorithmType.RsaOaepSha1.
-
-
-
Wechseln Sie
AmazonS3CryptoConfigurationzu,AmazonS3CryptoConfigurationV2wobei dieSecurityProfileEigenschaft auf festgelegt istSecurityProfile.V2AndLegacy. -
Ändern Sie
AmazonS3EncryptionClientzuAmazonS3EncryptionClientV2. Dieser Client verwendet die neuAmazonS3CryptoConfigurationV2konvertiertenEncryptionMaterialsV2Objekte 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);