Replicar objetos cifrados - Amazon Simple Storage Service

Replicar 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 creados con cifrado del servidor (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 DOC-EXAMPLE-SOURCE-BUCKET como el DOC-EXAMPLE-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 DOC-EXAMPLE-SOURCE-BUCKET y DOC-EXAMPLE-DESTINATION-BUCKET. Debe crear dos claves de KMS distintas para los buckets DOC-EXAMPLE-SOURCE-BUCKET y DOC-EXAMPLE-DESTINATION-BUCKET. Las AWS KMS keys nunca se comparten fuera de la Región de AWS en la que se han creado.

        { "Version":"2012-10-17", "Statement":[ { "Action":[ "s3:ListBucket", "s3:GetReplicationConfiguration", "s3:GetObjectVersionForReplication", "s3:GetObjectVersionAcl", "s3:GetObjectVersionTagging" ], "Effect":"Allow", "Resource":[ "arn:aws:s3:::DOC-EXAMPLE-SOURCE-BUCKET", "arn:aws:s3:::DOC-EXAMPLE-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:::DOC-EXAMPLE-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:::DOC-EXAMPLE-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:::DOC-EXAMPLE-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 DOC-EXAMPLE-SOURCE-BUCKET, que le indica a Amazon S3 que replique los objetos con el prefijo Tax/ en el bucket DOC-EXAMPLE-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:::DOC-EXAMPLE-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 DOC-EXAMPLE-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:::DOC-EXAMPLE-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 DOC-EXAMPLE-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 DOC-EXAMPLE-SOURCE-BUCKET. Asegúrese de proporcionar el nombre del bucket DOC-EXAMPLE-SOURCE-BUCKET.

      $ aws s3api put-bucket-replication \ --replication-configuration file://replication.json \ --bucket DOC-EXAMPLE-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 DOC-EXAMPLE-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 DOC-EXAMPLE-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 SDK de AWS. Tendrá que modificar la configuración de replicación en concordancia.

Para obtener información conceptual, consulte Replicación de objetos creados con cifrado del servidor (SSE-C, SSE-S3, SSE-KMS, DSSE-KMS).