Especificación del cifrado del servidor con AWS KMS (SSE-KMS) para la carga de nuevos objetos en buckets de directorio
Para buckets de directorio, para cifrar los datos con el cifrado del servidor, puede utilizar el cifrado del servidor con claves administradas de Amazon S3 (SSE-S3) (el valor predeterminado) o el cifrado del servidor con claves de AWS Key Management Service (AWS KMS) (SSE-KMS). 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.
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. Si desea especificar un tipo de cifrado diferente para un bucket de directorio, puede utilizar el cifrado del servidor con claves de AWS Key Management Service (AWS KMS) (SSE-KMS). 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). La Clave administrada de AWS (aws/s3
) no es compatible. La configuración de SSE-KMS solo admite 1 clave administrada por el cliente por bucket de directorio durante la vida útil del bucket. Después de especificar una clave administrada por el cliente para SSE-KMS, no puede invalidar la clave administrada por el cliente para la configuración de SSE-KMS del bucket. A continuación, al especificar la configuración de cifrado del servidor para los objetos nuevos con SSE-KMS, debe asegurarse de que la clave de cifrado sea la misma clave administrada por el cliente que especificó para la configuración de cifrado predeterminada del bucket del directorio. Para usar una nueva clave administrada por el cliente para los datos, le recomendamos copiar los objetos existentes en un nuevo bucket de directorio con una nueva clave administrada por el cliente.
Puede aplicar cifrado cuando cargue un objeto nuevo o copie un objeto existente. Si cambia el cifrado de un objeto, se crea un nuevo objeto para reemplazar el antiguo.
Puede especificar SSE-KMS mediante el uso de las operaciones de la API de REST, los SDK de AWS y la AWS Command Line Interface (AWS CLI).
nota
-
Para buckets de directorio, los comportamientos de invalidación del cifrado son los siguientes:
-
Al utilizar CreateSession con la API de REST para autenticar y autorizar las solicitudes de la API de punto de conexión zonal, excepto CopyObject y UploadPartCopy, puede invalidar la configuración de cifrado a SSE-S3 o SSE-KMS solo si previamente especificó el cifrado predeterminado del bucket con SSE-KMS.
-
Cuando utiliza CreateSession con la AWS CLI o los SDK de AWS para autenticar y autorizar las solicitudes de la API de punto de conexión zonal, excepto CopyObject y UploadPartCopy, no puede invalidar en absoluto la configuración de cifrado.
-
Cuando realice solicitudes de CopyObject, puede invalidar la configuración de cifrado a SSE-S3 o a SSE-KMS solo si especificó el cifrado predeterminado del bucket con SSE-KMS previamente. Al realizar solicitudes de UploadPartCopy, no puede invalidar la configuración de cifrado.
-
-
Puede utilizar AWS KMS keys multirregionales en Amazon S3. No obstante, Amazon S3 trata las claves multirregionales como si fueran claves de una sola región y no utiliza las características multirregionales de la clave. Para obtener más información, consulte Uso de claves multirregionales en la Guía para desarrolladores de AWS Key Management Service.
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.
nota
Solo se admite una clave administrada por el cliente por cada bucket de directorio durante la vida útil del bucket. La Clave administrada de AWS (aws/s3
) no es compatible. Después de especificar SSE-KMS como la configuración de cifrado predeterminada del bucket con una clave administrada por el cliente, no podrá cambiar la clave administrada por el cliente para la configuración de SSE-KMS del bucket.
Para las operaciones de la API de punto de conexión zonal (en el nivel de objeto) excepto CopyObject y UploadPartCopy, se autentican y autorizan las solicitudes a través de CreateSession para lograr una baja latencia. Le recomendamos que el cifrado predeterminado del bucket utilice las configuraciones de cifrado deseadas 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 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. 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.
En las llamadas a la API de punto de conexión zonal (excepto CopyObject y UploadPartCopy) mediante la API de REST, no puede invalidar los valores de la configuración de cifrado (x-amz-server-side-encryption
, x-amz-server-side-encryption-aws-kms-key-id
, x-amz-server-side-encryption-context
o x-amz-server-side-encryption-bucket-key-enabled
) de la solicitud de CreateSession
. No necesita especificar de forma explícita estos valores de configuración de cifrado en las llamadas a la API de punto de conexión zonal y Amazon S3 utilizará los valores de configuración de cifrado de la solicitud de CreateSession
para proteger los nuevos objetos del bucket de directorios.
nota
Al utilizar la AWS CLI o los SDK de AWS, para CreateSession
, el token de sesión se actualiza automáticamente para evitar interrupciones del servicio cuando una sesión caduca. La AWS CLI o los SDK de AWS utilizan la configuración de cifrado predeterminada del bucket para la solicitud de CreateSession
. No se admite para invalidar los valores de la configuración de cifrado de la solicitud de CreateSession
. Además, en las llamadas a la API de punto de conexión zonal (excepto CopyObject y UploadPartCopy), no se admite para invalidar los valores de la configuración de cifrado de la solicitud de CreateSession
.
Para CopyObject, para cifrar copias de objetos nuevas en un bucket de directorio con SSE-KMS, debe especificar SSE-KMS como la configuración de cifrado predeterminada del bucket del directorio con una clave de KMS (en concreto, una clave administrada por el cliente). A continuación, al especificar la configuración de cifrado del servidor para las nuevas copias de objetos con SSE-KMS, debe asegurarse de que la clave de cifrado sea la misma clave administrada por el cliente que especificó para la configuración de cifrado predeterminada del bucket del directorio. Para UploadPartCopy, para cifrar copias de partes de objetos nuevas en un bucket de directorio con SSE-KMS, debe especificar SSE-KMS como la configuración de cifrado predeterminada del bucket del directorio con una clave de KMS (en concreto, una clave administrada por el cliente). No puede especificar la configuración de cifrado del servidor para las nuevas copias de partes de objetos con SSE-KMS en los encabezados de solicitud de UploadPartCopy. Además, la configuración de cifrado que proporcione en la solicitud de CreateMultipartUpload debe coincidir con la configuración de cifrado predeterminada del bucket de destino.
Temas
Las operaciones de la API de REST de Amazon S3 que admiten SSE-KMS
Las siguientes operaciones de la API de REST en el nivel de objeto en los buckets del directorio 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
.
-
CreateSession: Cuando utiliza operaciones de la API de punto de conexión zonal (en el nivel de objeto) (excepto CopyObject y UploadPartCopy), puede especificar estos encabezados de solicitud.
-
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. -
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 mediante 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 admite que proporcione de forma opcional un contexto de cifrado explícito con el encabezado x-amz-server-side-encryption-context
. Para buckets de directorio, un contexto de cifrado es un conjunto definido de pares clave-valor que contienen información contextual sobre los datos. El valor debe coincidir con el contexto de cifrado predeterminado: el nombre de recurso de Amazon (ARN) del bucket. No se admite un valor de contexto de cifrado adicional.
Para obtener información sobre el contexto de cifrado en buckets de directorio, 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.
La configuración de SSE-KMS solo admite 1 clave administrada por el cliente por bucket de directorio durante la vida útil del bucket. La Clave administrada de AWS (aws/s3
) no es compatible. Además, después de especificar una clave administrada por el cliente para SSE-KMS, no puede invalidar la clave administrada por el cliente para la configuración de SSE-KMS del bucket.
Puede identificar la clave administrada por el cliente que especificó para la configuración de SSE-KMS del bucket, de la siguiente manera:
Realice una solicitud de operación de API de
HeadObject
para encontrar el valor dex-amz-server-side-encryption-aws-kms-key-id
en la respuesta.
Para usar una nueva clave administrada por el cliente para los datos, le recomendamos copiar los objetos existentes en un nuevo bucket de directorio con una nueva clave administrada por el cliente.
Para obtener información sobre el contexto de cifrado en buckets de directorio, consulte AWS KMS keys.
Claves de bucket de S3 (x-amz-server-side-encryption-aws-bucket-key-enabled
)
Las claves de 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 información sobre las claves de bucket de S3 en buckets de directorio, consulte Contexto de cifrado.
nota
Al utilizar AWS CLI, para CreateSession
, el token de sesión se actualiza automáticamente para evitar interrupciones del servicio cuando una sesión caduca. No se admite para invalidar los valores de la configuración de cifrado para la solicitud de CreateSession
. Además, en las llamadas a la API de punto de conexión zonal (excepto CopyObject y UploadPartCopy), no se admite para invalidar los valores de la configuración de cifrado de la solicitud de CreateSession
.
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.
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, utilice el comando put-bucket-encryption
para establecer la configuración de cifrado predeterminada del bucket de directorios como SSE-KMS (aws:kms
). En concreto, agregue 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
, debe proporcionar un ID de clave de AWS KMS de la clave administrada por el cliente. Los buckets de directorio no utilizan una clave administrada de AWS. Para obtener un comando de ejemplo, consulte Uso de AWS CLI.
A continuación, cuando carga un objeto nuevo con el siguiente comando, Amazon S3 utiliza la configuración del bucket para el cifrado predeterminado para cifrar el objeto de forma predeterminada.
aws s3api put-object --bucket
--key
bucket-base-name
--zone-id
--x-s3example-object-key
--bodyfilepath
No es necesario que agregue -\-bucket-key-enabled
de forma explícita en los comandos de operaciones de la API de punto de conexión zonal. Las claves de 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.
Puede copiar un objeto de un bucket de origen (por ejemplo, un bucket de uso general) a un bucket nuevo (por ejemplo, un bucket de directorio) y utilizar el cifrado SSE-KMS para los objetos de destino. Para ello, utilice el comando put-bucket-encryption
para establecer la configuración de cifrado predeterminada del bucket de destino (por ejemplo, un bucket de directorio) como SSE-KMS (aws:kms
). Para obtener un comando de ejemplo, consulte Uso de AWS CLI. A continuación, cuando copia un objeto con el siguiente comando, Amazon S3 utiliza la configuración del bucket para el cifrado predeterminado para cifrar el objeto de forma predeterminada.
aws s3api copy-object --copy-source
/
amzn-s3-demo-bucket
example-object-key
--bucket--key
bucket-base-name
--zone-id
--x-s3example-object-key
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
nota
Al utilizar los SDK de AWS, para CreateSession
, el token de sesión se actualiza automáticamente para evitar interrupciones del servicio cuando una sesión caduca. No se admite para invalidar los valores de la configuración de cifrado para la solicitud de CreateSession
. Además, en las llamadas a la API de punto de conexión zonal (excepto CopyObject y UploadPartCopy), no se admite para invalidar los valores de la configuración de cifrado de la solicitud de CreateSession
.
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.
Para obtener más información sobre el uso de los SDK de AWS para establecer la configuración de cifrado predeterminada de un bucket de directorios como SSE-KMS, consulte Uso de los AWS SDK.
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 de 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.
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.