Cambiar el propietario de la réplica - Amazon Simple Storage Service

Cambiar el propietario de la réplica

En la replicación, el propietario del objeto de origen también es propietario de la réplica de manera predeterminada. Sin embargo, cuando los buckets de origen y destino son propiedad de diferentes Cuentas de AWS, es posible que quiera cambiar la propiedad de la réplica. Por ejemplo, es posible que quiera cambiar la propiedad para restringir el acceso a las réplicas de objetos. En la configuración de replicación, puede agregar ajustes de configuración opcionales para cambiar la propiedad de la réplica a la Cuenta de AWS propietaria de los buckets de destino.

Para cambiar el propietario de la réplica, haga lo siguiente:

  • Añada la opción de invalidación del propietario a la configuración de replicación para indicar a Amazon S3 que cambie la propiedad de la réplica.

  • Conceda a Amazon S3 el permiso s3:ObjectOwnerOverrideToBucketOwner para cambiar la propiedad de la réplica.

  • Añada el permiso s3:ObjectOwnerOverrideToBucketOwner en la política del bucket de destino para permitir el cambio de propiedad de la réplica. El permiso s3:ObjectOwnerOverrideToBucketOwner permite al propietario de los buckets de destino aceptar la propiedad de las réplicas de objetos.

Para obtener más información, consulte Consideraciones sobre la opción de anulación de la propiedad y Agregar la opción de invalidación del propietario a la configuración de la replicación. Para ver un ejemplo práctico con instrucciones paso a paso, consulte Cómo cambiar al propietario de la réplica.

importante

En lugar de utilizar la opción de invalidación del propietario, puede utilizar la configuración de propietario del bucket obligatorio de Propiedad de objetos. Cuando utiliza la replicación y los buckets de origen y destino pertenecen a diferentes Cuentas de AWS, el propietario del bucket de destino puede utilizar la configuración aplicada por el propietario del bucket para Propiedad de objetos con el fin de cambiar la propiedad de réplica a la Cuenta de AWS que posee el bucket de destino. Esta configuración deshabilita las listas de control de acceso (ACL) a objetos.

La configuración aplicada por el propietario del bucket imita el comportamiento de anulación del propietario existente sin necesidad del permiso s3:ObjectOwnerOverrideToBucketOwner. Todos los objetos que se replican en el bucket de destino con la configuración de propietario del bucket obligatorio pertenecen al propietario del bucket de destino. Para obtener más información acerca de la propiedad de objetos, consulte Control de la propiedad de los objetos y desactivación de las ACL del bucket.

Consideraciones sobre la opción de anulación de la propiedad

Al configurar la opción de anulación de propiedad, se aplican las siguientes consideraciones:

  • De forma predeterminada, el propietario del objeto de origen también es propietario de la réplica. Amazon S3 replica la versión del objeto y la ACL asociada a ella.

    Si agrega la opción de anulación del propietario a la configuración de replicación, Amazon S3 replica solo la versión del objeto, no la ACL. Además, Amazon S3 no replica los cambios que se realicen posteriormente en la ACL del objeto de origen. Amazon S3 establece la ACL de la réplica de forma que se conceda control completo al propietario del bucket de destino.

  • Al actualizar una configuración de replicación para habilitar o deshabilitar la anulación del propietario, se produce el siguiente comportamiento:

    • Si añade la opción de invalidación del propietario a la configuración de replicación:

      Cuando Amazon S3 replica una versión del objeto, descarta la ACL asociada al objeto de origen. En su lugar, Amazon S3 establece la ACL de la réplica de forma que se conceda control completo al propietario del bucket de destino. Amazon S3 no replica los cambios que se realicen posteriormente en la ACL del objeto de origen. No obstante, este cambio a la ACL no se aplica a las versiones de objetos que se replicaron antes de configurar la opción de invalidación del propietario. Las actualizaciones de las ACL de los objetos de origen que se replicaron antes de que se configurara la opción de invalidación del propietario se seguirán replicando (porque el objeto y sus réplicas siguen teniendo el mismo propietario).

    • Si elimina la opción de invalidación del propietario de la configuración de replicación:

      Amazon S3 replica objetos nuevos que aparecen en el bucket de origen y las ACL asociadas a los buckets de destino. Para objetos que se replicaron antes de que eliminar la invalidación del propietario, Amazon S3 no replica las ACL porque el cambio de titularidad del objeto que realizó Amazon S3 permanece en vigor. Es decir, las ACL aplicadas a la versión del objeto que se replicaban cuando se estableció la opción de invalidación del propietario siguen sin replicarse.

