Configuración y supervisión del cifrado predeterminado para los buckets de directorio - Amazon Simple Storage Service

Configuración y supervisión del cifrado predeterminado para los buckets de directorio

Los bucket de Amazon S3 tienen el cifrado de buckets activado de forma predeterminada y los objetos nuevos se cifran automáticamente mediante el cifrado del servidor con claves administradas de Amazon S3 (SSE-S3). Este cifrado se aplica a todos los objetos nuevos de sus buckets de Amazon S3 y no tiene ningún costo para usted.

Si necesita más control sobre las claves de cifrado, por ejemplo, administrar la rotación de claves y las concesiones de las políticas de acceso, tiene la opción de utilizar el cifrado del servidor con claves de AWS Key Management Service (AWS KMS) (SSE-KMS).

nota
  • Le recomendamos que el cifrado predeterminado del bucket utilice la configuración de cifrado deseada y que no invalide el cifrado predeterminado del bucket en las solicitudes de CreateSession o solicitudes de objetos PUT. A continuación, los objetos nuevos se cifran automáticamente con la configuración de cifrado deseada. Para obtener más información sobre los comportamientos de invalidación del cifrado en los buckets de directorio, consulte Especificación del cifrado del servidor con AWS KMS para cargas de objetos nuevos.

  • Para cifrar los objetos nuevos de un bucket de directorio con SSE-KMS, debe especificar SSE-KMS como la configuración de cifrado predeterminada del bucket de directorios con una clave de KMS (en concreto, una clave administrada por el cliente). A continuación, cuando se crea una sesión para las operaciones de la API de punto de conexión zonal, los nuevos objetos se cifran y descifran automáticamente con claves de bucket SSE-KMS y S3 durante la sesión.

  • Cuando establece el cifrado del bucket predeterminado en SSE-KMS, las claves del bucket de S3 siempre están habilitadas para las operaciones GET y PUT en un bucket de directorio y no se pueden desactivar. Las claves de bucket de S3 no son compatibles, cuando se copian objetos cifrados con SSE-KMS de buckets de uso general a buckets de directorio, de buckets de directorio a buckets de uso general o entre buckets de directorio, mediante la operación CopyObject, UploadPartCopy, Copy en operaciones por lotes o los trabajos de import. En ese caso, Amazon S3 realiza una llamada a AWS KMS cada vez que se realiza una solicitud de copia para un objeto cifrado con KMS. Para obtener más información sobre cómo las claves del bucket de S3 reducen los costos de las solicitudes de AWS KMS, consulte Reducción del costo de SSE-KMS con las claves de bucket de Amazon S3.

  • Cuando especifique una clave administrada por el cliente de AWS KMS para el cifrado en el bucket de directorio, use solo el ID de clave o el ARN de la clave. No se admite el formato de alias de clave de la clave de KMS.

  • El cifrado del servidor de doble capa con claves de AWS KMS (DSSE-KMS) y el cifrado del servidor con claves proporcionadas por el cliente (SSE-C) no son compatibles con el cifrado predeterminado en los buckets del directorio.

Para obtener más información acerca de la configuración del cifrado predeterminado, consulte Configuración del cifrado predeterminado.

Para obtener más información acerca de los permisos necesarios para el cifrado predeterminado, consulte PutBucketEncryption en la Referencia de API de Amazon Simple Storage Service.

Puede configurar el cifrado predeterminado de Amazon S3 para un bucket de S3 a través de la consola de Amazon S3, los SDK de AWS, la API de REST de Amazon S3 y la AWS Command Line Interface (AWS CLI).

Para configurar el cifrado predeterminado en un bucket de Amazon S3
  1. Inicie sesión AWS Management Console Management Console y abra la consola de Amazon S3 en https://console.aws.amazon.com/s3/.

  2. En el panel de navegación izquierdo, elija Instancias.

  3. En la lista Buckets, elija el nombre del bucket en cuestión.

  4. Elija la pestaña Propiedades.

  5. En Configuración del cifrado del servidor, los buckets de directorio utilizan el cifrado del servidor con Claves administradas por Amazon S3 (SSE-S3).

  6. Elija Guardar cambios.

