Configuración de una clave de bucket de S3 en el nivel de objeto - Amazon Simple Storage Service

Configuración de una clave de bucket de S3 en el nivel de objeto

Cuando realiza una operación PUT o COPY mediante la API de REST, los SDK de AWS o la AWS CLI, puede habilitar o desactivar una clave de bucket de S3 en el nivel de objeto agregando el encabezado de la solicitud x-amz-server-side-encryption-bucket-key-enabled con un valor true o false. Las claves de bucket de S3 permiten reducir el costo de cifrado del lado del servidor mediante AWS Key Management Service (AWS KMS) (SSE-KMS) al disminuir el tráfico de solicitudes de Amazon S3 a AWS KMS. Para obtener más información, consulte Reducción del costo de SSE-KMS con las claves de bucket de Amazon S3.

Cuando se configura una clave de bucket de S3 para un objeto mediante una operación PUT o COPY, Amazon S3 solo actualiza la configuración de ese objeto. El ajuste de la clave de bucket de S3 para el bucket de destino no cambia. Si envía una solicitud PUT o COPY para un objeto cifrado con KMS a un bucket con las claves de bucket de S3 habilitadas, la operación en el nivel de objeto utilizará automáticamente las claves de bucket de S3, a menos que desactive las claves del encabezado de la solicitud. Si no especifica una clave de bucket de S3 para el objeto, Amazon S3 aplica el ajuste de la clave de bucket de S3 para el bucket de destino al objeto.

Requisito previo:

Antes de configurar el objeto para usar una clave de bucket de S3, consulte Cambios para tener en cuenta antes de habilitar una clave de bucket de S3.

Herramienta de operaciones por lotes de Amazon S3

Para cifrar los objetos de Amazon S3 existentes, puede utilizar la herramienta de operaciones por lotes de Amazon S3. A las operaciones por lotes de S3 se les proporciona una lista de objetos en los que deben actuar. Las operaciones por lotes llaman a la API correspondiente para llevar a cabo la operación especificada.

Puede utilizar la operación de copia de la herramienta de operaciones por lotes de S3 para copiar objetos existentes sin cifrar y escribirlos como objetos cifrados en el mismo bucket. Un solo trabajo de la herramienta de operaciones por lotes puede realizar la operación especificada en miles de millones de objetos. Para obtener más información, consulte Realización de operaciones por lotes a gran escala en objetos de Amazon S3 y Cifrado de objetos con la herramienta de operaciones por lotes de Amazon S3.

Uso de la API de REST

Si utiliza SSE-KMS, puede habilitar una clave de bucket de S3 para un objeto con las siguientes operaciones de la API:

  • PutObject : al cargar un objeto, puede especificar el encabezado de solicitud x-amz-server-side-encryption-bucket-key-enabled para habilitar o deshabilitar una clave de bucket de S3 en el nivel de objeto.

  • CopyObject : al copiar un objeto y configurar SSE-KMS, puede especificar el encabezado de solicitud x-amz-server-side-encryption-bucket-key-enabled para habilitar o deshabilitar una clave de bucket de S3 para el objeto.

  • POST Object: al utilizar una operación POST para cargar un objeto y configurar SSE-KMS, puede utilizar el campo de formulario x-amz-server-side-encryption-bucket-key-enabled para habilitar o deshabilitar una clave de bucket de S3 para el objeto.

  • CreateMultipartUpload: al cargar objetos grandes mediante la operación de la API CreateMultipartUpload y configurar SSE-KMS, puede usar el encabezado de solicitud x-amz-server-side-encryption-bucket-key-enabled para habilitar o deshabilitar una clave de bucket de S3 para el objeto.

Para habilitar una clave de bucket de S3 en el nivel de objeto, incluya el encabezado de solicitud x-amz-server-side-encryption-bucket-key-enabled. Para obtener más información sobre SSE-KMS y la API de REST, consulte Uso de la API de REST.

Uso de AWS SDK para Java (PutObject)

Puede utilizar el siguiente ejemplo para configurar una clave de bucket de S3 en el nivel de objeto mediante AWS SDK for Java.

Java
AmazonS3 s3client = AmazonS3ClientBuilder.standard()     .withRegion(Regions.DEFAULT_REGION)     .build(); String bucketName = "DOC-EXAMPLE-BUCKET1"; String keyName = "key name for object"; String contents = "file contents"; PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, keyName, contents)     .withBucketKeyEnabled(true);      s3client.putObject(putObjectRequest);

Uso de la AWS CLI (PutObject)

Puede utilizar el siguiente ejemplo de la AWS CLI para configurar una clave de bucket de S3 en el nivel de objeto como parte de una solicitud PutObject.

aws s3api put-object --bucket DOC-EXAMPLE-BUCKET --key object key name --server-side-encryption aws:kms --bucket-key-enabled --body filepath