La AWS SDK for Java versión 1.x entró en modo de mantenimiento el 31 de julio de 2024 y estará disponible el 31 de end-of-support
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.
Amazon S3 cifrado del lado del cliente con claves maestras del cliente
En los siguientes ejemplos, se utiliza la clase EncryptionClientV2Builder de AmazonS3 para crear un Amazon S3 cliente con el cifrado del lado del cliente activado. Una vez activado, todos los objetos que cargue Amazon S3 con este cliente se cifrarán. Todos los objetos que obtengas al Amazon S3 usar este cliente se descifrarán automáticamente.
nota
Los siguientes ejemplos muestran el uso del cifrado del Amazon S3 lado del cliente con claves maestras de cliente administradas por el cliente. Para obtener información sobre cómo usar el cifrado con claves AWS KMS administradas, consulte Cifrado del lado Amazon S3 del cliente con claves administradas. AWS KMS
Puede elegir entre dos modos de cifrado al habilitar el cifrado del lado del cliente: Amazon S3 autenticado estricto o autenticado. En las secciones siguientes se muestran cómo habilitar cada uno de estos tipos. Para saber qué algoritmos utiliza cada modo, consulta la definición. CryptoMode
Importaciones requeridas
Importe las clases siguientes para estos ejemplos.
Importaciones
import com.amazonaws.ClientConfiguration; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3EncryptionClientV2Builder; import com.amazonaws.services.s3.AmazonS3EncryptionV2; import com.amazonaws.services.s3.model.CryptoConfigurationV2; import com.amazonaws.services.s3.model.CryptoMode; import com.amazonaws.services.s3.model.EncryptionMaterials; import com.amazonaws.services.s3.model.StaticEncryptionMaterialsProvider;
Cifrado de autenticado estricto
El cifrado de autenticado estricto es el modo predeterminado si no se especifica CryptoMode
.
Para habilitar de manera explícita este modo, especifique el valor StrictAuthenticatedEncryption
en el método withCryptoConfiguration
.
nota
Para utilizar el cifrado autenticado del lado del cliente, debe incluir el archivo Bouncy Castle jar
Código
AmazonS3EncryptionV2 s3Encryption = AmazonS3EncryptionClientV2Builder.standard() .withRegion(Regions.US_WEST_2) .withCryptoConfiguration(new CryptoConfigurationV2().withCryptoMode((CryptoMode.StrictAuthenticatedEncryption))) .withEncryptionMaterialsProvider(new StaticEncryptionMaterialsProvider(new EncryptionMaterials(secretKey))) .build(); s3Encryption.putObject(bucket_name, ENCRYPTED_KEY2, "This is the 2nd content to encrypt");
Modo de cifrado autenticado
Al utilizar el modo AuthenticatedEncryption
, se aplica un algoritmo de encapsulamiento de clave mejorado durante el cifrado. Cuando se descifra en este modo, el algoritmo puede verificar la integridad del objeto descifrado e iniciar una excepción si la comprobación falla. Para más detalles sobre cómo funciona el cifrado autenticado, consulte la entrada del blog Cifrado autenticado del cliente Amazon S3
nota
Para utilizar el cifrado autenticado del lado del cliente, debe incluir el archivo Bouncy Castle jar
Para habilitar este modo, especifique el valor AuthenticatedEncryption
en el método withCryptoConfiguration
.
Código
AmazonS3EncryptionV2 s3EncryptionClientV2 = AmazonS3EncryptionClientV2Builder.standard() .withRegion(Regions.DEFAULT_REGION) .withClientConfiguration(new ClientConfiguration()) .withCryptoConfiguration(new CryptoConfigurationV2().withCryptoMode(CryptoMode.AuthenticatedEncryption)) .withEncryptionMaterialsProvider(new StaticEncryptionMaterialsProvider(new EncryptionMaterials(secretKey))) .build(); s3EncryptionClientV2.putObject(bucket_name, ENCRYPTED_KEY1, "This is the 1st content to encrypt");