Especificación del cifrado del servidor de doble capa con claves de AWS KMS (DSSE-KMS) - Amazon Simple Storage Service

Especificación del cifrado del servidor de doble capa con claves de AWS KMS (DSSE-KMS)

importante

Amazon S3 aplica ahora el cifrado del servidor con claves administradas por Amazon S3 (SSE-S3) como el nivel básico de cifrado para cada bucket de Amazon S3. Desde el 5 de enero de 2023, todas las cargas de objetos nuevos a Amazon S3 se cifran automáticamente sin costo adicional y sin afectar al rendimiento. El estado de cifrado automático para la configuración de cifrado predeterminada en el bucket de S3 y para cargas de objetos nuevos está disponible en registros de AWS CloudTrail, Inventario de S3, Lente de almacenamiento de S3, la consola de Amazon S3 y como encabezado de respuesta a la API de Amazon S3 adicional en AWS Command Line Interface y los SDK de AWS. Para obtener más información, consulte Preguntas frecuentes del cifrado predeterminado.

Todos los buckets de Amazon S3 tienen el cifrado configurado de forma predeterminada y todos los objetos nuevos cargados en un bucket de S3 se cifran automáticamente en reposo. El cifrado del lado del servidor con claves administradas de Amazon S3 (SSE-S3) es la configuración de cifrado predeterminada para cada bucket de Amazon S3. Para usar otro tipo de cifrado, puede especificar el tipo de cifrado del servidor que se utilizará en las solicitudes PUT de S3 o puede establecer la configuración de cifrado predeterminada en el bucket de destino.

Si desea especificar un tipo de cifrado diferente en sus solicitudes PUT, puede utilizar el cifrado del servidor con claves de AWS Key Management Service (AWS KMS) (SSE-KMS), el cifrado del servidor de doble capa con claves de AWS KMS (DSSE-KMS) o el cifrado del servidor con claves proporcionadas por el cliente (SSE-C). Si desea establecer una configuración de cifrado predeterminada diferente en el bucket de destino, puede usar SSE-KMS o DSSE-KMS.

Puede aplicar cifrado cuando cargue un objeto nuevo o copie un objeto existente.

Puede especificar DSSE-KMS con la consola de Amazon S3, la API de REST de Amazon S3 y la AWS Command Line Interface (AWS CLI). Para obtener más información, consulte los siguientes temas.

nota

Puede utilizar AWS KMS keys de varias regiones en Amazon S3. No obstante, Amazon S3 trata las claves de varias regiones como si fueran claves de una sola región y no utiliza las características de varias regiones de la clave. Para obtener más información, consulte Uso de claves de varias regiones en la Guía para desarrolladores de AWS Key Management Service.

nota

Si desea utilizar una clave de KMS propiedad de una cuenta diferente, primero debe tener permiso para utilizar la clave. Para obtener más información sobre los permisos entre cuentas para las claves de KMS, consulte Crear claves de KMS que otras cuentas puedan utilizar en la Guía para desarrolladores de AWS Key Management Service.

En esta sección se describe cómo configurar o cambiar el tipo de cifrado de un objeto para utilizar el cifrado del servidor de doble capa con claves de AWS Key Management Service (AWS KMS) (DSSE-KMS) mediante la consola de Amazon S3.

nota
  • Si cambia el método de cifrado de un objeto, se crea un nuevo objeto para reemplazar al antiguo. Si el control de versiones de S3 está activado, se crea una nueva versión del objeto y el objeto existente se convierte en una versión anterior. El rol que cambia la propiedad también se convierte en el propietario del nuevo objeto o (versión del objeto).

  • Si cambia el tipo de cifrado de un objeto que tiene etiquetas definidas por el usuario, debe tener el permiso s3:GetObjectTagging. Si va a cambiar el tipo de cifrado de un objeto que no tiene etiquetas definidas por el usuario pero que tiene un tamaño superior a 16 MB, también debe tener el permiso s3:GetObjectTagging.

    Si la política de bucket de destino deniega la acción s3:GetObjectTagging, el tipo de cifrado del objeto se actualizará, pero las etiquetas definidas por el usuario se eliminarán del objeto y aparecerá un error.

