La versione 4 (V4) di SDK for .NET è disponibile in anteprima! Per visualizzare le informazioni su questa nuova versione in anteprima, consulta la Guida per gli sviluppatori AWS SDK for .NET (anteprima della versione 4).
Tieni presente che la versione 4 dell'SDK è in anteprima, pertanto il suo contenuto è soggetto a modifiche.
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à.
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 ricrittografare tutti gli oggetti contemporaneamente, è stato fornito un client «V1-transitional». Questo client può decrittografare gli oggetti crittografati V1 e V2, ma crittografa gli oggetti solo in formato compatibile con V1. Il client V2 può decrittografare gli oggetti crittografati V1 e V2 (se abilitato per gli oggetti V1), ma crittografa gli oggetti solo in formato compatibile con V2.
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.
-
Aggiorna i client esistenti ai client di transizione V1 per leggere nuovi formati. Innanzitutto, aggiorna le tue applicazioni in modo che dipendano dal client di transizione V1 anziché dal client V1. Il client di transizione V1 consente al codice esistente di decrittografare gli oggetti scritti dai nuovi client V2 e gli oggetti scritti in formato compatibile con V1.
Nota
Il client v1-Transitional viene fornito solo a scopo di migrazione. Procedi all'aggiornamento al client V2 dopo il passaggio al client v1-Transitional.
-
Migra i client di transizione V1 ai client V2 per scrivere nuovi formati. Quindi, sostituisci tutti i client di transizione V1 nelle 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 crittografati in un formato compatibile con V1. -
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 un formato compatibile con V2, imposta il profilo di sicurezza V2 su invece di.
V2
V2AndLegacy
Ciò impedisce la decrittografia di oggetti in formato compatibile con V1.
Aggiorna i client esistenti ai client di transizione V1 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 client di transizione V1 consente alle applicazioni di decrittografare oggetti crittografati V1 e V2. Questo client fa parte del pacchetto Amazon.Extensions.S3.Encryption.
-
Assumi una nuova dipendenza dal pacchetto Amazon.Extensions.S3.Encryption.
Se il tuo progetto dipende direttamente dal file .S3 o. AWSSDK AWSSDK KeyManagementServicepacchetti, è necessario aggiornare tali dipendenze o rimuoverle in modo che le loro versioni aggiornate vengano inserite in questo nuovo pacchetto. -
Modificate l'
using
istruzione appropriata daAmazon.S3.Encryption
aAmazon.Extensions.S3.Encryption
, come segue:// using Amazon.S3.Encryption; using Amazon.Extensions.S3.Encryption;
-
Ricostruisci e ridistribuisci l'applicazione.
Il client di transizione V1 è completamente compatibile con l'API con il client V1, quindi non sono necessarie altre modifiche al codice.
Esegui la migrazione dei client di transizione V1 ai 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
EncryptionMaterials
aEncryptionMaterialsV2
.-
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 dati. Puoi inviare un dizionario vuoto (il contesto di crittografia Amazon verrà comunque inserito), ma è consigliabile fornire un contesto aggiuntivo.
-
-
Quando si utilizzano metodi di key wrap forniti dall'utente (crittografia simmetrica o asimmetrica):
-
Fornisci un'istanza
AES
o un'RSA
istanza che contenga i materiali di crittografia. -
Dichiara quale algoritmo di crittografia utilizzare; ovvero,
SymmetricAlgorithmType.AesGcm
oAsymmetricAlgorithmType.RsaOaepSha1
.
-
-
-
Passa
AmazonS3CryptoConfiguration
aAmazonS3CryptoConfigurationV2
con laSecurityProfile
proprietà impostata su.SecurityProfile.V2AndLegacy
-
Passare da
AmazonS3EncryptionClient
aAmazonS3EncryptionClientV2
. Questo client utilizza gliEncryptionMaterialsV2
oggetti appena convertitiAmazonS3CryptoConfigurationV2
e quelli dei passaggi precedenti.
Esempio: da KMS a KMS+Context
Premigrazione
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-migrazione
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 (portachiavi da AES-CBC a AES-GCM)
StorageMode
può essere ObjectMetadata
o InstructionFile
.
Pre-migrazione
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-migrazione
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-SHA 1 Key Wrap)
StorageMode
può essere ObjectMetadata
o InstructionFile
.
Premigrazione
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-migrazione
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);