View a markdown version of this page

Migração do cliente de criptografia Amazon S3 (V1 para V2) - AWS SDK for .NET (V3)

O AWS SDK for .NET V3 chegou ao fim do suporte.

Recomendamos que você migre para a AWS SDK for .NET V4. Para obter detalhes e informações adicionais sobre como migrar, consulte nosso anúncio de fim de suporte.

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 do cliente de criptografia Amazon S3 (V1 para V2)

nota

Se você estiver usando a V2 e quiser migrar para a V4, consulte. Migração do cliente de criptografia Amazon S3 (V2 para V4)

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, um cliente V1-transitional "” foi fornecido. Esse cliente pode descriptografar tanto a V1 quanto os V2-encrypted objetos, mas criptografa os objetos somente no formato. V1-compatible O cliente V2 pode descriptografar V2-encrypted objetos e V1 (quando habilitado para objetos V1), mas criptografa objetos somente no formato. V2-compatible

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.

  1. Atualize clientes existentes para V1-transitional clientes para ler novos formatos. Primeiro, atualize seus aplicativos para que dependam do V1-transitional cliente em vez do cliente V1. O V1-transitional cliente permite que seu código existente decifre objetos escritos pelos novos clientes V2 e objetos escritos em formato. V1-compatible

    nota

    O V1-transitional cliente é fornecido somente para fins de migração. Prossiga com a atualização para o cliente V2 depois de migrar para o V1-transitional cliente.

  2. Migre V1-transitional clientes para clientes V2 para escrever novos formatos. Em seguida, substitua todos os V1-transitional clientes 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. V1-compatible

  3. 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 no V2-compatible formato, defina o perfil de segurança da V2 como em vez de. V2 V2AndLegacy Isso evita a decodificação de objetos que estão em formato. V1-compatible

Atualize clientes existentes para V1-transitional clientes 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 V1-transitional cliente permite que seus aplicativos descriptografem tanto a V1 quanto os objetos. V2-encrypted Esse cliente faz parte do Amazon.Extensions.S3.Encryption NuGet pacote. Execute as etapas a seguir em cada um dos seus aplicativos para usar o V1-transitional cliente.

  1. Assuma uma nova dependência do Amazon.Extensions.S3.Encryptionpacote. Se seu projeto depende diretamente dos AWSSDK.KeyManagementServicepacotes AWSSDK.S3ou, você deve atualizar essas dependências ou removê-las para que suas versões atualizadas sejam integradas com esse novo pacote.

  2. Altere a declaração using apropriada de Amazon.S3.Encryption para Amazon.Extensions.S3.Encryption, da seguinte forma:

    // using Amazon.S3.Encryption; using Amazon.Extensions.S3.Encryption;
  3. Reconstrua e reimplante o aplicativo.

O V1-transitional cliente está totalmente API-compatible com o cliente V1, portanto, nenhuma outra alteração de código é necessária.

Migre V1-transitional clientes para clientes V2 para escrever novos formatos

O cliente V2 faz parte do Amazon.Extensions.S3.Encryption NuGet pacote. Ele permite que seus aplicativos descriptografem tanto a V1 quanto os V2-encrypted objetos (se configurados para fazer isso), mas criptografa os objetos somente no formato. V2-compatible

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.

  1. Fazer EncryptionMaterials alteração EncryptionMaterialsV2.

    1. Ao usar o KMS:

      1. Forneça um ID da chave do KMS.

      2. Declare o método de criptografia que você está usando; ou seja, KmsType.KmsContext.

      3. Forneça um contexto de criptografia ao 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.

    2. Ao usar métodos de wrapping da chave fornecidos pelo usuário (criptografia simétrica ou assimétrica):

      1. Forneça uma instância AES ou RSA que contenha os materiais de criptografia.

      2. Declare qual algoritmo de criptografia usar; ou seja, SymmetricAlgorithmType.AesGcm ou AsymmetricAlgorithmType.RsaOaepSha1.

  2. Altere AmazonS3CryptoConfiguration para AmazonS3CryptoConfigurationV2 com a propriedade SecurityProfile definida como SecurityProfile.V2AndLegacy.

  3. Fazer AmazonS3EncryptionClient alteração AmazonS3EncryptionClientV2. Esse cliente pega os objetos AmazonS3CryptoConfigurationV2 e EncryptionMaterialsV2 recém-convertidos das etapas anteriores.

Exemplo: KMS para 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);

Exemplo: Algoritmo simétrico (AES-CBC para AES-GCM Key Wrap)

StorageMode pode ser ObjectMetadata ou 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

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 (RSA para RSA-OAEP-SHA1 Key Wrap)

StorageMode pode ser ObjectMetadata ou 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);

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);