Para añadir o cambiar el cifrado de un objeto
  1. Inicie sesión en la AWS 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, seleccione el nombre del bucket que contiene los objetos que desea cifrar.

  4. En la lista Objetos, seleccione la casilla de verificación junto al objeto que desea agregar cifrado o cuyo cifrado desea modificar.

    Aparece la página de detalles del objeto, con varias secciones que muestran las propiedades del objeto.

  5. Elija la pestaña Propiedades.

  6. Desplácese hacia abajo hasta la sección Cifrado predeterminado y elija Editar.

    Se abre la página Editar cifrado del lado del servidor.

  7. En Tipo de cifrado, seleccione Cifrado del servidor de doble capa con claves de AWS Key Management Service (DSSE-KMS).

  8. En Clave de AWS KMS, siga una de las siguientes opciones para elegir su clave de KMS:

    • Para seleccionar en una lista de claves de KMS disponibles, marque Elija entre sus claves de AWS KMS keys y seleccione su clave de KMS en la lista de claves disponibles.

      En esta lista aparecen tanto la Clave administrada de AWS (aws/s3) como las claves administradas por el cliente. Para obtener más información acerca de las claves administradas por el cliente, consulte Claves de cliente y claves de AWS en la Guía para desarrolladores de AWS Key Management Service.

    • Para introducir el ARN de la clave de KMS, elija Introducir el ARN de la clave de AWS KMS key e introduzca el ARN de la clave de KMS en el campo que aparece.

    • Para crear una nueva clave administrada por el cliente en la consola de AWS KMS, elija Crear una clave de KMS.

      Para obtener más información acerca de cómo crear una AWS KMS key, consulte Creación de claves en la AWS Key Management Service Guía para desarrolladores.

    importante

    Solo puede utilizar las claves de KMS que estén disponibles en la misma Región de AWS del bucket. La consola de Amazon S3 solo muestra las primeras 100 claves de KMS de la misma región del bucket. Para utilizar una clave de KMS que no aparezca en la lista, debe introducir el ARN de la clave de KMS. Si desea utilizar una clave de KMS propiedad de una cuenta de diferente, primero debe tener permiso para utilizar la clave y, después, debe introducir el ARN de la clave de KMS.

    Amazon S3 admite solo claves KMS de cifrado simétricas y no claves KMS asimétricas. Para obtener más información, consulte Identificación de claves de KMS asimétricas en la Guía para desarrolladores de AWS Key Management Service.

  9. En Clave de bucket, seleccione Desactivar. Las claves de bucket de S3 no son compatibles con DSSE-KMS.

  10. Elija Guardar cambios.

nota

En esta acción se aplica el cifrado a todos los objetos especificados. Al cifrar carpetas, espere a que finalice la operación de guardado para agregar nuevos objetos a la carpeta.

Cuando cree un objeto, es decir, cuando cargue un objeto nuevo o copie uno existente, podrá especificar el uso del cifrado del servidor de doble capa con AWS KMS keys (DSSE-KMS) para cifrar los datos. Para ello, añada el encabezado x-amz-server-side-encryption a la solicitud. Configure el valor del encabezado para el algoritmo de cifrado aws:kms:dsse. Amazon S3 confirma que su objeto se ha almacenado con cifrado DSSE-KMS al devolver el encabezado de respuesta x-amz-server-side-encryption.

Si especifica el encabezado x-amz-server-side-encryption con un valor de aws:kms:dsse, también puede utilizar los siguientes encabezados de solicitud:

  • x-amz-server-side-encryption-aws-kms-key-id: SSEKMSKeyId

  • x-amz-server-side-encryption-context: SSEKMSEncryptionContext

Operaciones de la API de REST de Amazon S3 que admiten DSSE-KMS