En estos ejemplos se muestra cómo configurar el cifrado predeterminado con SSE-S3 o SSE-KMS con una clave de bucket de S3.

Para obtener más información acerca del cifrado predeterminado, consulte Establecer el comportamiento del cifrado predeterminado del lado del servidor para los buckets de Amazon S3. Para obtener más información acerca del uso de la AWS CLI para configurar el cifrado predeterminado, consulte put-bucket-encryption.

ejemplo — Cifrado predeterminado con SSE-S3

En este ejemplo se configura el cifrado de bucket predeterminado con las claves administradas de Amazon S3. Para usar el comando, sustituya los marcadores de posición de entrada del usuario con su propia información.

aws s3api put-bucket-encryption --bucket bucket-base-name--azid--x-s3 --server-side-encryption-configuration '{ "Rules": [ { "ApplyServerSideEncryptionByDefault": { "SSEAlgorithm": "AES256" } } ] }'
ejemplo — Cifrado predeterminado con SSE-KMS usando una clave de bucket de S3

En este ejemplo se configura el cifrado de bucket predeterminado con SSE-KMS mediante una clave de bucket de S3. Para usar el comando, sustituya los marcadores de posición de entrada del usuario con su propia información.

aws s3api put-bucket-encryption --bucket bucket-base-name--azid--x-s3 --server-side-encryption-configuration '{ "Rules": [ { "ApplyServerSideEncryptionByDefault": { "SSEAlgorithm": "aws:kms", "KMSMasterKeyID": "KMS-Key-ARN" }, "BucketKeyEnabled": true } ] }'

Utilice la operación PutBucketEncryption de la API de REST para establecer el cifrado predeterminado con un tipo de cifrado del servidor para usar SSE-S3 o SSE-KMS.

Para obtener más información, consulte PutBucketEncryption en la Referencia de la API de Amazon Simple Storage Service.

Al utilizar los SDK de AWS, puede solicitar a Amazon S3 que utilice AWS KMS keys para el cifrado del lado del servidor. Los siguientes ejemplos de SDK de AWS para Java y .NET configuran los ajustes de cifrado predeterminados para un bucket de directorio con SSE-KMS y una clave de bucket de S3. Para obtener información acerca de otros SDK, consulte Código de muestra y bibliotecas en el Centro de desarrolladores de AWS.

importante

Cuando utilice una AWS KMS key para el cifrado en el lado del servidor en Amazon S3, debe elegir una clave de cifrado de KMS simétrica. Amazon S3 solo admite claves KMS de cifrado simétricas. Para obtener más información sobre estas claves, consulte Symmetric encryption KMS keys (Claves de KMS de cifrado simétricas) en la Guía para desarrolladores de AWS Key Management Service.

Java

Con AWS SDK for Java 2.x, puede solicitar a Amazon S3 que utilice AWS KMS key mediante el método applyServerSideEncryptionByDefault para especificar la configuración de cifrado predeterminada del bucket de directorio para el cifrado de datos con SSE-KMS. Puede crear una clave de KMS de cifrado simétrica y especificarla en la solicitud.