Agregar la opción de invalidación del propietario a la configuración de la replicación

aviso

Agregue la opción de invalidación del propietario solo cuando los buckets de origen y destino pertenezcan a distintas Cuentas de AWS. Amazon S3 no comprueba si los buckets pertenecen a las mismas cuentas o a cuentas diferentes. Si agrega la opción de invalidación del propietario cuando ambos buckets pertenecen a la misma Cuenta de AWS, Amazon S3 aplica la opción de invalidación del propietario. Esta opción concede permisos completos al propietario del bucket de destino y no replica las actualizaciones que se realicen posteriormente en la lista de control de acceso (ACL) del objeto de origen. El propietario de la réplica puede cambiar directamente la ACL asociada a una réplica con una solicitud PutObjectAcl, pero no a través de la replicación.

Para especificar la opción de sustitución de propietario, agregue lo siguiente a cada Destination elemento:

  • El elemento AccessControlTranslation, que indica a Amazon S3 que cambie la titularidad de la réplica.

  • El elemento Account, que especifica la Cuenta de AWS del propietario del bucket de destino.

<ReplicationConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> ... <Destination> ... <AccessControlTranslation> <Owner>Destination</Owner> </AccessControlTranslation> <Account>destination-bucket-owner-account-id</Account> </Destination> </Rule> </ReplicationConfiguration>

La siguiente configuración de replicación de ejemplo, indica a Amazon S3 que replique objetos que tienen el prefijo de clave Tax en el bucket de destino amzn-s3-demo-destination-bucket y cambie la propiedad de las réplicas. Para utilizar este ejemplo, reemplace los user input placeholders con su propia información.

<?xml version="1.0" encoding="UTF-8"?> <ReplicationConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <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> <Account>destination-bucket-owner-account-id</Account> <AccessControlTranslation> <Owner>Destination</Owner> </AccessControlTranslation> </Destination> </Rule> </ReplicationConfiguration>

Concesión de permisos a Amazon S3 para cambiar la titularidad de la réplica

Conceda a Amazon S3 permisos para cambiar la propiedad de las réplicas añadiendo permisos para la acción s3:ObjectOwnerOverrideToBucketOwner en la política de permisos asociada con el rol de AWS Identity and Access Management (IAM). Se trata del rol de IAM que especificó en la configuración de replicación que permite a Amazon S3 asumir y replicar objetos en su nombre. Para usar el siguiente ejemplo, sustituya amzn-s3-demo-destination-bucket con el nombre del bucket de destino.

... { "Effect":"Allow", "Action":[ "s3:ObjectOwnerOverrideToBucketOwner" ], "Resource":"arn:aws:s3:::amzn-s3-demo-destination-bucket/*" } ...

Agregar permiso a la política del bucket de destino para permitir cambiar la titularidad de la réplica

El propietario del bucket de destino debe otorgar al propietario del bucket de origen permiso para cambiar la titularidad de la réplica. El propietario del bucket de destino otorga al propietario del bucket de origen permiso para la acción s3:ObjectOwnerOverrideToBucketOwner. Este permiso permite al propietario del bucket de destino aceptar la propiedad de las réplicas de objetos. En el siguiente ejemplo de instrucción de política de buckets se muestra cómo se hace esto. Para utilizar este ejemplo, reemplace los user input placeholders con su propia información.

... { "Sid":"1", "Effect":"Allow", "Principal":{"AWS":"source-bucket-account-id"}, "Action":["s3:ObjectOwnerOverrideToBucketOwner"], "Resource":"arn:aws:s3:::amzn-s3-demo-destination-bucket/*" } ...

Cómo cambiar al propietario de la réplica

