Reducción del costo de SSE-KMS con las claves de bucket de Amazon S3
Las claves de bucket de Amazon S3 reducen el costo del cifrado del lado del servidor de Amazon S3 con las claves de AWS Key Management Service (AWS KMS) (SSE-KMS). Usar una clave de nivel de bucket para SSE-KMS puede reducir los costos de la solicitud de AWS KMS hasta en un 99 %, ya que disminuye el tráfico de solicitudes de Amazon S3 a AWS KMS. Con unos pocos clics en la AWS Management Console y sin modificar sus aplicaciones de cliente, puede configurar su bucket de modo que utilice una clave de bucket de S3 para el cifrado SSE-KMS en los objetos nuevos.
nota
Las claves de bucket de S3 no son compatibles con el cifrado de doble capa del servidor con claves de AWS Key Management Service (AWS KMS) (DSSE-KMS).
Claves de bucket de S3 para SSE-KMS
Las cargas de trabajo que acceden a millones o miles de millones de objetos cifrados con SSE-KMS pueden generar grandes volúmenes de solicitudes para AWS KMS. Cuando utiliza SSE-KMS para proteger los datos sin una clave de bucket de S3, Amazon S3 recurre a AWS KMS para utilizar una clave de datos individual por cada objeto. En ese caso, Amazon S3 realiza una llamada a AWS KMS cada vez que se realiza una solicitud respecto de un objeto con cifrado de KMS. Para obtener información sobre cómo funciona SSE-KMS, consulte Uso del cifrado del servidor con claves de AWS KMS (SSE-KMS).
Cuando configura el bucket para utilizar una clave de bucket de S3 para SSE-KMS, AWS genera una clave en el nivel de bucket de corta duración desde AWS KMS y, a continuación, la mantiene temporalmente en S3. Esta clave en el nivel de bucket creará claves de datos para objetos nuevos durante el ciclo de vida. Las claves de bucket de S3 se utilizan durante un periodo de tiempo limitado dentro de Amazon S3, lo que reduce la necesidad de que S3 realice solicitudes a AWS KMS para completar las operaciones de cifrado. De esta manera, se reduce el tráfico de S3 a AWS KMS, lo que le permite acceder a objetos cifrados con AWS KMS en Amazon S3 a una fracción del costo anterior.
Las claves únicas en el nivel de bucket se obtienen al menos una vez por solicitante para garantizar que el acceso del solicitante a la clave se capture en un evento de AWS KMS CloudTrail. Amazon S3 trata a los intermediarios como solicitantes diferentes cuando utilizan roles o cuentas diferentes, o el mismo rol con distintas políticas de alcance. Los ahorros en las solicitudes de AWS KMS reflejan el número de solicitantes, los patrones de solicitudes y la antigüedad relativa de los objetos solicitados. Por ejemplo, reducir el número de solicitantes, solicitar varios objetos en un periodo de tiempo limitado y cifrarlos con la misma clave de nivel de bucket sigue generando mayores ahorros.
nota
El uso de claves de bucket de S3 le permite ahorrar costos de solicitud de AWS KMS al reducir las solicitudes a AWS KMS para operaciones Encrypt
, GenerateDataKey
y Decrypt
mediante el uso de una clave de nivel de bucket. Por diseño, las solicitudes posteriores que aprovechan esta clave de nivel de bucket no generan solicitudes de API de AWS KMS ni validan el acceso con respecto a la política de claves de AWS KMS.
Cuando se configura una clave de bucket de S3, los objetos que ya están en el bucket no utiliza la clave de bucket de S3. Para configurar una clave de bucket de S3 para los objetos existentes, puede utilizar una operación CopyObject
. Para obtener más información, consulte Configuración de una clave de bucket de S3 en el nivel de objeto .
Amazon S3 solo compartirá una clave de Bucket de S3 para los objetos que se cifren con la misma AWS KMS key. Las claves de bucket de S3 son compatibles con las claves de KMS creadas por AWS KMS, el material de claves importado y el material de claves respaldado por almacenes de claves personalizados.
![Diagrama en el que se muestra cómo AWS KMS genera una clave de bucket que crea claves de datos para objetos de un bucket.](images/S3-Bucket-Keys.png)
Configuración de claves de bucket de S3
Es posible configurar su bucket para utilizar una clave de bucket de S3 para SSE-KMS en objetos nuevos a través de la consola de Amazon S3, los SDK de AWS, la AWS CLI o la API de REST. Con las claves de bucket de S3 habilitadas en el bucket, los objetos cargados con una clave de SSE-KMS especificada diferente utilizarán sus propias claves de bucket de S3. Independientemente de la configuración de la clave de bucket de S3, puede incluir el encabezado x-amz-server-side-encryption-bucket-key-enabled
con un valor true
o false
en la solicitud para invalidar la configuración del bucket.
Antes de configurar el bucket para utilizar una clave de bucket de S3, consulte Cambios para tener en cuenta antes de habilitar una clave de bucket de S3.
Configuración de una clave de bucket de S3 mediante la consola de Amazon S3
Al crear un nuevo bucket, puede configurarlo para utilizar una clave de bucket de S3 para SSE-KMS en objetos nuevos. También puede configurar un bucket existente para utilizar una clave de bucket de S3 para SSE-KMS en objetos nuevos al actualizar las propiedades del bucket.
Para obtener más información, consulte Configuración del bucket para utilizar una clave de bucket de S3 con SSE-KMS para objetos nuevos.
Compatibilidad con la API de REST, la AWS CLI y el SDK de AWS para claves de buckets de S3
Puede emplear la API de REST, la AWS CLI o el SDK de AWS a fin de configurar el bucket de manera que utilice una clave de bucket de S3 para SSE-KMS en los objetos nuevos. También puede habilitar una clave de bucket de S3 en el nivel de objeto.
Para más información, consulte los siguientes temas:
Las siguientes operaciones de la API admiten claves de bucket de S3 para SSE-KMS:
-
-
ServerSideEncryptionRule
acepta elBucketKeyEnabled
parámetro para habilitar y deshabilitar una clave de bucket de S3.
-
-
-
ServerSideEncryptionRule
devuelve la configuración deBucketKeyEnabled
.
-
-
PutObject, CopyObject, CreateMutlipartUpload y PostObject
-
El encabezado de solicitud
x-amz-server-side-encryption-bucket-key-enabled
habilita o deshabilita una clave de bucket de S3 en el nivel de objeto.
-
-
HeadObject, GetObject, UploadPartCopy, UploadParty CompleteMultipartUpload
-
El encabezado de respuesta
x-amz-server-side-encryption-bucket-key-enabled
indica si una clave de bucket de S3 está habilitada o deshabilitada para un objeto.
-
Uso de AWS CloudFormation
En AWS CloudFormation, el recurso AWS::S3::Bucket
contiene una propiedad de cifrado denominada BucketKeyEnabled
que usted puede utilizar para activar o desactivar una clave de bucket de S3.
Para obtener más información, consulte Uso de AWS CloudFormation.
Cambios para tener en cuenta antes de habilitar una clave de bucket de S3
Antes de habilitar una clave de bucket de S3, tenga en cuenta los siguientes cambios relacionados:
Políticas de IAM o de claves de AWS KMS
Si sus políticas de AWS Identity and Access Management (IAM) o sus políticas de clave de AWS KMS existentes utilizan el nombre de recurso de Amazon (ARN) del objeto como contexto de cifrado para ajustar o limitar el acceso a su clave de KMS, estas políticas no funcionarán con una clave de bucket de S3. Las claves de bucket de S3 utilizan el ARN del bucket como contexto de cifrado. Antes de habilitar una clave de bucket de S3, actualice las políticas de IAM o las políticas de clave de AWS KMS de manera que utilicen el ARN del bucket como contexto de cifrado.
Para obtener más información sobre el contexto de cifrado y las claves de bucket de S3, consulte Contexto de cifrado.
Eventos de CloudTrail para AWS KMS
Después de habilitar una clave de bucket de S3, los eventos de AWS KMS CloudTrail registran el ARN del bucket en lugar del ARN del objeto. Además, en sus registros verá menos eventos de KMS CloudTrail para objetos SSE-KMS. Dado que el material clave tiene un tiempo limitado en Amazon S3, se realizan menos solicitudes a AWS KMS.
Uso de una clave de bucket de S3 con replicación
Puede usar claves de bucket de S3 con replicación en la misma región (SRR) y replicación entre regiones (CRR).
Cuando Amazon S3 replica un objeto cifrado, generalmente conserva la configuración de cifrado del objeto replicado en el bucket de destino. Sin embargo, si el objeto de origen no está cifrado y el bucket de destino utiliza el cifrado predeterminado o una clave de bucket de S3, Amazon S3 cifra el objeto con la configuración del bucket de destino.
Los siguientes ejemplos ilustran cómo funciona una clave de bucket de S3 con la replicación. Para obtener más información, consulte Replicación de objetos cifrados (SSE-C, SSE-S3, SSE-KMS, DSSE-KMS).
ejemplo Ejemplo 1: el objeto de origen utiliza claves de bucket de S3; el bucket de destino utiliza el cifrado predeterminado
Si el objeto de origen utiliza una clave de bucket de S3 pero el bucket de destino utiliza el cifrado predeterminado con SSE-KMS, el objeto de réplica mantiene su configuración de cifrado de clave de bucket de S3 en el bucket de destino. El bucket de destino sigue utilizando el cifrado predeterminado con SSE-KMS.
ejemplo Ejemplo 2: el objeto de origen no está cifrado; el bucket de destino utiliza una clave de bucket de S3 con SSE-KMS
Si el objeto de origen no está cifrado y el bucket de destino utiliza una clave de bucket de S3 con SSE-KMS, el objeto de réplica se cifra con una clave de bucket de S3 que utiliza SSE-KMS en el bucket de destino. Esto hace que el elemento ETag
del objeto de origen sea diferente al elemento ETag
del objeto de réplica. Debe actualizar las aplicaciones que utilicen el elemento ETag
para incluir esta diferencia.
Trabajar con claves de bucket de S3
Para obtener más información sobre cómo habilitar claves de bucket de S3 y trabajar con ellas, consulte las siguientes secciones: