Replicación de objetos creados con cifrado del servidor (SSE-C, SSE-S3, SSE-KMS, DSSE-KMS) - Amazon Simple Storage Service

Replicación de objetos creados con cifrado del servidor (SSE-C, SSE-S3, SSE-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.

Existen algunas consideraciones especiales cuando replica objetos que se han cifrado mediante el cifrado en el servidor. Amazon S3 admite los siguientes tipos de cifrado en el servidor:

  • Cifrado en el servidor con claves administradas por Amazon S3 (SSE-S3)

  • Cifrado del lado del servidor con claves AWS Key Management Service (AWS KMS) (SSE-KMS)

  • Cifrado del servidor de doble capa con claves de AWS KMS (DSSE-KMS)

  • Cifrado en el servidor con claves proporcionadas por el cliente (SSE-C)

Para obtener más información acerca del cifrado del lado del servidor, consulte Protección de los datos con el cifrado del servidor.

En este tema se explican los permisos que necesita para dirigir Amazon S3 a la replicación de objetos que se han cifrado mediante el cifrado en el servidor. En este tema también se proporcionan elementos de configuración adicionales que puede agregar y políticas de AWS Identity and Access Management (IAM) de ejemplo que conceden los permisos necesarios para replicar objetos cifrados.

Para ver un ejemplo con instrucciones paso a paso, consulte Replicar objetos cifrados. Para obtener información acerca de la creación de configuración de replicación, consulte Replicación de objetos.

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.

Cómo afecta el cifrado de buckets predeterminado a la replicación

Cuando habilita el cifrado predeterminado para un bucket de destino de replicación, se aplica el siguiente comportamiento de cifrado:

  • Si los objetos del bucket de origen no están cifrados, los objetos de réplica del bucket de destino se cifran mediante la configuración de cifrado predeterminado del bucket de destino. Como resultado, las etiquetas de entidad (ETags) de los objetos de origen difieren de las ETags de los objetos de réplica. Si tiene aplicaciones que utilizan ETags, deberá actualizarlas para tener en cuenta esta diferencia.

  • Si los objetos del bucket de origen se cifran mediante el cifrado del servidor con claves administradas por Amazon S3 (SSE-S3), el cifrado del servidor con claves de AWS Key Management Service (AWS KMS) (SSE-KMS) o con cifrado del servidor de doble capa con claves de AWS KMS (DSSE-KMS), los objetos de réplica del bucket de destino utilizarán el mismo tipo de cifrado que los objetos de origen. La configuración de cifrado predeterminado del bucket de destino no se utiliza.

Replicación de objetos cifrados con SSE-C

Al utilizar cifrado en el servidor con claves proporcionadas por el cliente (SSE-C), puede administrar claves privadas. Con SSE-C, usted administra las claves mientras que Amazon S3 administra el proceso de cifrado y descifrado. Debe proporcionar una clave de cifrado como parte de su solicitud, pero no necesita escribir ningún código para realizar el cifrado o descifrado de objetos. Cuando carga un objeto, Amazon S3 cifra el objeto mediante la clave que ha proporcionado. A continuación, Amazon S3 purga dicha clave de la memoria. Al recuperar un objeto, debe facilitar la misma clave de cifrado como parte de la solicitud. Para obtener más información, consulte Uso de cifrado en el lado del servidor con claves proporcionadas por el cliente (SSE-C).

La replicación de S3 admite objetos cifrados con SSE-C. Puede configurar la replicación de objetos SSE-C en la consola de Amazon S3 o con los SDK de AWS, de la misma manera que configura la replicación para objetos no cifrados. No hay permisos de SSE-C adicionales a los que se requieren actualmente para la replicación.

La replicación de S3 replica automáticamente los objetos cifrados con SSE-C recién cargados si son elegibles, tal como se especifique en la configuración de replicación de S3. Para replicar objetos existentes en sus buckets, utilice la replicación por lotes de S3. Para obtener más información sobre la replicación de objetos, consulte Configuración de la replicación y Replicación de objetos existentes con replicación por lotes de S3.

No se aplican cargos adicionales por replicar objetos SSE-C. Para obtener más información sobre los precios de replicación, consulte la página de precios de Amazon S3.

Replicación de objetos cifrados con SSE-S3, SSE-KMS o DSSE-KMS

De forma predeterminada, Amazon S3 no replica objetos cifrados con SSE-KMS o DSSE-KMS. En esta sección se explican los elementos de configuración adicionales que puede agregar para indicar a Amazon S3 que replique estos objetos.

Para ver un ejemplo con instrucciones paso a paso, consulte Replicar objetos cifrados. Para obtener información acerca de la creación de configuración de replicación, consulte Replicación de objetos.

Especificar información adicional en la configuración de replicación

En la configuración de replicación, haga lo siguiente:

  • En el elemento Destination de su configuración de replicación, agregue el ID de la clave de AWS KMS simétrica administrada por el cliente que desea que Amazon S3 utilice para cifrar las réplicas de objetos, como se muestra en el siguiente ejemplo de configuración de replicación.

  • Opte explícitamente por permitir la replicación de objetos cifrados mediante claves de KMS (SSE-KMS o DSSE-KMS). Para ello, agregue el elemento SourceSelectionCriteria, como se muestra en el siguiente ejemplo de configuración de la replicación.

<ReplicationConfiguration> <Rule> ... <SourceSelectionCriteria> <SseKmsEncryptedObjects> <Status>Enabled</Status> </SseKmsEncryptedObjects> </SourceSelectionCriteria> <Destination> ... <EncryptionConfiguration> <ReplicaKmsKeyID>AWS KMS key ARN or Key Alias ARN that's in the same Región de AWS as the destination bucket.</ReplicaKmsKeyID> </EncryptionConfiguration> </Destination> ... </Rule> </ReplicationConfiguration>
importante

La clave de KMS debe haberse creado en la misma Región de AWS que el bucket de destino.

La clave de KMS debe ser válida. La operación de la API PutBucketReplication no comprueba la validez de las claves de KMS. Si usa una clave de KMS no válida, recibirá el código de estado 200 OK de HTTP en respuesta, pero la replicación genera un error.

En el siguiente ejemplo se muestra una configuración de replicación que incluye elementos de configuración opcionales. Esta configuración de replicación tiene una regla. La regla se aplica a los objetos con el prefijo de clave Tax. Amazon S3 utiliza el ID de AWS KMS key especificado para cifrar estas réplicas de objetos.

<?xml version="1.0" encoding="UTF-8"?> <ReplicationConfiguration> <Role>arn:aws:iam::account-id:role/role-name</Role> <Rule> <ID>Rule-1</ID> <Priority>1</Priority> <Status>Enabled</Status> <DeleteMarkerReplication> <Status>Disabled</Status> </DeleteMarkerReplication> <Filter> <Prefix>Tax</Prefix> </Filter> <Destination> <Bucket>arn:aws:s3:::DOC-EXAMPLE-DESTINATION-BUCKET</Bucket> <EncryptionConfiguration> <ReplicaKmsKeyID>AWS KMS key ARN or Key Alias ARN that's in the same Región de AWS as the destination bucket. (S3 uses this key to encrypt object replicas.)</ReplicaKmsKeyID> </EncryptionConfiguration> </Destination> <SourceSelectionCriteria> <SseKmsEncryptedObjects> <Status>Enabled</Status> </SseKmsEncryptedObjects> </SourceSelectionCriteria> </Rule> </ReplicationConfiguration>

Conceder permisos adicionales para el rol de IAM

Para replicar objetos cifrados en reposo mediante SSE-S3, SSE-KMS o DSSE-KMS, conceda los siguientes permisos adicionales al rol de AWS Identity and Access Management (IAM) que especifique en la configuración de replicación. Estos permisos los otorga actualizando la política de permisos asociada con el rol de IAM.

  • Acción s3:GetObjectVersionForReplication para objetos de origen: esta acción permite que Amazon S3 replique tanto los objetos sin cifrar como los creados con cifrado del servidor mediante claves de SSE-S3, SSE-KMS o DSSE-KMS.

    nota

    Se recomienda utilizar la s3:GetObjectVersionForReplication acción en lugar de la acción s3:GetObjectVersion, ya que s3:GetObjectVersionForReplication proporciona a Amazon S3 solo los permisos mínimos necesarios para la replicación. Además, la acción s3:GetObjectVersion permite replicar objetos sin cifrar y cifrados con SSE-S3, pero no replicar objetos cifrados con claves de KMS (SSE-KMS o DSSE-KMS).

  • Acciones kms:Decrypt y kms:Encrypt de AWS KMS para las claves de KMS

    • Debe conceder permisos kms:Decrypt para la AWS KMS key que se utilizó para descifrar el objeto de origen.

    • Debe conceder permisos kms:Encrypt para la AWS KMS key que se utilizó para cifrar la réplica del objeto.

  • Acción kms:GenerateDataKey para replicar objetos de texto sin formato: si está replicando objetos de texto sin formato en un bucket con el cifrado SSE-KMS o DSSE-KMS habilitado de forma predeterminada, debe incluir el permiso kms:GenerateDataKey para el contexto de cifrado de destino y la clave de KMS en la política de IAM.

Se recomienda restringir estos permisos solo a los buckets y objetos de destino que utilicen las claves de condición de AWS KMS. La Cuenta de AWS que posea el rol de IAM debe tener permisos para la acciones kms:Encrypt y kms:Decrypt para las claves de KMS que se indican en la política. Si las claves de KMS pertenecen a otra cuenta de Cuenta de AWS, el propietario de las claves de KMS debe conceder estos permisos a la Cuenta de AWS que posee el rol de IAM. Para obtener más información acerca de cómo administrar el acceso a estas claves de KMS, consulte Uso de políticas de IAM con AWS KMS en la Guía para desarrolladores de AWS Key Management Service.

Claves de bucket y replicación de S3

Para utilizar la replicación con una clave de Bucket de S3, la política de AWS KMS key para la clave de KMS utilizada para cifrar la réplica de objeto debe incluir el permiso kms:Decrypt para la entidad principal que realiza la llamada. La llamada a kms:Decrypt verifica la integridad de la clave de bucket de S3 antes de usarla. Para obtener más información, consulte Uso de una clave de bucket de S3 con replicación.

Cuando se habilita una clave de bucket de S3 para el bucket de origen o de destino, el contexto de cifrado será el nombre de recurso de Amazon (ARN) del bucket y no el ARN del objeto (por ejemplo, arn:aws:s3:::bucket_ARN). Debe actualizar las políticas de IAM para usar el ARN del bucket para el contexto de cifrado:

"kms:EncryptionContext:aws:s3:arn": [ "arn:aws:s3:::bucket_ARN" ]

Para obtener más información, consulte Contexto de cifrado (x-amz-server-side-encryption-context) (en la sección “Uso de la API de REST”) y Cambios para tener en cuenta antes de habilitar una clave de bucket de S3.

Ejemplo de políticas: uso de SSE-KMS y SSE-KMS con replicación

En las siguientes políticas de IAM de ejemplo se muestran instrucciones para utilizar SSE-S3 y SSE-KMS con replicación.

ejemplo : uso de SSE-KMS con buckets de destino independientes

En la siguiente política de ejemplo, se muestran instrucciones para utilizar SSE-KMS con buckets de destino independientes.

{ "Version":"2012-10-17", "Statement":[ { "Action": ["kms:Decrypt"], "Effect": "Allow", "Condition": { "StringLike": { "kms:ViaService": "s3.source-bucket-region.amazonaws.com", "kms:EncryptionContext:aws:s3:arn": [ "arn:aws:s3:::DOC-EXAMPLE-SOURCE-BUCKET/key-prefix1*" ] } }, "Resource": [ "List of AWS KMS key ARNs that are used to encrypt source objects." ] }, { "Action": ["kms:Encrypt"], "Effect": "Allow", "Condition": { "StringLike": { "kms:ViaService": "s3.destination-bucket-1-region.amazonaws.com", "kms:EncryptionContext:aws:s3:arn": [ "arn:aws:s3:::DOC-EXAMPLE-DESTINATION-BUCKET1/key-prefix1*" ] } }, "Resource": [ "AWS KMS key ARNs (in the same Región de AWS as destination bucket 1). Used to encrypt object replicas created in destination bucket 1." ] }, { "Action": ["kms:Encrypt"], "Effect": "Allow", "Condition": { "StringLike": { "kms:ViaService": "s3.destination-bucket-2-region.amazonaws.com", "kms:EncryptionContext:aws:s3:arn": [ "arn:aws:s3:::DOC-EXAMPLE-DESTINATION-BUCKET2/key-prefix1*" ] } }, "Resource": [ "AWS KMS key ARNs (in the same Región de AWS as destination bucket 2). Used to encrypt object replicas created in destination bucket 2." ] } ] }
ejemplo : replicación de objetos creados con SSE-S3 y SSE-KMS

A continuación, se muestra una política de IAM completa que concede los permisos necesarios para replicar objetos no cifrados, objetos creados con SSE-KMS y objetos creados con SSE-KMS.

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:GetReplicationConfiguration", "s3:ListBucket" ], "Resource":[ "arn:aws:s3:::DOC-EXAMPLE-SOURCE-BUCKET" ] }, { "Effect":"Allow", "Action":[ "s3:GetObjectVersionForReplication", "s3:GetObjectVersionAcl" ], "Resource":[ "arn:aws:s3:::DOC-EXAMPLE-SOURCE-BUCKET/key-prefix1*" ] }, { "Effect":"Allow", "Action":[ "s3:ReplicateObject", "s3:ReplicateDelete" ], "Resource":"arn:aws:s3:::DOC-EXAMPLE-DESTINATION-BUCKET/key-prefix1*" }, { "Action":[ "kms:Decrypt" ], "Effect":"Allow", "Condition":{ "StringLike":{ "kms:ViaService":"s3.source-bucket-region.amazonaws.com", "kms:EncryptionContext:aws:s3:arn":[ "arn:aws:s3:::DOC-EXAMPLE-SOURCE-BUCKET/key-prefix1*" ] } }, "Resource":[ "List of the AWS KMS key ARNs that are used to encrypt source objects." ] }, { "Action":[ "kms:Encrypt" ], "Effect":"Allow", "Condition":{ "StringLike":{ "kms:ViaService":"s3.destination-bucket-region.amazonaws.com", "kms:EncryptionContext:aws:s3:arn":[ "arn:aws:s3:::DOC-EXAMPLE-DESTINATION-BUCKET/prefix1*" ] } }, "Resource":[ "AWS KMS key ARNs (in the same Región de AWS as the destination bucket) to use for encrypting object replicas" ] } ] }
ejemplo : replicación de objetos con claves de bucket de S3

A continuación, se muestra una política de IAM completa que concede los permisos necesarios para replicar objetos con claves de bucket de S3.

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:GetReplicationConfiguration", "s3:ListBucket" ], "Resource":[ "arn:aws:s3:::DOC-EXAMPLE-SOURCE-BUCKET" ] }, { "Effect":"Allow", "Action":[ "s3:GetObjectVersionForReplication", "s3:GetObjectVersionAcl" ], "Resource":[ "arn:aws:s3:::DOC-EXAMPLE-SOURCE-BUCKET/key-prefix1*" ] }, { "Effect":"Allow", "Action":[ "s3:ReplicateObject", "s3:ReplicateDelete" ], "Resource":"arn:aws:s3:::DOC-EXAMPLE-DESTINATION-BUCKET/key-prefix1*" }, { "Action":[ "kms:Decrypt" ], "Effect":"Allow", "Condition":{ "StringLike":{ "kms:ViaService":"s3.source-bucket-region.amazonaws.com", "kms:EncryptionContext:aws:s3:arn":[ "arn:aws:s3:::DOC-EXAMPLE-SOURCE-BUCKET" ] } }, "Resource":[ "List of the AWS KMS key ARNs that are used to encrypt source objects." ] }, { "Action":[ "kms:Encrypt" ], "Effect":"Allow", "Condition":{ "StringLike":{ "kms:ViaService":"s3.destination-bucket-region.amazonaws.com", "kms:EncryptionContext:aws:s3:arn":[ "arn:aws:s3:::DOC-EXAMPLE-DESTINATION-BUCKET" ] } }, "Resource":[ "AWS KMS key ARNs (in the same Región de AWS as the destination bucket) to use for encrypting object replicas" ] } ] }

Conceder permisos adicionales para escenarios que afectan a varias cuentas

En un escenario de reproducción entre cuentas en el que los buckets de origen y destino pertenecen a Cuentas de AWS diferentes, puede utilizar una clave de KMS para cifrar réplicas de objetos. El propietario de la clave de KMS debe conceder al propietario del bucket de origen permiso para usar la clave de KMS.

nota

Los objetos cifrados mediante Claves administradas por AWS no se pueden compartir entre cuentas porque no se pueden modificar las políticas de claves. Si necesita replicar datos de SSE-KMS entre cuentas, debe utilizar una clave administrada por el cliente de AWS KMS.

Para conceder permiso al propietario del bucket de origen para usar la clave de KMS (consola de AWS KMS)
  1. Inicie sesión en la AWS Management Console y abra la consola de AWS KMS en https://console.aws.amazon.com/kms.

  2. Para cambiar la Región de AWS, utilice el Selector de regiones ubicado en la esquina superior derecha de la página.

  3. Si desea ver las claves de la cuenta que usted crea y administra, en el panel de navegación, elija Customer managed keys (Claves administradas por el cliente).

  4. Seleccione la clave de KMS;.

  5. En Configuración general, elija la pestaña Política de claves.

  6. Desplácese hacia abajo hasta Otras Cuentas de AWS.

  7. Elija Agregar otras Cuentas de AWS.

    Aparecerá el cuadro de diálogo Otro Cuentas de AWS.

  8. En el cuadro de diálogo, elija Agregar otro Cuenta de AWS. Para arn:aws:iam::, introduzca el ID de la cuenta de bucket de origen.

  9. Elija Guardar cambios.

Para conceder permiso al propietario del bucket de origen para usar la clave de KMS (AWS CLI)

Consideraciones sobre cuotas de transacciones de AWS KMS

Cuando agregue muchos objetos nuevos con cifrado de AWS KMS después de activar la replicación entre regiones (CRR), es posible que experimente una limitación (errores 503 Service Unavailable de HTTP). La limitación controlada se produce cuando el número de transacciones de AWS KMS por segundo supera las cuotas actuales. Para obtener más información, consulte Cuotas en la Guía para desarrolladores de AWS Key Management Service.

Para solicitar un aumento de una cuota, use Service Quotas. Para obtener más información, consulte Solicitud de un aumento de cuota. Si Service Quotas no es compatible en su región, abra un caso de AWS Support.