As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Migração de cliente de criptografia Amazon S3
Este tópico mostra como migrar suas aplicações da Versão 1 (V1) do cliente de criptografia do Amazon Simple Storage Service (Amazon S3) para a Versão 2 (V2) e garantir a disponibilidade da aplicação durante todo o processo de migração.
Objetos criptografados com o cliente V2 não podem ser descriptografados com o cliente V1. Para facilitar a migração para o novo cliente sem precisar recriptografar todos os objetos de uma vez, foi fornecido um cliente “V1 de transição”. Esse cliente pode descriptografar objetos criptografados com a V1 e V2, mas criptografa somente objetos em formato compatível com a V1. O cliente V2 pode descriptografar objetos criptografados em V1 e V2 (quando habilitado para objetos V1), mas criptografa objetos somente em formato compatível com V2.
Visão geral da migração
Essa migração acontece em três fases: Essas fases são apresentadas aqui e serão descritas em detalhes posteriormente. Cada fase deve ser concluída para todos os clientes que usam objetos compartilhados antes que a próxima fase seja iniciada.
-
Atualize os clientes existentes para clientes V1 de transição para ler novos formatos. Primeiro, atualize seus aplicativos para que dependam do cliente V1 de transição em vez do cliente V1. O cliente V1 de transição permite que seu código existente descriptografe objetos escritos pelos novos clientes V2 e objetos escritos em formato compatível com a V1.
nota
O cliente V1 de transição é fornecido somente para fins de migração. Prossiga com a atualização para o cliente V2 depois de passar para o cliente de transição V1.
-
Migre clientes V1 de transição para clientes V2 para escrever novos formatos. Em seguida, substitua todos os clientes V1 de transição em seus aplicativos por clientes V2 e defina o perfil de segurança como
V2AndLegacy
. Definir esse perfil de segurança em clientes V2 permite que esses clientes descriptografem objetos que foram criptografados em formato compatível com V1. -
Atualize os clientes V2 para que não leiam mais os formatos V1. Por fim, depois que todos os clientes tiverem migrado para a V2 e todos os objetos tiverem sido criptografados ou recriptografados em um formato compatível com a V2, defina o perfil de segurança da V2 como
V2
em vez deV2AndLegacy
. Isso evita a descriptografia de objetos que estão no formato compatível com V1.
Atualize os clientes existentes para clientes V1 de transição para ler novos formatos.
O cliente de criptografia V2 usa algoritmos de criptografia incompatíveis com as versões mais antigas do cliente. A primeira etapa da migração é atualizar seus clientes de descriptografia V1 para que eles possam ler o novo formato.
O cliente V1 de transição permite que seus aplicativos descriptografem objetos criptografados na V1 e V2. Esse cliente faz parte do pacote NuGet Amazon.Extensions.S3.Encryption
-
Adquira uma nova dependência do pacote Amazon.Extensions.S3.Encryption
. Se o seu projeto depende diretamente do AWSSDK.S3 ou. AWSSDK KeyManagementServicepacotes, você deve atualizar essas dependências ou removê-las para que suas versões atualizadas sejam inseridas com esse novo pacote. -
Altere a declaração
using
apropriada deAmazon.S3.Encryption
paraAmazon.Extensions.S3.Encryption
, da seguinte forma:// using Amazon.S3.Encryption; using Amazon.Extensions.S3.Encryption;
-
Reconstrua e reimplante o aplicativo.
O cliente de transição V1 é totalmente API compatível com o cliente V1, portanto, nenhuma outra alteração de código é necessária.
Migre clientes V1 de transição para clientes V2 para escrever novos formatos.
O cliente V2 faz parte do pacote NuGet Amazon.Extensions.S3.Encryption
Depois de atualizar seus clientes existentes para ler o novo formato de criptografia, você poderá prosseguir com a atualização segura de seus aplicativos para os clientes de criptografia e descriptografia V2. Execute as etapas a seguir em cada um dos seus aplicativos para usar o cliente V2.
-
Fazer
EncryptionMaterials
alteraçãoEncryptionMaterialsV2
.-
Ao usarKMS:
-
Forneça um ID de KMS chave.
-
Declare o método de criptografia que você está usando; ou seja,
KmsType.KmsContext
. -
Forneça um contexto de criptografia KMS para associar a essa chave de dados. Você pode enviar um dicionário vazio (o contexto de criptografia da Amazon ainda será mesclado), mas é recomendável fornecer contexto adicional.
-
-
Ao usar métodos de wrapping da chave fornecidos pelo usuário (criptografia simétrica ou assimétrica):
-
Forneça uma instância
AES
ouRSA
que contenha os materiais de criptografia. -
Declare qual algoritmo de criptografia usar; ou seja,
SymmetricAlgorithmType.AesGcm
ouAsymmetricAlgorithmType.RsaOaepSha1
.
-
-
-
Altere
AmazonS3CryptoConfiguration
paraAmazonS3CryptoConfigurationV2
com a propriedadeSecurityProfile
definida comoSecurityProfile.V2AndLegacy
. -
Fazer
AmazonS3EncryptionClient
alteraçãoAmazonS3EncryptionClientV2
. Esse cliente pega os objetosAmazonS3CryptoConfigurationV2
eEncryptionMaterialsV2
recém-convertidos das etapas anteriores.
Exemplo: KMS para KMS +Context
Pré-migração
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);
Pós-migração
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);
Exemplo: Algoritmo simétrico (AES- CBC para AES - GCM Key Wrap)
StorageMode
pode ser ObjectMetadata
ou InstructionFile
.
Pré-migração
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);
Pós-migração
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
Ao descriptografar com AES -GCM, leia o objeto inteiro até o final antes de começar a usar os dados descriptografados. Isso é para verificar se o objeto não foi modificado desde que foi criptografado.
Exemplo: Algoritmo assimétrico (RSApara RSA-OAEP-SHA 1 envoltório de tecla)
StorageMode
pode ser ObjectMetadata
ou InstructionFile
.
Pré-migração
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);
Pós-migração
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);
Atualize os clientes V2 para que não leiam mais os formatos V1.
Eventualmente, todos os objetos terão sido criptografados ou recriptografados usando um cliente V2. Depois que essa conversão for concluída, você poderá desativar a compatibilidade com a V1 nos clientes V2 definindo a propriedade SecurityProfile
como SecurityProfile.V2
, conforme mostrado no trecho a seguir.
//var configuration = new AmazonS3CryptoConfigurationV2(SecurityProfile.V2AndLegacy); var configuration = new AmazonS3CryptoConfigurationV2(SecurityProfile.V2);