Il AWS SDK per .NET V3 ha raggiunto la fine del supporto.
Ti consigliamo di eseguire la migrazione alla V4. AWS SDK per .NET Per ulteriori dettagli e informazioni su come eseguire la migrazione, consulta il nostro annuncio sulla fine del supporto.
Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Migrazione del client di crittografia Amazon S3 (da V1 a V2)
Nota
Se stai usando V2 e desideri migrare a V4, consulta. Migrazione del client di crittografia Amazon S3 (da V2 a V4)
Questo argomento mostra come migrare le applicazioni dalla versione 1 (V1) del client di crittografia Amazon Simple Storage Service (Amazon S3) alla versione 2 (V2) e garantire la disponibilità delle applicazioni durante tutto il processo di migrazione.
Gli oggetti crittografati con il client V2 non possono essere decrittografati con il client V1. Per facilitare la migrazione al nuovo client senza dover crittografare nuovamente tutti gli oggetti contemporaneamente, è stato fornito un client "»V1-transitional. Questo client è in grado di decrittografare sia la versione V1 che V2-encrypted gli oggetti, ma crittografa gli oggetti solo in formato. V1-compatible Il client V2 può decrittografare sia V1 che V2-encrypted oggetti (se abilitato per gli oggetti V1), ma crittografa gli oggetti solo in formato. V2-compatible
Panoramica sulla migrazione
Questa migrazione avviene in tre fasi. Queste fasi sono introdotte qui e descritte in dettaglio più avanti. Ogni fase deve essere completata per tutti i client che utilizzano oggetti condivisi prima di iniziare la fase successiva.
-
Aggiorna i client esistenti in V1-transitional client per leggere nuovi formati. Innanzitutto, aggiorna le tue applicazioni in modo che dipendano dal V1-transitional client anziché dal client V1. Il V1-transitional client consente al codice esistente di decrittografare gli oggetti scritti dai nuovi client V2 e gli oggetti scritti in formato. V1-compatible
Nota
Il V1-transitional client viene fornito solo a scopo di migrazione. Procedi all'aggiornamento al client V2 dopo il passaggio al client. V1-transitional
-
Esegui la migrazione V1-transitional dei client verso i client V2 per scrivere nuovi formati. Quindi, sostituisci tutti V1-transitional i client nelle tue applicazioni con client V2 e imposta il profilo di sicurezza su.
V2AndLegacyL'impostazione di questo profilo di sicurezza sui client V2 consente a tali client di decrittografare gli oggetti crittografati in formato. V1-compatible -
Aggiorna i client V2 in modo che non leggano più i formati V1. Infine, dopo che tutti i client sono stati migrati alla V2 e tutti gli oggetti sono stati crittografati o ricrittografati in V2-compatible formato, imposta il profilo di sicurezza V2 su invece di.
V2V2AndLegacyCiò impedisce la decrittografia degli oggetti in formato. V1-compatible
Aggiorna i client esistenti in V1-transitional client per leggere nuovi formati
Il client di crittografia V2 utilizza algoritmi di crittografia non supportati dalle versioni precedenti del client. Il primo passo della migrazione consiste nell'aggiornare i client di decrittografia V1 in modo che possano leggere il nuovo formato.
Il V1-transitional client consente alle applicazioni di decrittografare sia la V1 che gli oggetti. V2-encrypted Questo client fa parte del pacchetto. Amazon.Extensions.S3.Encryption
-
Crea una nuova dipendenza dal Amazon.Extensions.S3.Encryption
pacchetto. Se il tuo progetto dipende direttamente dai AWSSDK.KeyManagementService pacchetti AWSSDK.S3 o, devi aggiornare tali dipendenze o rimuoverle in modo che le loro versioni aggiornate vengano inserite in questo nuovo pacchetto. -
Modificate l'
usingistruzione appropriata daAmazon.S3.EncryptionaAmazon.Extensions.S3.Encryption, come segue:// using Amazon.S3.Encryption; using Amazon.Extensions.S3.Encryption; -
Ricostruisci e ridistribuisci l'applicazione.
Il V1-transitional client utilizza completamente API-compatible il client V1, quindi non sono necessarie altre modifiche al codice.
Esegui la migrazione V1-transitional dei client verso i client V2 per scrivere nuovi formati
Il client V2 fa parte del pacchetto. Amazon.Extensions.S3.Encryption
Dopo aver aggiornato i client esistenti per leggere il nuovo formato di crittografia, è possibile procedere all'aggiornamento sicuro delle applicazioni ai client di crittografia e decrittografia V2. Esegui i seguenti passaggi su ciascuna delle tue applicazioni per utilizzare il client V2:
-
Passare da
EncryptionMaterialsaEncryptionMaterialsV2.-
Quando si utilizza KMS:
-
Fornisci un ID chiave KMS.
-
Dichiara il metodo di crittografia che stai utilizzando, ovvero.
KmsType.KmsContext -
Fornisci a KMS un contesto di crittografia da associare a questa chiave di dati. Puoi inviare un dizionario vuoto (il contesto di crittografia Amazon verrà comunque unito), ma è consigliabile fornire un contesto aggiuntivo.
-
-
Quando si utilizzano metodi di key wrap forniti dall'utente (crittografia simmetrica o asimmetrica):
-
Fornisci una
AESo un'RSAistanza che contenga i materiali di crittografia. -
Dichiara quale algoritmo di crittografia utilizzare, ovvero,
SymmetricAlgorithmType.AesGcmoAsymmetricAlgorithmType.RsaOaepSha1.
-
-
-
AmazonS3CryptoConfigurationPassare aAmazonS3CryptoConfigurationV2con laSecurityProfileproprietà impostata su.SecurityProfile.V2AndLegacy -
Passare da
AmazonS3EncryptionClientaAmazonS3EncryptionClientV2. Questo client prende i nuoviEncryptionMaterialsV2oggetti convertitiAmazonS3CryptoConfigurationV2e i passaggi precedenti.
Esempio: da KMS a KMS+Context
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);
Esempio: algoritmo simmetrico (a Key Wrap) AES-CBC AES-GCM
StorageMode può essere ObjectMetadata o InstructionFile.
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);
Nota
Quando decifrate con AES-GCM, leggete l'intero oggetto fino alla fine prima di iniziare a utilizzare i dati decrittografati. Questo serve a verificare che l'oggetto non sia stato modificato da quando è stato crittografato.
Esempio: algoritmo asimmetrico (da RSA a RSA-OAEP-SHA1 Key Wrap)
StorageMode può essere ObjectMetadata o InstructionFile.
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);
Aggiorna i client V2 in modo che non leggano più i formati V1
Alla fine, tutti gli oggetti saranno stati crittografati o ricrittografati utilizzando un client V2. Una volta completata questa conversione, puoi disabilitare la compatibilità V1 nei client V2 impostando la SecurityProfile proprietà suSecurityProfile.V2, come mostrato nello snippet seguente.
//var configuration = new AmazonS3CryptoConfigurationV2(SecurityProfile.V2AndLegacy); var configuration = new AmazonS3CryptoConfigurationV2(SecurityProfile.V2);