View a markdown version of this page

Migrazione del client di crittografia Amazon S3 (da V1 a V2) - AWS SDK per .NET (VERSIONE 3)

La versione AWS SDK per .NET V3 ha raggiunto la fine del supporto.

Ti consigliamo di migrare alla V4.AWS SDK per .NET Per ulteriori dettagli e informazioni su come effettuare 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 utilizzi la V2 e desideri migrare alla 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 può decrittografare sia V1- che V2-encrypted oggetti, ma crittografa gli oggetti solo nel 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 nel formato. V2-compatible

Panoramica sulla migrazione

Questa migrazione avviene in tre fasi. Queste fasi vengono 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.

  1. Aggiorna i client esistenti V1-transitional trasformandoli in 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. Procedere all'aggiornamento al client V2 dopo il passaggio al client. V1-transitional

  2. Migra V1-transitional i client ai client V2 per scrivere nuovi formati. Quindi, sostituisci tutti V1-transitional i client delle tue applicazioni con client V2 e imposta il profilo di sicurezza su. V2AndLegacy L'impostazione di questo profilo di sicurezza sui client V2 consente a tali client di decrittografare gli oggetti che sono stati crittografati nel formato. V1-compatible

  3. 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 nel V2-compatible formato, imposta il profilo di sicurezza V2 su invece di. V2 V2AndLegacy Ciò 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 che le versioni precedenti del client non supportano. 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 NuGet Esegui i seguenti passaggi su ciascuna delle tue applicazioni per utilizzare il V1-transitional client.

  1. Assumi una nuova dipendenza dal Amazon.Extensions.S3.Encryptionpacchetto. Se il progetto dipende direttamente dai AWSSDK.KeyManagementServicepacchetti AWSSDK.S3o, è necessario aggiornare tali dipendenze o rimuoverle in modo che le versioni aggiornate vengano inserite in questo nuovo pacchetto.

  2. Modificate l'usingistruzione appropriata da Amazon.S3.Encryption aAmazon.Extensions.S3.Encryption, come segue:

    // using Amazon.S3.Encryption; using Amazon.Extensions.S3.Encryption;
  3. Ricostruisci e ridistribuisci l'applicazione.

Il V1-transitional client è completamente integrato API-compatible con il client V1, quindi non sono necessarie altre modifiche al codice.

Migra V1-transitional i client ai client V2 per scrivere nuovi formati

Il client V2 fa parte del pacchetto. Amazon.Extensions.S3.Encryption NuGet Consente alle applicazioni di decrittografare sia la versione V1 che V2-encrypted gli oggetti (se configurati a tale scopo), ma crittografa gli oggetti solo in formato. V2-compatible

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:

  1. Passare da EncryptionMaterials a EncryptionMaterialsV2.

    1. Quando si utilizza KMS:

      1. Fornisci un ID chiave KMS.

      2. Dichiara il metodo di crittografia che stai utilizzando, ovvero. KmsType.KmsContext

      3. Fornisci a KMS un contesto di crittografia da associare a questa chiave dati. Puoi inviare un dizionario vuoto (il contesto di crittografia Amazon verrà comunque inserito), ma è consigliabile fornire un contesto aggiuntivo.

    2. Quando si utilizzano metodi di key wrap forniti dall'utente (crittografia simmetrica o asimmetrica):

      1. Fornisci un'istanza AES o un'RSAistanza che contenga i materiali di crittografia.

      2. Dichiara quale algoritmo di crittografia utilizzare; ovvero, SymmetricAlgorithmType.AesGcm oAsymmetricAlgorithmType.RsaOaepSha1.

  2. Passa AmazonS3CryptoConfiguration a AmazonS3CryptoConfigurationV2 con la SecurityProfile proprietà impostata su. SecurityProfile.V2AndLegacy

  3. Passare da AmazonS3EncryptionClient a AmazonS3EncryptionClientV2. Questo client utilizza gli EncryptionMaterialsV2 oggetti appena convertiti AmazonS3CryptoConfigurationV2 e quelli dei 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 (fino 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 Key Wrap) RSA-OAEP-SHA1

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. Al termine di questa conversione, è possibile disabilitare la compatibilità V1 nei client V2 impostando la SecurityProfile proprietà suSecurityProfile.V2, come mostrato nel frammento seguente.

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