Uso del cifrado del servidor con claves de AWS KMS (SSE-KMS) en buckets de directorio - Amazon Simple Storage Service

Uso del cifrado del servidor con claves de AWS KMS (SSE-KMS) en buckets de directorio

Los controles de seguridad de AWS KMS pueden ayudarlo a cumplir los requisitos de conformidad relacionados con el cifrado. Tiene la opción de elegir configurar buckets de directorio para usar el cifrado del servidor con claves de AWS Key Management Service (AWS KMS) (SSE-KMS) y utilizar estas claves de KMS para proteger los datos en los buckets de directorio de Amazon S3. Para obtener más información sobre SSE-KMS, consulte Uso del cifrado del servidor con claves de AWS KMS (SSE-KMS).

Permisos

Para cargar o descargar un objeto cifrado con una AWS KMS key en o desde Amazon S3, es necesario contar con los permisos kms:GenerateDataKey y kms:Decrypt en la clave. Para obtener más información, consulte Permitir a los usuarios de claves utilizar una clave de KMS para las operaciones criptográficas en la Guía para desarrolladores de AWS Key Management Service. Para obtener más información sobre los permisos AWS KMS necesarios para las cargas multiparte, consulte API y permisos de carga multiparte.

Para obtener más información acerca de las claves de KMS para SSE-KMS, consulte Especificación del cifrado del lado del servidor con AWS KMS (SSE-KMS).

AWS KMS keys

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 de x-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.

Cuando especifique una clave administrada por el cliente de AWS KMS para el cifrado en el bucket de directorio, use solo el ID de clave o el ARN de la clave. No se admite el formato de alias de clave de la clave de KMS.

Para obtener más información acerca de las claves de KMS para SSE-KMS, consulte AWS KMS keys.

Uso de SSE-KMS para operaciones entre cuentas

Cuando utilice el cifrado para operaciones entre cuentas en buckets de directorio, tenga en cuenta lo siguiente:

  • Si desea conceder acceso entre cuentas a los objetos de S3, configure una política de una clave administrada por el cliente para permitir el acceso desde otra cuenta.

  • Para especificar una clave administrada por el cliente, debe utilizar un ARN de la clave de KMS cualificado completo.

Claves de bucket de Amazon S3

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 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 latencia baja. 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 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.

Las claves de bucket de S3 se utilizan durante un periodo limitado dentro de Amazon S3, lo que reduce aún más la necesidad de que Amazon S3 realice solicitudes a AWS KMS para completar las operaciones de cifrado. Para obtener más información sobre el uso de claves de bucket de S3, consulte Claves de bucket de Amazon S3 y Reducción del costo de SSE-KMS con las claves de bucket de Amazon S3.

Necesidad de SSE-KMS

Para requerir SSE-KMS de todos los objetos en un bucket de directorio particular, puede utilizar una política de bucket. Por ejemplo, cuando utiliza la operación CreateSession de la API para conceder permiso para cargar un objeto nuevo (PutObject, CopyObject y CreateMultipartUpload), la siguiente política de bucket deniega el permiso de carga de objeto (s3express:CreateSession) a todos si la solicitud de CreateSession no incluye un encabezado x-amz-server-side-encryption-aws-kms-key-id que solicite SSE-KMS.

{ "Version":"2012-10-17", "Id":"UploadObjectPolicy", "Statement":[{ "Sid":"DenyObjectsThatAreNotSSEKMS", "Effect":"Deny", "Principal":"*", "Action":"s3express:CreateSession", "Resource":"arn:aws:s3express:region:account-id:bucket/bucket-base-name--zone-id--x-s3/*", "Condition":{ "Null":{ "s3express:x-amz-server-side-encryption-aws-kms-key-id":"true" } } } ] }

