El soporte de la AWS SDK para .NET V3 ha llegado al final del período de soporte.
Le recomendamos que migre a la V4.AWS SDK para .NET Para obtener información y detalles adicionales sobre cómo realizar la migración, consulte nuestro anuncio de fin de soporte
Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Migración del cliente de cifrado Amazon S3 (V1 a V2)
nota
Si utiliza la V2 y desea migrar a la V4, consulteMigración del cliente de cifrado Amazon S3 (V2 a V4).
En este tema se muestra cómo migrar las aplicaciones de la versión 1 (V1) del cliente de cifrado de Amazon Simple Storage Service (Amazon S3) a la versión 2 (V2), y cómo garantizar la disponibilidad de las aplicaciones durante todo el proceso de migración.
Los objetos cifrados con el cliente de la versión 2 no se pueden descifrar con el cliente de la versión V1. Para facilitar la migración al nuevo cliente sin tener que volver a cifrar todos los objetos a la vez, se ha proporcionado un cliente V1-transitional «». Este cliente puede descifrar tanto los objetos V1 como los V2-encrypted objetos, pero solo cifra los objetos en formato. V1-compatible El cliente V2 puede descifrar tanto los objetos V1 como V2-encrypted los objetos (si está activado para los objetos V1), pero solo cifra los objetos en formato. V2-compatible
Información general sobre la migración
Esta migración se produce en tres fases. Estas fases se indican aquí y se describen en detalle más adelante. Cada fase debe completarse en todos los clientes que utilizan objetos compartidos para que la siguiente fase pueda iniciarse.
-
Actualice los clientes existentes a V1-transitional clientes para leer nuevos formatos. En primer lugar, actualice sus aplicaciones para que dependan del V1-transitional cliente en lugar del cliente V1. El V1-transitional cliente permite que el código existente descifre los objetos escritos por los nuevos clientes de la versión 2 y los objetos escritos en V1-compatible formato.
nota
El V1-transitional cliente se proporciona únicamente con fines de migración. Continúe con la actualización al cliente V2 después de pasar al V1-transitional cliente.
-
Migre V1-transitional los clientes a los clientes de la versión 2 para escribir nuevos formatos. A continuación, sustituya todos los V1-transitional clientes de sus aplicaciones por clientes V2 y defina el perfil de seguridad en
V2AndLegacy. Al configurar este perfil de seguridad en los clientes V2, estos clientes pueden descifrar los objetos que estaban cifrados en V1-compatible formato. -
Actualizar los clientes de la versión 2 para que dejen de leer formatos de la versión 1. Por último, una vez que todos los clientes se hayan migrado a la versión 2 y todos los objetos se hayan cifrado o vuelto a cifrar en V2-compatible formato, defina el perfil de seguridad de la versión 2
V2en lugar de.V2AndLegacyEsto impide el descifrado de los objetos que están en V1-compatible formato.
Actualice los clientes existentes a V1-transitional clientes para leer nuevos formatos
El cliente de cifrado de la versión 2 utiliza algoritmos de cifrado que las versiones anteriores del cliente no admiten. El primer paso de la migración consiste en actualizar los clientes de descifrado de la versión 1 para que puedan leer el nuevo formato.
El V1-transitional cliente permite que sus aplicaciones descifren tanto la V1 como los V2-encrypted objetos. Este cliente forma parte del Amazon.Extensions.S3.Encryption
-
Cree una nueva dependencia del Amazon.Extensions.S3.Encryption
paquete. Si su proyecto depende directamente de AWSSDK.KeyManagementServicelos paquetes AWSSDK.S3o, debe actualizar esas dependencias o eliminarlas para que sus versiones actualizadas se incluyan en este nuevo paquete. -
Cambie la instrucción
usingapropiada deAmazon.S3.EncryptionaAmazon.Extensions.S3.Encryption. Así:// using Amazon.S3.Encryption; using Amazon.Extensions.S3.Encryption; -
Recompile y vuelva a implementar la aplicación.
El V1-transitional cliente es totalmente compatible API-compatible con el cliente V1, por lo que no es necesario realizar ningún otro cambio en el código.
Migre V1-transitional los clientes a los clientes de la versión 2 para escribir nuevos formatos
El cliente V2 forma parte del Amazon.Extensions.S3.Encryption
Después de actualizar los clientes existentes para leer el nuevo formato de cifrado, puede proceder a actualizar las aplicaciones sin problemas a la versión 2 de los clientes de cifrado y descifrado. Realice los siguientes pasos en cada una de las aplicaciones para utilizar el cliente de la versión 2:
-
Cambie
EncryptionMaterialsaEncryptionMaterialsV2.-
Si usa KMS:
-
Proporcione un ID de clave de KMS.
-
Declare el método de cifrado que está utilizando, esto es,
KmsType.KmsContext. -
Proporcione un contexto de cifrado a KMS para asociarlo a esta clave de datos. Puede enviar un diccionario vacío (el contexto de cifrado de Amazon se seguirá combinando), pero se recomienda incluir más contexto.
-
-
Si usa métodos de empaquetado de claves proporcionados por el usuario (cifrado simétrico o asimétrico):
-
Proporcione una instancia de
AESo deRSAque contenga los materiales de cifrado. -
Declare qué algoritmo de cifrado utilizar, esto es,
SymmetricAlgorithmType.AesGcmoAsymmetricAlgorithmType.RsaOaepSha1.
-
-
-
Cambie
AmazonS3CryptoConfigurationaAmazonS3CryptoConfigurationV2con la propiedadSecurityProfileestablecida enSecurityProfile.V2AndLegacy. -
Cambie
AmazonS3EncryptionClientaAmazonS3EncryptionClientV2. Este cliente toma los objetosAmazonS3CryptoConfigurationV2yEncryptionMaterialsV2recién convertidos de los pasos anteriores.
Ejemplo: de KMS a KMS+Contexto
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);
Ejemplo: algoritmo simétrico (AES-CBC a AES-GCM Key Wrap)
StorageMode puede ser 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
Al descifrar con AES-GCM, lea todo el objeto hasta el final antes de empezar a utilizar los datos descifrados. Esto se hacer para verificar que el objeto no se ha modificado desde que se cifró.
Ejemplo: algoritmo asimétrico (de RSA a Key Wrap) RSA-OAEP-SHA1
StorageMode puede ser 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);
Actualización de clientes de la versión 2 para que dejen de leer formatos de la versión 1
Con el tiempo, todos los objetos acabarán cifrándose o volviéndose a cifrar con un cliente de la versión 2. Una vez completada esta conversión, puede deshabilitar la compatibilidad con la versión 1 en los clientes de la versión 2 estableciendo la propiedad SecurityProfile en SecurityProfile.V2, como se muestra en el siguiente fragmento de código.
//var configuration = new AmazonS3CryptoConfigurationV2(SecurityProfile.V2AndLegacy); var configuration = new AmazonS3CryptoConfigurationV2(SecurityProfile.V2);