import software.amazon.awssdk.services.s3.S3Client; import software.amazon.awssdk.services.s3.model.PutBucketEncryptionRequest; import software.amazon.awssdk.services.s3.model.ServerSideEncryption; import software.amazon.awssdk.services.s3.model.ServerSideEncryptionByDefault; import software.amazon.awssdk.services.s3.model.ServerSideEncryptionConfiguration; import software.amazon.awssdk.services.s3.model.ServerSideEncryptionRule; public class Main { public static void main(String[] args) { S3Client s3 = S3Client.create(); String bucketName = "bucket-base-name--azid--x-s3"; String kmsKeyId = "your-kms-customer-managed-key-id"; // AWS managed KMS keys aren't supported. Only customer-managed keys are supported. ServerSideEncryptionByDefault serverSideEncryptionByDefault = ServerSideEncryptionByDefault.builder() .sseAlgorithm(ServerSideEncryption.AWS_KMS) .kmsMasterKeyID(kmsKeyId) .build(); // The bucketKeyEnabled field is enforced to be true. ServerSideEncryptionRule rule = ServerSideEncryptionRule.builder() .bucketKeyEnabled(true) .applyServerSideEncryptionByDefault(serverSideEncryptionByDefault) .build(); ServerSideEncryptionConfiguration serverSideEncryptionConfiguration = ServerSideEncryptionConfiguration.builder() .rules(rule) .build(); PutBucketEncryptionRequest putRequest = PutBucketEncryptionRequest.builder() .bucket(bucketName) .serverSideEncryptionConfiguration(serverSideEncryptionConfiguration) .build(); s3.putBucketEncryption(putRequest); } }

Para obtener más información acerca de la creación de claves administradas por el cliente, consulte Programación de la API de AWS KMS en la Guía para desarrolladores de AWS Key Management Service.

Para ver ejemplos de código funcional sobre cómo cargar un objeto, consulte los temas siguientes. Para utilizar estos ejemplos, tiene que actualizar estos ejemplos de código y facilitar la información de cifrado, tal como se muestra en el fragmento de código anterior.

.NET

Con AWS SDK for .NET, puede solicitar a Amazon S3 que utilice AWS KMS key mediante la propiedad ServerSideEncryptionByDefault para especificar la configuración de cifrado predeterminada del bucket de directorio para el cifrado de datos con SSE-KMS. Puede crear una clave administrada por el cliente de cifrado simétrica y especificarla en la solicitud.

// Set the bucket server side encryption to use AWSKMS with a customer-managed key id. // bucketName: Name of the directory bucket. "bucket-base-name--azid--x-s3" // kmsKeyId: The Id of the customer managed KMS Key. "your-kms-customer-managed-key-id" // Returns True if successful. public static async Task<bool> SetBucketServerSideEncryption(string bucketName, string kmsKeyId) { var serverSideEncryptionByDefault = new ServerSideEncryptionConfiguration { ServerSideEncryptionRules = new List<ServerSideEncryptionRule> { new ServerSideEncryptionRule { ServerSideEncryptionByDefault = new ServerSideEncryptionByDefault { ServerSideEncryptionAlgorithm = ServerSideEncryptionMethod.AWSKMS, ServerSideEncryptionKeyManagementServiceKeyId = kmsKeyId } } } }; try { var encryptionResponse =await _s3Client.PutBucketEncryptionAsync(new PutBucketEncryptionRequest { BucketName = bucketName, ServerSideEncryptionConfiguration = serverSideEncryptionByDefault, }); return encryptionResponse.HttpStatusCode == HttpStatusCode.OK; } catch (AmazonS3Exception ex) { Console.WriteLine(ex.ErrorCode == "AccessDenied" ? $"This account does not have permission to set encryption on {bucketName}, please try again." : $"Unable to set bucket encryption for bucket {bucketName}, {ex.Message}"); } return false; }

Para obtener más información acerca de la creación de claves administradas por el cliente, consulte Programación de la API de AWS KMS en la Guía para desarrolladores de AWS Key Management Service.

Para ver ejemplos de código funcional sobre cómo cargar un objeto, consulte los temas siguientes. Para utilizar estos ejemplos, tiene que actualizar estos ejemplos de código y facilitar la información de cifrado, tal como se muestra en el fragmento de código anterior.

Supervisión del cifrado predeterminado de los buckets de directorio con AWS CloudTrail

Puede realizar un seguimiento de las solicitudes de configuración de cifrado predeterminado para los buckets de directorio de Amazon S3 mediante eventos de AWS CloudTrail. Los siguientes nombres de eventos de API se utilizan en los registros de CloudTrail:

  • PutBucketEncryption

  • GetBucketEncryption

  • DeleteBucketEncryption

nota
  • No se admite EventBridge en los buckets de directorio.

  • El cifrado del servidor de doble capa con claves de AWS Key Management Service (AWS KMS) (DSSE-KMS) o el cifrado del servidor con claves de cifrado proporcionadas por el cliente (SSE-C) no son compatibles con los buckets del directorio.

Para obtener más información acerca de la supervisión del cifrado predeterminado con AWS CloudTrail, consulte Monitoreo del cifrado predeterminado con AWS CloudTrail y Amazon EventBridge.