Las siguientes operaciones de la API de REST aceptan los encabezados de solicitud x-amz-server-side-encryption, x-amz-server-side-encryption-aws-kms-key-id y x-amz-server-side-encryption-context.

  • PutObject: cuando cargue datos mediante la operación de la API PUT, puede especificar estos encabezados de solicitud.

  • CopyObject: al copiar un objeto, tiene un objeto de origen y otro de destino. Al pasar encabezados DSSE-KMS con la operación CopyObject, estos se aplican solo al objeto de destino. Cuando copie un objeto existente, independientemente de si el objeto de origen está cifrado o no, el objeto de destino no estará cifrado, a no ser que solicite explícitamente el cifrado del lado del servidor.

  • Objeto POST: cuando utilice una operación POST para cargar un objeto, en vez de proporcionar los encabezados de solicitud, debe proporcionar la misma información en los campos del formulario.

  • CreateMultipartUpload: cuando cargue objetos grandes mediante la carga multiparte, puede especificar estos encabezados en la solicitud CreateMultipartUpload.

Los encabezados de respuesta de las siguientes operaciones de API de REST devuelven el encabezado x-amz-server-side-encryption cuando un objeto se almacena con el cifrado del servidor.

importante
  • Todas las solicitudes GET y PUT para un objeto protegido por AWS KMS generarán un error si no las realiza con la capa de sockets seguros (SSL), la seguridad de la capa de transporte (TLS) o Signature Version 4.

  • Si su objeto utiliza DSSE-KMS, no envíe encabezados de solicitud de cifrado para solicitudes GET y HEAD porque, de lo contrario, obtendrá un error HTTP 400 (Bad Request).

Contexto de cifrado (x-amz-server-side-encryption-context)

Si especifica x-amz-server-side-encryption:aws:kms:dsse, la API de Amazon S3 admitirá un contexto de cifrado con el encabezado x-amz-server-side-encryption-context. Un contexto de cifrado es un conjunto definido de pares clave-valor que contienen información contextual adicional sobre los datos.

Amazon S3 utiliza automáticamente el nombre de recurso de Amazon (ARN) del objeto como par del contexto de cifrado; por ejemplo, arn:aws:s3:::object_ARN.

Si lo desea, puede proporcionar un par de contexto de cifrado adicional mediante el encabezado x-amz-server-side-encryption-context. No obstante, dado que el contexto de cifrado no está cifrado, asegúrese de no incluir información confidencial. Amazon S3 almacena este par de claves adicional junto con el contexto de cifrado predeterminado.

Para obtener información sobre el contexto de cifrado en Amazon S3, consulte Contexto de cifrado. Para obtener información general sobre el contexto de cifrado, consulte Conceptos de AWS Key Management Service: contexto de cifrado en la Guía para desarrolladores de AWS Key Management Service.

ID de clave de AWS KMS (x-amz-server-side-encryption-aws-kms-key-id)

Puede utilizar el encabezado x-amz-server-side-encryption-aws-kms-key-id para especificar el ID de la clave administrada por el cliente utilizado para proteger los datos. Si especifica el encabezado x-amz-server-side-encryption:aws:kms:dsse, pero no proporciona el encabezado x-amz-server-side-encryption-aws-kms-key-id, Amazon S3 utiliza la Clave administrada de AWS (aws/s3) para proteger los datos. Si desea utilizar una clave administrada por el cliente, debe proporcionar el encabezado x-amz-server-side-encryption-aws-kms-key-id de dicha clave.

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.

Cuando se carga un objeto nuevo o se copia uno existente, puede especificar que se use DSSE-KMS para cifrar los datos. Para ello, añada el parámetro --server-side-encryption aws:kms:dsse a la solicitud. Utilice el parámetro --ssekms-key-id example-key-id para agregar la clave de AWS KMS administrada de cliente que ha creado. Si especifica --server-side-encryption aws:kms:dsse, pero no proporciona un ID de clave de AWS KMS, Amazon S3 utilizará la clave administrada de AWS (aws/s3).

aws s3api put-object --bucket DOC-EXAMPLE-BUCKET --key example-object-key --server-side-encryption aws:kms:dsse --ssekms-key-id example-key-id --body filepath

Puede cifrar un objeto no cifrado para usar DSSE-KMS volviendo a copiar el objeto en su lugar.

aws s3api copy-object --bucket DOC-EXAMPLE-BUCKET --key example-object-key --body filepath --bucket DOC-EXAMPLE-BUCKET --key example-object-key --sse aws:kms:dsse --sse-kms-key-id example-key-id --body filepath