Especificación del cifrado del lado del servidor con AWS KMS (SSE-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 SSE-KMS mediante el uso de la consola de Amazon S3, las operaciones de la API de REST, los SDK de AWS 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 quiere 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 este tema se describe cómo configurar o cambiar el tipo de cifrado de un objeto para utilizar el cifrado del lado del servidor con claves de AWS Key Management Service (AWS KMS) (SSE-KMS) mediante la consola de Amazon S3.
nota
-
Si cambia el cifrado de un objeto, se crea un nuevo objeto para reemplazar el 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 permisos3: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
-
Inicie sesión en la AWS Management Console y abra la consola de Amazon S3 en https://console.aws.amazon.com/s3/
. -
En el panel de navegación izquierdo, elija Instancias.
-
En la lista Buckets (Buckets), elija el nombre del bucket que contiene el objeto.
-
En la lista Objects (Objetos), seleccione el nombre del objeto al 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.
-
Elija la pestaña Propiedades.
-
Desplácese hacia abajo hasta la sección Configuración del cifrado del lado del servidor y elija Editar.
Se abre la página Edit server-side encryption (Editar cifrado del lado del servidor).
-
En Cifrado del lado del servidor, en Configuración del cifrado, elija Anular la configuración predeterminada del bucket de cifrado.
-
En Tipo de cifrado, seleccione Cifrado del servidor con claves de AWS Key Management Service (SSE-KMS).
importante
Si utiliza la opción de SSE-KMS para la configuración de cifrado predeterminado, se le aplicarán las cuotas de solicitudes por segundo (RPS) de AWS KMS. Para obtener más información acerca de las cuotas de AWS KMS y cómo solicitar un aumento de cuota, consulte Cuotas en la Guía para desarrolladores de AWS Key Management Service.
-
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 simétricas y asimétricas en la Guía para desarrolladores de AWS Key Management Service.
-
-
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 lado del servidor con AWS KMS keys (SSE-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
. Amazon S3 confirma que su objeto fue guardado con SSE-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
, también puede utilizar los siguientes encabezados de solicitud:
-
x-amz-server-side-encryption-aws-kms-key-id
-
x-amz-server-side-encryption-context
-
x-amz-server-side-encryption-bucket-key-enabled
Temas
Las operaciones de la API de REST de Amazon S3 que admiten SSE-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 SSE-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 en el servidor. -
POST Object: 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 operación de la API de carga multiparte, puede especificar estos encabezados. Especifique estos encabezados en la solicitud de
CreateMultipartUpload
.
Los encabezados de respuesta de las siguientes operaciones de la API de REST devuelven el encabezado x-amz-server-side-encryption
cuando un objeto se almacena con el cifrado del lado del servidor.
importante
-
Todas las solicitudes
GET
yPUT
para un objeto protegido por AWS KMS producirán un error si no realiza dichas solicitudes con la capa de sockets seguros (SSL), la seguridad de la capa de transporte (TLS) o Signature Version 4. -
Si su objeto utiliza SSE-KMS, no envíe encabezados de solicitud de cifrado para solicitudes
GET
yHEAD
u obtendrá un errorHTTP 400 BadRequest
.
Contexto de cifrado (x-amz-server-side-encryption-context
)
Si especifica x-amz-server-side-encryption:aws:kms
, 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 o bucket como par del contexto de cifrado. Si utiliza SSE-KMS sin habilitar una clave de bucket de S3, utilice el ARN del objeto como contexto de cifrado, por ejemplo, arn:aws:s3:::
. Sin embargo, si utiliza SSE-KMS y habilita una clave de bucket de S3, utilice el ARN del bucket como contexto de cifrado, por ejemplo, object_ARN
arn:aws:s3:::
. bucket_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
, 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.
Claves de bucket de S3 (x-amz-server-side-encryption-aws-bucket-key-enabled
)
Puede utilizar el encabezado de solicitud x-amz-server-side-encryption-aws-bucket-key-enabled
para habilitar o deshabilitar una clave de bucket de S3 en el nivel del objeto. Las claves de bucket de S3 reducen los costos de la solicitud de AWS 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.
Si especifica el encabezado x-amz-server-side-encryption:aws:kms
, pero no proporciona el encabezado x-amz-server-side-encryption-aws-bucket-key-enabled
, el objeto utiliza el ajuste de la clave de bucket de S3 para que el bucket de destino cifre el objeto. Para obtener más información, consulte Configuración de una clave de bucket de S3 en el nivel de objeto .
Para utilizar los siguientes comandos de ejemplo de la AWS CLI, sustituya
con su información.user input
placeholders
Cuando se carga un objeto nuevo o se copia uno existente, puede especificar el uso del cifrado del lado del servidor con claves de AWS KMS para cifrar los datos. Para ello, añada el encabezado --server-side-encryption aws:kms
a la solicitud. Utilice --ssekms-key-id
para agregar la clave de AWS KMS administrada de cliente que ha creado. Si especifica example-key-id
--server-side-encryption
aws:kms
, pero no proporciona un ID de clave de AWS KMS, Amazon S3 utilizará una clave administrada de AWS.
aws s3api put-object --bucket
--key
amzn-s3-demo-bucket
example-object-key
--server-side-encryption aws:kms --ssekms-key-idexample-key-id
--ssekms-encryption-contextexample-encryption-context
--bodyfilepath
Puede habilitar o deshabilitar las claves de bucket de S3 en las operaciones put-object
o copy-object
agregando --bucket-key-enabled
o --no-bucket-key-enabled
. Las claves de bucket de S3 pueden reducir los costos de solicitud de AWS 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 S3.
aws s3api put-object --bucket
--key
amzn-s3-demo-bucket
example-object-key
--server-side-encryption aws:kms --bucket-key-enabled --bodyfilepath
Puede copiar un objeto de un bucket de origen a uno nuevo y especificar el cifrado SSE-KMS.
aws s3api copy-object --copy-source
/
amzn-s3-demo-bucket
example-object-key
--bucket--key
amzn-s3-demo-bucket2
example-object-key
--server-side-encryption aws:kms --sse-kms-key-idexample-key-id
--ssekms-encryption-contextexample-encryption-context
Al utilizar los SDK de AWS, puede solicitar a Amazon S3 que utilice AWS KMS keys para el cifrado del lado del servidor. En los ejemplos siguientes se muestra cómo usar SSE-KMS con los AWS SDK para Java y .NET. Para obtener información acerca de otros SDK, consulte Código de muestra y bibliotecas
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.
Operación de CopyObject
Si copia objetos, agrega las mismas propiedades de la solicitud (ServerSideEncryptionMethod
y ServerSideEncryptionKeyManagementServiceKeyId
) para solicitar a Amazon S3 que use una AWS KMS key. Para obtener más información acerca de la copia de objetos, consulte Copia, traslado y cambio de nombre de objetos.