Replicación de objetos cifrados (SSE-C, SSE-S3, SSE-KMS, DSSE-KMS) - Amazon Simple Storage Service

Replicación de objetos cifrados (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 Habilitación de la replicación de objetos cifrados. Para obtener información acerca de la creación de configuración de replicación, consulte Información general de la 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 sus propias claves de cifrado. 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 en directo 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 Habilitación de la replicación de objetos cifrados. Para obtener información acerca de la creación de configuración de replicación, consulte Información general de la 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:::amzn-s3-demo-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:::amzn-s3-demo-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:::amzn-s3-demo-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:::amzn-s3-demo-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:::amzn-s3-demo-source-bucket" ] }, { "Effect":"Allow", "Action":[ "s3:GetObjectVersionForReplication", "s3:GetObjectVersionAcl" ], "Resource":[ "arn:aws:s3:::amzn-s3-demo-source-bucket/key-prefix1*" ] }, { "Effect":"Allow", "Action":[ "s3:ReplicateObject", "s3:ReplicateDelete" ], "Resource":"arn:aws:s3:::amzn-s3-demo-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:::amzn-s3-demo-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:::amzn-s3-demo-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:::amzn-s3-demo-source-bucket" ] }, { "Effect":"Allow", "Action":[ "s3:GetObjectVersionForReplication", "s3:GetObjectVersionAcl" ], "Resource":[ "arn:aws:s3:::amzn-s3-demo-source-bucket/key-prefix1*" ] }, { "Effect":"Allow", "Action":[ "s3:ReplicateObject", "s3:ReplicateDelete" ], "Resource":"arn:aws:s3:::amzn-s3-demo-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:::amzn-s3-demo-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:::amzn-s3-demo-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

Si necesita replicar datos de SSE-KMS entre cuentas, la regla de replicación debe especificar una clave administrada por el cliente de AWS KMS para la cuenta de destino. Las Claves administradas por AWS no permiten el uso entre cuentas y, por tanto, no se pueden usar para realizar la replicación entre cuentas.

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.

Habilitación de la replicación de objetos cifrados

De forma predeterminada, Amazon S3 no replica los objetos cifrados mediante el cifrado del servidor con claves de AWS Key Management Service (AWS KMS) (SSE-KMS) ni el cifrado del servidor de doble capa con claves de AWS KMS (DSSE-KMS). Para replicar objetos cifrados con SSE-KMS o DSS-KMS, es necesario modificar la configuración de replicación del bucket para indicar a Amazon S3 que replique estos objetos. Este ejemplo explica cómo usar la consola de Amazon S3 y la AWS Command Line Interface (AWS CLI) para cambiar la configuración de replicación del bucket con el fin de habilitar la replicación de objetos cifrados.

Para obtener más información, consulte Replicación de objetos cifrados (SSE-C, SSE-S3, SSE-KMS, DSSE-KMS).

nota

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. Debe actualizar las políticas de IAM para usar el ARN del bucket para el contexto de cifrado. Para obtener más información, consulte Claves de bucket y replicación de S3.

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.

Para obtener instrucciones paso a paso, consulte Configuración de la replicación para buckets de origen y destino que son propiedad de la misma cuenta. En este tema, se proporcionan instrucciones para establecer la configuración de replicación cuando los buckets son propiedad de la misma y de diferentes Cuentas de AWS.

Para replicar los objetos replicados cifrados con AWS CLI, haga lo siguiente:

  • Cree los buckets de origen y de destino y habilite el control de versiones de dichos buckets.

  • Cree un rol de servicio de AWS Identity and Access Management (IAM) que conceda permiso para replicar objetos en Amazon S3. Los permisos del rol de IAM incluye los permisos necesarios para replicar los objetos cifrados.

  • Añada una configuración de replicación al bucket de origen. La configuración de replicación proporciona información relacionada con objetos de replicación cifrados mediante claves de KMS.

  • Agregue objetos al bucket de origen.

  • Pruebe la configuración para confirmar que los objetos cifrados se están replicando en el bucket de destino.

Los siguientes procedimientos le guiarán por este proceso.

Para replicar objetos cifrados del lado del servidor (AWS CLI)
  1. En este ejemplo, se crea tanto el bucket amzn-s3-demo-source-bucket como el amzn-s3-demo-destination-bucket en la misma Cuenta de AWS. También puede configurar un perfil de credenciales para la AWS CLI. En este ejemplo, usamos el nombre de perfil acctA.

    Para obtener más información acerca de la configuración de perfiles de credenciales, consulte Perfiles con nombre en la Guía del usuario de AWS Command Line Interface. Para usar los comandos de este ejemplo, sustituya user input placeholders por su información.

  2. Use los siguientes comandos para crear el bucket DOC-EXAMPLE-SOURCE-BUCKET y habilitar el control de versiones en él. Los siguientes comandos de ejemplo crean el bucket DOC-EXAMPLE-SOURCE-BUCKET en la región Este de EE. UU. (Norte de Virginia) (us-east-1).

    aws s3api create-bucket \ --bucket DOC-EXAMPLE-SOURCE-BUCKET \ --region us-east-1 \ --profile acctA
    aws s3api put-bucket-versioning \ --bucket DOC-EXAMPLE-SOURCE-BUCKET \ --versioning-configuration Status=Enabled \ --profile acctA
  3. Use los siguientes comandos para crear el bucket DOC-EXAMPLE-DESTINATION-BUCKET y habilitar el control de versiones en él. Los siguientes comandos de ejemplo crean el bucket DOC-EXAMPLE-DESTINATION-BUCKET en la región Oeste de EE. UU. (Oregón) (us-west-2).

    nota

    Para establecer la configuración de replicación cuando los buckets DOC-EXAMPLE-SOURCE-BUCKET y DOC-EXAMPLE-DESTINATION-BUCKET están en la misma Cuenta de AWS, debe utilizar el mismo perfil. En este ejemplo, usaremos acctA. Para configurar la replicación cuando los buckets son propiedad de diferentes Cuentas de AWS, debe especificar diferentes perfiles para cada uno.

    aws s3api create-bucket \ --bucket DOC-EXAMPLE-DESTINATION-BUCKET \ --region us-west-2 \ --create-bucket-configuration LocationConstraint=us-west-2 \ --profile acctA
    aws s3api put-bucket-versioning \ --bucket DOC-EXAMPLE-DESTINATION-BUCKET \ --versioning-configuration Status=Enabled \ --profile acctA
  4. A continuación, cree un rol de servicio de IAM. Especificará este rol en la configuración de replicación que agregue al bucket DOC-EXAMPLE-SOURCE-BUCKET más adelante. Amazon S3 asume este rol para replicar objetos en su nombre. Crea el rol de IAM en dos pasos:

    • Cree un rol de servicio.

    • Asocie una política de permisos al rol.

    1. Para crear un rol de servicio de IAM, haga lo siguiente:

      1. Copie la siguiente política de confianza y guárdela en un archivo llamado s3-role-trust-policy-kmsobj.json en el directorio actual en su equipo local. Esta política concede permisos a la entidad principal de servicio de Amazon S3 para asumir el rol para que Amazon S3 puede realizar tareas en su nombre.

        { "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"s3.amazonaws.com" }, "Action":"sts:AssumeRole" } ] }
      2. Utilice el siguiente comando para crear el rol:

        $ aws iam create-role \ --role-name replicationRolekmsobj \ --assume-role-policy-document file://s3-role-trust-policy-kmsobj.json \ --profile acctA
    2. A continuación, asocie una política de permisos al rol. Esta política concede permisos para varias acciones de buckets y objetos de Amazon S3.

      1. Copie la siguiente política de permisos y guárdela en un archivo llamado s3-role-permissions-policykmsobj.json en el directorio actual en su equipo local. Creará un rol de IAM y le asociará la política más adelante.

        importante

        En la política de permisos, debe especificar los ID de la clave AWS KMS que se emplearán para el cifrado de los buckets amzn-s3-demo-source-bucket y amzn-s3-demo-destination-bucket. Debe crear dos claves de KMS para los buckets amzn-s3-demo-source-bucket y amzn-s3-demo-destination-bucket. Las AWS KMS keys no se comparten fuera de la Región de AWS en la que se crearon.

        { "Version":"2012-10-17", "Statement":[ { "Action":[ "s3:ListBucket", "s3:GetReplicationConfiguration", "s3:GetObjectVersionForReplication", "s3:GetObjectVersionAcl", "s3:GetObjectVersionTagging" ], "Effect":"Allow", "Resource":[ "arn:aws:s3:::amzn-s3-demo-source-bucket", "arn:aws:s3:::amzn-s3-demo-source-bucket/*" ] }, { "Action":[ "s3:ReplicateObject", "s3:ReplicateDelete", "s3:ReplicateTags" ], "Effect":"Allow", "Condition":{ "StringLikeIfExists":{ "s3:x-amz-server-side-encryption":[ "aws:kms", "AES256", "aws:kms:dsse" ], "s3:x-amz-server-side-encryption-aws-kms-key-id":[ "AWS KMS key IDs(in ARN format) to use for encrypting object replicas" ] } }, "Resource":"arn:aws:s3:::amzn-s3-demo-destination-bucket/*" }, { "Action":[ "kms:Decrypt" ], "Effect":"Allow", "Condition":{ "StringLike":{ "kms:ViaService":"s3.us-east-1.amazonaws.com", "kms:EncryptionContext:aws:s3:arn":[ "arn:aws:s3:::amzn-s3-demo-source-bucket/*" ] } }, "Resource":[ "AWS KMS key IDs(in ARN format) used to encrypt source objects." ] }, { "Action":[ "kms:Encrypt" ], "Effect":"Allow", "Condition":{ "StringLike":{ "kms:ViaService":"s3.us-west-2.amazonaws.com", "kms:EncryptionContext:aws:s3:arn":[ "arn:aws:s3:::amzn-s3-demo-destination-bucket/*" ] } }, "Resource":[ "AWS KMS key IDs(in ARN format) to use for encrypting object replicas" ] } ] }
      2. Cree una política y asóciela al rol.

        $ aws iam put-role-policy \ --role-name replicationRolekmsobj \ --policy-document file://s3-role-permissions-policykmsobj.json \ --policy-name replicationRolechangeownerPolicy \ --profile acctA
  5. A continuación, añada la siguiente configuración de replicación al bucket amzn-s3-demo-source-bucket, que le indica a Amazon S3 que replique los objetos con el prefijo Tax/ en el bucket amzn-s3-demo-destination-bucket.

    importante

    En la configuración de replicación, debe especificar el rol de IAM que puede asumir Amazon S3. Solo puede hacer esto si tiene el permiso iam:PassRole. El perfil que especifique en el comando de la CLI tiene que tener este permiso. Para obtener más información, consulte Concesión de permisos a un usuario para transferir un rol a un servicio de Servicio de AWS en la Guía del usuario de IAM.

    <ReplicationConfiguration> <Role>IAM-Role-ARN</Role> <Rule> <Priority>1</Priority> <DeleteMarkerReplication> <Status>Disabled</Status> </DeleteMarkerReplication> <Filter> <Prefix>Tax</Prefix> </Filter> <Status>Enabled</Status> <SourceSelectionCriteria> <SseKmsEncryptedObjects> <Status>Enabled</Status> </SseKmsEncryptedObjects> </SourceSelectionCriteria> <Destination> <Bucket>arn:aws:s3:::amzn-s3-demo-destination-bucket</Bucket> <EncryptionConfiguration> <ReplicaKmsKeyID>AWS KMS key IDs to use for encrypting object replicas</ReplicaKmsKeyID> </EncryptionConfiguration> </Destination> </Rule> </ReplicationConfiguration>

    Para añadir una configuración de replicación al bucket amzn-s3-demo-source-bucket, haga lo siguiente:

    1. La AWS CLI requiere que especifique la configuración de replicación como JSON. Guarde la siguiente JSON en un archivo (replication.json) en el directorio actual en su equipo local.

      { "Role":"IAM-Role-ARN", "Rules":[ { "Status":"Enabled", "Priority":1, "DeleteMarkerReplication":{ "Status":"Disabled" }, "Filter":{ "Prefix":"Tax" }, "Destination":{ "Bucket":"arn:aws:s3:::amzn-s3-demo-destination-bucket", "EncryptionConfiguration":{ "ReplicaKmsKeyID":"AWS KMS key IDs (in ARN format) to use for encrypting object replicas" } }, "SourceSelectionCriteria":{ "SseKmsEncryptedObjects":{ "Status":"Enabled" } } } ] }
    2. Edite el JSON para proporcionar valores para el bucket amzn-s3-demo-destination-bucket, AWS KMS key IDs (in ARN format) y IAM-role-ARN. Guarde los cambios.

    3. Use el siguiente comando para añadir la configuración de replicación al bucket amzn-s3-demo-source-bucket. Asegúrese de proporcionar el nombre del bucket amzn-s3-demo-source-bucket.

      $ aws s3api put-bucket-replication \ --replication-configuration file://replication.json \ --bucket amzn-s3-demo-source-bucket \ --profile acctA
  6. Compruebe la configuración para verificar que se hayan replicado los objetos cifrados. En la consola de Amazon S3, haga lo siguiente:

    1. Inicie sesión AWS Management Console Management Console y abra la consola de Amazon S3 en https://console.aws.amazon.com/s3/.

    2. En el bucket amzn-s3-demo-source-bucket, cree una carpeta llamada Tax.

    3. Añada objetos de ejemplo a la carpeta. Asegúrese de elegir la opción de cifrado y especifique su clave de KMS para cifrar los objetos.

    4. Compruebe que el bucket amzn-s3-demo-destination-bucket contenga las réplicas de objeto y que se hayan cifrado con la clave de KMS que especificó en la configuración. Para obtener más información, consulte Obtención de información del estado de replicación.

Para ver un ejemplo de código sobre cómo agregar una configuración de replicación, consulte Uso de los AWS SDK. Tendrá que modificar la configuración de replicación en concordancia.

Para obtener información conceptual, consulte Replicación de objetos cifrados (SSE-C, SSE-S3, SSE-KMS, DSSE-KMS).