Para requerir que una AWS KMS key particular se utilice para cifrar los objetos en un bucket, puede utilizar la clave de condición s3express:x-amz-server-side-encryption-aws-kms-key-id. Para especificar la clave de KMS, debe utilizar un nombre de recurso de Amazon (ARN) que tenga el formato arn:aws:kms:region:acct-id:key/key-id. AWS Identity and Access Management no valida si existe la cadena para s3express:x-amz-server-side-encryption-aws-kms-key-id. El ID de la clave de AWS KMS que utiliza Amazon S3 para el cifrado de objetos debe coincidir con el ID de la clave de AWS KMS en la política, de lo contrario, Amazon S3 denegará la solicitud.

Para obtener más información acerca de cómo usar SSE-KMS para cargas de objetos nuevos, consulte Especificación del cifrado del servidor con AWS KMS (SSE-KMS) para la carga de nuevos objetos en buckets de directorio.

Para obtener una lista completa de las claves de condición específicas de buckets de directorio, consulte Autorización de API de puntos de conexión regionales con IAM.

Contexto de cifrado

Para buckets de directorio, un contexto de cifrado es un conjunto definido de pares clave-valor que contienen información contextual sobre los datos. No se admite un valor de contexto de cifrado adicional. Para obtener más información sobre el contexto de cifrado, consulte Contexto de cifrado.

De forma predeterminada, si utiliza SSE-KMS en un bucket de directorio, Amazon S3 utiliza el nombre de recurso de Amazon (ARN) del bucket como par del contexto de cifrado:

arn:aws:s3express:region:account-id:bucket/bucket-base-name--zone-id--x-s3

Asegúrese de que las políticas de IAM o las políticas de claves de AWS KMS utilicen el ARN del bucket como contexto de cifrado.

Si lo desea, puede proporcionar un par de contexto de cifrado explícito mediante el encabezado x-amz-server-side-encryption-context de una solicitud de la API de punto de conexión zonal, como CreateSession. El valor de este encabezado es una cadena codificada en Base64 de un JSON con codificación UTF-8, que contiene el contexto de cifrado como pares clave-valor. En el caso de buckets de directorio, el contexto de cifrado debe coincidir con el contexto de cifrado predeterminado: el nombre de recurso de Amazon (ARN) del bucket. Además, dado que el contexto de cifrado no está cifrado, asegúrese de que no incluya información confidencial.

Puede utilizar el contexto de cifrado para identificar y clasificar las operaciones criptográficas. También puede utilizar el valor del ARN del contexto de cifrado predeterminado para realizar un seguimiento de las solicitudes relevantes en AWS CloudTrail consultando qué ARN del bucket de directorio se usó con qué clave de cifrado.

En el campo requestParameters de un archivo de registro de CloudTrail, si utiliza SSE-KMS en un bucket de directorio, el valor del contexto de cifrado es el ARN del bucket.

"encryptionContext": { "aws:s3express:arn": "arn:aws:s3:::arn:aws:s3express:region:account-id:bucket/bucket-base-name--zone-id--x-s3" }

Además, en el caso del cifrado de objetos con SSE-KMS en un bucket de directorio, los eventos de AWS KMS CloudTrail registran el ARN del bucket en lugar del ARN del objeto.

Envío de solicitudes para objetos cifrados de AWS KMS

Solo se puede acceder a los buckets de directorio a través de HTTPS (TLS). Además, los buckets de directorio firman las solicitudes con AWS Signature Version 4 (SigV4). Para obtener más información sobre el envío de solicitudes para objetos cifrados de AWS KMS, consulte Envío de solicitudes para objetos cifrados de AWS KMS.

Si el objeto utiliza SSE-KMS, no envíe encabezados de solicitud de cifrado para solicitudes GET y HEAD . De lo contrario, aparecerá un error HTTP 400 Bad Request.

Auditoría de cifrado de SSE-KMS en buckets de directorio

Para auditar el uso de las claves de AWS KMS para los datos cifrados con SSE-KMS, puede utilizar los registros de AWS CloudTrail. Puede obtener información sobre las operaciones de cifrado, como, por ejemplo, GenerateDataKey y Decrypt. CloudTrail admite numerosos valores de atributos para filtrar la búsqueda, incluidos el nombre del evento, el nombre de usuario y la fuente del evento.