Cuando los buckets de origen y destino de una configuración de replicación son propiedad de diferentes Cuentas de AWS, puede indicar a Amazon S3 que cambie la propiedad de la réplica a la Cuenta de AWS que posee el bucket de destino. En los ejemplos siguientes, se muestra cómo utilizar la consola de Amazon S3, la AWS Command Line Interface (AWS CLI) y los AWS SDK para cambiar la propiedad de las réplicas.

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

En el siguiente procedimiento, se muestra cómo cambiar la propiedad de la réplica mediante la AWS CLI. En este procedimiento, hará lo siguiente:

  • Cree buckets de origen y destino.

  • Habilite el control de versiones en los buckets.

  • Cree un rol de AWS Identity and Access Management (IAM) que conceda a Amazon S3 permisos para replicar objetos.

  • Agregue la configuración de replicación al bucket de origen.

  • En la configuración de replicación, indique a Amazon S3 que cambie la propiedad de la réplica.

  • Pruebe la configuración de replicación.

Cambio de la propiedad de réplicas cuando los buckets de origen y destino son propiedad de diferentes Cuentas de AWS (AWS CLI)

Para usar los comandos AWS CLI de ejemplo, sustituya user input placeholders con su información.

  1. En este ejemplo, se crean los buckets de origen y destino en dos Cuentas de AWS diferentes. Para trabajar con estas dos cuentas, configure la AWS CLI con dos perfiles con nombre. Este ejemplo usa los nombres de perfil acctA y acctB respectivamente. Para obtener más información sobre los perfiles de credenciales y usar perfiles con nombre, consulte Opciones de los archivos de configuración y credenciales en la Guía del usuario de AWS Command Line Interface.

    importante

    Los perfiles utilizados para este procedimiento deben tener los permisos necesarios. Por ejemplo, en la configuración de replicación especifica el rol de IAM que Amazon S3 puede asumir. Solo puede hacer esto si el perfil que utiliza tiene el permiso iam:PassRole. Si utiliza credenciales de usuario de administrador para crear un perfil con nombre, puede realizar todas las tareas en este procedimiento. 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.

  2. Cree el bucket de origen y habilite el control de versiones. En este ejemplo, se crea el bucket de origen llamado amzn-s3-demo-source-bucket en la región Este de EE. UU. (Norte de Virginia) (us-east-1).

    aws s3api create-bucket \ --bucket amzn-s3-demo-source-bucket \ --region us-east-1 \ --profile acctA
    aws s3api put-bucket-versioning \ --bucket amzn-s3-demo-source-bucket \ --versioning-configuration Status=Enabled \ --profile acctA
  3. Cree un bucket de destino y habilite el control de versiones. En este ejemplo, se crea el bucket de destino llamado amzn-s3-demo-destination-bucket en la región Oeste de EE. UU. (Oregón) (us-west-2). Utilice un perfil de Cuenta de AWS diferente al utilizado para el bucket de origen.

    aws s3api create-bucket \ --bucket amzn-s3-demo-destination-bucket \ --region us-west-2 \ --create-bucket-configuration LocationConstraint=us-west-2 \ --profile acctB
    aws s3api put-bucket-versioning \ --bucket amzn-s3-demo-destination-bucket \ --versioning-configuration Status=Enabled \ --profile acctB
  4. Debe añadir permisos a la política del bucket de destino para permitir el cambio de titularidad de la réplica.

    1. Guarde la siguiente política en un archivo denominado destination-bucket-policy.json. Asegúrese de sustituir user input placeholders con su propia información.

      { "Version": "2012-10-17", "Statement": [ { "Sid": "destination_bucket_policy_sid", "Principal": { "AWS": "source-bucket-owner-account-id" }, "Action": [ "s3:ReplicateObject", "s3:ReplicateDelete", "s3:ObjectOwnerOverrideToBucketOwner", "s3:ReplicateTags", "s3:GetObjectVersionTagging" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::amzn-s3-demo-destination-bucket/*" ] } ] }
    2. Agregue la política anterior al bucket de destino mediante el siguiente comando put-bucket-policy:

      aws s3api put-bucket-policy --region $ {destination-region} --bucket $ {amzn-s3-demo-destination-bucket} --policy file://destination_bucket_policy.json
  5. Crear un rol de IAM. Especifique este rol en la configuración de replicación que agregue al bucket de origen más adelante. Amazon S3 asume este rol para replicar objetos en su nombre. Crea el rol de IAM en dos pasos:

    • Cree el rol.

    • Asocie una política de permisos al rol.

    1. Cree el rol de IAM.

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

        { "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"s3.amazonaws.com" }, "Action":"sts:AssumeRole" } ] }
      2. Ejecute el siguiente comando create-role de AWS CLI para crear el rol de IAM:

        $ aws iam create-role \ --role-name replicationRole \ --assume-role-policy-document file://s3-role-trust-policy.json \ --profile acctA

        Anote el nombre de recurso de Amazon (ARN) del rol de IAM que creó. Necesitará este ARN en un paso posterior.

    2. Asocie una política de permisos al rol.

      1. Copie la siguiente política de permisos y guárdela en un archivo llamado s3-role-perm-pol-changeowner.json en el directorio actual en su equipo local. Esta política concede permisos para varias acciones de buckets y objetos de Amazon S3. En los siguientes pasos, asocie esta política al rol de IAM que ha creado antes.

        { "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:GetObjectVersionForReplication", "s3:GetObjectVersionAcl" ], "Resource":[ "arn:aws:s3:::amzn-s3-demo-source-bucket/*" ] }, { "Effect":"Allow", "Action":[ "s3:ListBucket", "s3:GetReplicationConfiguration" ], "Resource":[ "arn:aws:s3:::amzn-s3-demo-source-bucket" ] }, { "Effect":"Allow", "Action":[ "s3:ReplicateObject", "s3:ReplicateDelete", "s3:ObjectOwnerOverrideToBucketOwner", "s3:ReplicateTags", "s3:GetObjectVersionTagging" ], "Resource":"arn:aws:s3:::amzn-s3-demo-destination-bucket/*" } ] }
      2. Para asociar la política de permisos anterior al rol, ejecute el siguiente comando put-role-policy:

        $ aws iam put-role-policy \ --role-name replicationRole \ --policy-document file://s3-role-perm-pol-changeowner.json \ --policy-name replicationRolechangeownerPolicy \ --profile acctA
  6. Agregar una configuración de replicación al bucket de origen.

    1. La AWS CLI requiere que especifique la configuración de replicación como JSON. Guarde la siguiente JSON en un archivo denominado replication.json en el directorio actual en su equipo local. En la configuración, AccessControlTranslation especifica el cambio en la propiedad de la réplica del propietario del bucket de origen al propietario del bucket de destino.

      { "Role":"IAM-role-ARN", "Rules":[ { "Status":"Enabled", "Priority":1, "DeleteMarkerReplication":{ "Status":"Disabled" }, "Filter":{ }, "Status":"Enabled", "Destination":{ "Bucket":"arn:aws:s3:::amzn-s3-demo-destination-bucket", "Account":"destination-bucket-owner-account-id", "AccessControlTranslation":{ "Owner":"Destination" } } } ] }
    2. Edite el JSON proporcionando valores para el nombre del bucket de destino, el ID de la cuenta del propietario del bucket de destino y IAM-role-ARN. Sustituya IAM-role-ARN por el ARN del rol de IAM que ha creado anteriormente. Guarde los cambios.

    3. Para agregar la configuración de replicación al bucket de origen, ejecute el siguiente comando:

      $ aws s3api put-bucket-replication \ --replication-configuration file://replication.json \ --bucket amzn-s3-demo-source-bucket \ --profile acctA
  7. Pruebe la configuración de replicación comprobando la propiedad de la réplica en la consola de Amazon S3.

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

    2. Agregar objetos al bucket de origen. Compruebe que el bucket de destino contenga las réplicas de objeto y que la propiedad de las réplicas haya cambiado a la Cuenta de AWS propietaria del bucket de destino.

Para obtener un ejemplo de código para 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 Cambiar el propietario de la réplica.