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 do cliente de criptografia Amazon S3 e quiser migrar para a V3, consulte. Migração do cliente de criptografia Amazon S3 (V2 para V3)
Este tópico mostra como migrar as 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 das aplicações durante todo o processo de migração.
Visão geral da migração
Essa migração acontece em duas fases:
1. Atualize os clientes existentes para ler novos formatos. Primeiramente, implante a versão atualizada do AWS SDK para C++ na aplicação. Isso permite que os clientes de criptografia existentes da V1 descriptografem objetos escritos pelos novos clientes da V2. Se seu aplicativo usa vários AWS SDKs, você deve atualizar cada SDK separadamente.
2. Migrar clientes de criptografia e descriptografia para a V2. Depois que todos os seus clientes de criptografia da V1 puderem ler os novos formatos, você poderá migrar seus clientes de criptografia e descriptografia existentes para suas respectivas versões da V2.
Atualizar os clientes existentes para ler novos formatos
Você deve primeiro atualizar seus clientes existentes para a versão mais recente do SDK. Depois de concluir essa etapa, os clientes V1 do seu aplicativo poderão descriptografar objetos criptografados por clientes de criptografia V2 sem atualizar a base de código do seu aplicativo.
Crie e instale a versão mais recente do AWS SDK para C++
Aplicações que consomem o SDK do código-fonte
Se você criar e instalar o AWS SDK para C++ do código-fonte, baixe ou clone o código-fonte do SDK a partir de aws/aws-sdk-cpp
Se você estiver atualizando AWS SDK para C++ de uma versão anterior à 1.8.x, consulte este CHANGELOG
Aplicações que consomem o SDK do Vcpkg
Se sua aplicação usa o Vcpkg
Você pode executar o seguinte comando para atualizar o pacoteaws-sdk-cpp:
vcpkg upgrade aws-sdk-cpp
E verifique a versão do pacote aws-sdk-cpp:
vcpkg list aws-sdk-cpp
A versão deve ser no mínimo 1.8.24.
Para obter mais informações sobre como usar o Vcpkg com o AWS SDK para C++, consulte. Acessar o AWS SDK para C++ de um gerenciador de pacotes
Compilar, instalar e implantar suas aplicações
Se seu aplicativo estiver vinculado estaticamente ao AWS SDK para C++, alterações de código não serão necessárias em seu aplicativo, mas você deverá criar seu aplicativo novamente para consumir as alterações mais recentes do SDK. Essa etapa não é necessária para a vinculação dinâmica.
Depois de atualizar a versão de dependência do seu aplicativo e verificar a funcionalidade do aplicativo, continue implantando seu aplicativo em sua frota. Depois de concluir a implantação da aplicação, você poderá passar para a próxima fase de migração para usar os clientes de criptografia e descriptografia da V2.
Migrar clientes de criptografia e descriptografia para a V2
As etapas a seguir mostram como migrar com êxito seu código da V1 para a V2 do cliente de criptografia do Amazon S3. Como as alterações de código são necessárias, você precisará reconstruir seu aplicativo, independentemente de ele estar vinculado estática ou dinamicamente ao. AWS SDK para C++
Usar novos materiais de criptografia
Com os clientes de criptografia V2 do Amazon S3 e a configuração de criptografia V2, os seguintes materiais foram descontinuados:
-
SimpleEncryptionMaterials -
KMSEncryptionMaterials
Eles foram substituídos pelos seguintes materiais de criptografia segura:
-
SimpleEncryptionMaterialsWithGCMAAD -
KMSWithContextEncryptionMaterials
As seguintes alterações de código são necessárias para criar um cliente de criptografia V2 do S3:
-
- Se você estiver usando
KMSEncryptionMaterialsao criar um cliente de criptografia do S3: -
-
Ao criar um cliente de criptografia V2 do S3, substitua
KMSEncryptionMaterialsporKMSWithContextEncryptionMaterialse especifique-o na configuração da criptografia V2. -
Ao colocar um objeto com clientes de criptografia V2 do Amazon S3, você deve fornecer explicitamente um mapa de contexto de string como o contexto do KMS para criptografar a CEK. Pode ser um mapa vazio.
-
- Se você estiver usando
-
- Se você estiver usando
SimpleEncryptionMaterialsao criar um cliente de criptografia do S3: -
-
Ao criar um cliente de criptografia V2 do Amazon S3, substitua
SimpleEncryptionMaterialsporSimpleEncryptionMaterialsWithGCMAADe especifique-o na configuração da criptografia V2. -
Ao colocar um objeto com clientes de criptografia V2 do Amazon S3, você deve fornecer explicitamente um mapa de contexto de string vazio. Caso contrário, o SDK exibirá um erro.
-
- Se você estiver usando
Exemplo: usando o algoritmo KMS/KMSWithContext Key Wrap
Pré-migração (empacotamento de chaves do KMS)
auto materials = Aws::MakeShared<KMSEncryptionMaterials>("s3Encryption", CUSTOMER_MASTER_KEY_ID); CryptoConfiguration cryptoConfig; S3EncryptionClient encryptionClient(materials, cryptoConfig); // Code snippet here to setup the putObjectRequest object. encryptionClient.PutObject(putObjectRequest);
Pós-migração (quebra de chave de KMSWith contexto)
auto materials = Aws::MakeShared<KMSWithContextEncryptionMaterials>("s3EncryptionV2", CUSTOMER_MASTER_KEY_ID); CryptoConfigurationV2 cryptoConfig(materials); S3EncryptionClientV2 encryptionClient(cryptoConfig); // Code snippet here to setup the putObjectRequest object. Aws::Map<Aws::String, Aws::String> kmsContextMap; kmsContextMap.emplace("client", "aws-sdk-cpp"); kmsContextMap.emplace("version", "1.8.0"); encryptionClient.PutObject(putObjectRequest, kmsContextMap /* could be empty as well */);
Exemplo: usar o algoritmo de empacotamento de chaves AES/AES-GCM
Pré-migração (empacotamento de chaves AES)
auto materials = Aws::MakeShared<SimpleEncryptionMaterials>("s3Encryption", HashingUtils::Base64Decode(AES_MASTER_KEY_BASE64)); CryptoConfiguration cryptoConfig; S3EncryptionClient encryptionClient(materials, cryptoConfig); // Code snippet here to setup the putObjectRequest object. encryptionClient.PutObject(putObjectRequest);
Pós-migração (empacotamento de chaves AES-GCM)
auto materials = Aws::MakeShared<SimpleEncryptionMaterialsWithGCMAAD>("s3EncryptionV2", HashingUtils::Base64Decode(AES_MASTER_KEY_BASE64)); CryptoConfigurationV2 cryptoConfig(materials); S3EncryptionClientV2 encryptionClient(cryptoConfig); // Code snippet here to setup the putObjectRequest object. encryptionClient.PutObject(putObjectRequest, {} /* must be an empty map */);
Exemplos adicionais
Os exemplos a seguir demonstram como abordar casos de uso específicos relacionados à migração da V1 para a V2.
Descriptografar objetos criptografados por clientes de criptografia legados do Amazon S3
Por padrão, você não pode usar o cliente de criptografia Amazon S3 V2 para descriptografar objetos que foram criptografados com algoritmos de quebra de chave obsoletos ou esquemas criptográficos de conteúdo obsoletos.
Os seguintes algoritmos de empacotamento de chaves estão obsoletos:
-
KMS -
AES_KEY_WRAP
E os seguintes esquemas de criptografia de conteúdo estão obsoletos:
-
CBC -
CTR
Se você estiver usando clientes de criptografia antigos do Amazon S3 no AWS SDK para C++ para criptografar os objetos, provavelmente está usando os métodos obsoletos se:
-
Você usou
SimpleEncryptionMaterialsouKMSEncryptionMaterials. -
Você usou
ENCRYPTION_ONLYcomoCrypto Modeem sua configuração de criptografia.
Para usar o cliente de criptografia V2 do Amazon S3 para descriptografar objetos que foram criptografados por algoritmos de empacotamento de chaves ou esquemas de criptografia de conteúdo obsoletos, é necessário substituir o valor padrão de SecurityProfile na configuração de criptografia V2 de V2 por V2_AND_LEGACY.
Exemplo
Pré-migração
auto materials = Aws::MakeShared<KMSEncryptionMaterials>("s3Encryption", CUSTOMER_MASTER_KEY_ID); CryptoConfiguration cryptoConfig; S3EncryptionClient encryptionClient(materials, cryptoConfig); // Code snippet here to setup the getObjectRequest object. encryptionClient.GetObject(getObjectRequest);
Pós-migração
auto materials = Aws::MakeShared<KMSWithContextEncryptionMaterials>("s3EncryptionV2", CUSTOMER_MASTER_KEY_ID); CryptoConfigurationV2 cryptoConfig(materials); cryptoConfig.SetSecurityProfile(SecurityProfile::V2_AND_LEGACY); S3EncryptionClientV2 encryptionClient(cryptoConfig); // Code snippet here to setup the getObjectRequest object. encryptionClient.GetObject(getObjectRequest);
Descriptografar objetos com alcance
Com clientes de criptografia legados do Amazon S3, você pode especificar um intervalo de bytes a serem recebidos ao descriptografar um objeto do S3. No cliente de criptografia V2 do Amazon S3, esse recurso é DISABLED por padrão. Portanto, você precisa substituir o valor padrão de DISABLED de ALL por RangeGetMode na configuração da criptografia V2.
Exemplo
Pré-migração
auto materials = Aws::MakeShared<KMSEncryptionMaterials>("s3Encryption", CUSTOMER_MASTER_KEY_ID); CryptoConfiguration cryptoConfig; S3EncryptionClient encryptionClient(materials, cryptoConfig); // Code snippet here to setup the getObjectRequest object. getObjectRequest.WithRange("bytes=38-75"); encryptionClient.GetObject(getObjectRequest);
Pós-migração
auto materials = Aws::MakeShared<KMSWithContextEncryptionMaterials>("s3EncryptionV2", CUSTOMER_MASTER_KEY_ID); CryptoConfigurationV2 cryptoConfig(materials); cryptoConfig.SetUnAuthenticatedRangeGet(RangeGetMode::ALL); S3EncryptionClientV2 encryptionClient(cryptoConfig); // Code snippet here to setup the getObjectRequest object. getObjectRequest.WithRange("bytes=38-75"); encryptionClient.GetObject(getObjectRequest);
Descriptografar objetos com qualquer CMK
Ao descriptografar objetos que foram criptografados com KMSWithContextEncryptionMaterials, os clientes de criptografia V2 do Amazon S3 podem permitir que o KMS encontre a CMK adequada fornecendo uma chave mestra vazia. Esse recurso está DISABLED por padrão. Você precisa configurá-lo explicitamente chamando SetKMSDecryptWithAnyCMK(true) para seus materiais de criptografia do KMS.
Exemplo
Pré-migração
auto materials = Aws::MakeShared<KMSEncryptionMaterials>("s3Encryption", ""/* provide an empty KMS Master Key*/); CryptoConfiguration cryptoConfig; S3EncryptionClient encryptionClient(materials, cryptoConfig); // Code snippet here to setup the getObjectRequest object. encryptionClient.GetObject(getObjectRequest);
Pós-migração
auto materials = Aws::MakeShared<KMSWithContextEncryptionMaterials>("s3EncryptionV2", ""/* provide an empty KMS Master Key*/); materials.SetKMSDecryptWithAnyCMK(true); CryptoConfigurationV2 cryptoConfig(materials); S3EncryptionClientV2 encryptionClient(cryptoConfig); // Code snippet here to setup the getObjectRequest object. encryptionClient.GetObject(getObjectRequest);
Para acessar o código completo de todos esses cenários de migração, consulte o exemplo de criptografia do Amazon S3