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. Cuando los buckets de origen y destino pertenecen a diferentes Cuentas de AWS y desea cambiar la propiedad de réplica a la Cuenta de AWS que posee el bucket de destino, 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. Podría hacer esto, por ejemplo, para restringir el acceso a las réplicas de objetos. Esta opción recibe el nombre también de invalidación del propietario en la configuración de replicación. Para obtener más información sobre la opción de invalidación del propietario, consulte Agregar la opción de invalidación del propietario a la configuración de la replicación. Para obtener información acerca de la configuración de replicación, consulte Información general de la replicación de objetos.

Para configurar la invalidación del propietario, 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 titularidad de la réplica.

  • Conceda permisos a Amazon S3 para cambiar la titularidad de la réplica.

  • Agregue permisos en la política del buckets de destino para permitir cambiar la propiedad de la réplica. Esto permite al propietario de los buckets de destino aceptar la propiedad de las réplicas de objetos.

Para obtener más información, consulte 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.

Configuración de propietario del bucket obligatorio de Object Ownership

Cuando utiliza la replicación de Amazon S3 y los buckets de origen y destino pertenecen a diferentes Cuentas de AWS, el propietario del bucket de destino puede desactivar las ACL (con la configuración de propietario del bucket obligatorio para Object Ownership) para cambiar la propiedad de réplica a la Cuenta de AWS que posee el bucket de destino. Esta configuración imita el comportamiento de anulación del propietario existente sin necesidad del permiso s3:ObjectOwnerOverrideToBucketOwner. Esto significa que 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.

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. 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 PUT ACL, 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 tiene el prefijo de clave Tax en el bucket de destino y cambie la propiedad de las réplicas.

<?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:::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 titularidad de la réplica añadiendo permiso para la acción s3:ObjectOwnerOverrideToBucketOwner en la política de permisos asociada con el rol de 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.

... { "Effect":"Allow", "Action":[ "s3:ObjectOwnerOverrideToBucketOwner" ], "Resource":"arn:aws:s3:::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. Esto 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.

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

Consideraciones adicionales

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 añade la invalidación del propietario, 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 inhabilitar la invalidación del propietario, sucede lo siguiente.

     

    • 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, establece la ACL de la réplica de forma que se conceda control completo al propietario del bucket de destino. 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.

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 este ejemplo, se explica cómo utilizar la consola de Amazon S3 y la AWS CLI para cambiar la propiedad de la réplica. Para obtener más información, consulte Cambiar el propietario de la réplica.

nota

Cuando utiliza la replicación de S3 y los buckets de origen y destino pertenecen a diferentes Cuentas de AWS, el propietario del bucket de destino puede desactivar las ACL (con la configuración de propietario del bucket obligatorio para Object Ownership) para cambiar la propiedad de réplica a la Cuenta de AWS que posee el bucket de destino. Esta configuración imita el comportamiento de anulación del propietario existente sin necesidad del permiso s3:ObjectOwnerOverrideToBucketOwner. Esto significa que 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.

Para obtener más información acerca de la configuración de la replicación mediante el cifrado del lado del servidor con AWS Key Management Service en escenarios entre cuentas, consulte Conceder permisos adicionales para escenarios que afectan a varias cuentas.

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 cambiar la propiedad de la réplica con la AWS CLI, es necesario crear buckets, habilitar el control de versiones en los buckets, crear un rol de IAM que conceda permiso a Amazon S3 para replicar objetos y agregar la configuración de replicación al bucket de origen. En la configuración de replicación indica a Amazon S3 que cambie la titularidad de la réplica. Ahora puede probar la configuración.

Parar cambiar la propiedad de la réplica cuando los buckets de origen y destino son propiedad de Cuentas de AWS (AWS CLI) diferentes
  1. En este ejemplo, crea los buckets de origen y destino en dos Cuentas de AWS diferentes. 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 acerca de la configuración de perfiles de credenciales, consulte Perfiles con nombre en la Guía del usuario de AWS Command Line Interface.

    importante

    Los perfiles utilizados para este ejercicio tienen que 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. Para obtener más información, consulte Concesión de permisos a un usuario para transferir un rol a un servicio de AWS en la Guía del usuario de IAM.

    Tendrá que asegurarse de que estos permisos tengan los permisos necesarios. Por ejemplo, la configuración de replicación incluye un rol de IAM que Amazon S3 puede asumir. El perfil con nombre utilizado para asociar dicha configuración a un bucket solo puede hacerlo si tiene el permiso iam:PassRole. Si especifica credenciales de usuario de administrador al crear estos perfiles con nombre, entonces tienen todos los permisos. Para obtener más información, consulte Concesión de permisos a un usuario para transferir un rol a un 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 en la región EE. UU. Este (Norte de Virginia) (us-east-1).

    aws s3api create-bucket \ --bucket source \ --region us-east-1 \ --profile acctA
    aws s3api put-bucket-versioning \ --bucket source \ --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 en la región EE. UU. Oeste (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 destination \ --region us-west-2 \ --create-bucket-configuration LocationConstraint=us-west-2 \ --profile acctB
    aws s3api put-bucket-versioning \ --bucket destination \ --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 destination-bucket-policy.json.

      { "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:::destination/*" ] } ] }
    2. Coloque la política anterior en el bucket de destino:

      aws s3api put-bucket-policy --region $ {destination_region} --bucket $ {destination} --policy file://destination_bucket_policy.json
  5. Cree 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:

    • Crear un rol.

    • Asocie una política de permisos al rol.

    1. Cree un 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 de AWS CLI para crear un rol.

        $ aws iam create-role \ --role-name replicationRole \ --assume-role-policy-document file://s3-role-trust-policy.json \ --profile acctA
    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, crea un rol de IAM y asocia esta política al rol.

        { "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:GetObjectVersionForReplication", "s3:GetObjectVersionAcl" ], "Resource":[ "arn:aws:s3:::source/*" ] }, { "Effect":"Allow", "Action":[ "s3:ListBucket", "s3:GetReplicationConfiguration" ], "Resource":[ "arn:aws:s3:::source" ] }, { "Effect":"Allow", "Action":[ "s3:ReplicateObject", "s3:ReplicateDelete", "s3:ObjectOwnerOverrideToBucketOwner", "s3:ReplicateTags", "s3:GetObjectVersionTagging" ], "Resource":"arn:aws:s3:::destination/*" } ] }
      2. Para crear una política y asociarla al rol, ejecute el siguiente comando.

        $ 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, la adición de AccessControlTranslation para indicar un cambio en la titularidad de la réplica.

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

    3. Para añadir la configuración de replicación al bucket de origen, ejecute el siguiente comando. Proporcione el nombre del bucket de origen.

      $ aws s3api put-bucket-replication \ --replication-configuration file://replication.json \ --bucket source \ --profile acctA
  7. Compruebe 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 réplicas del objeto y que la propiedad de las réplicas haya cambiado a la Cuenta de AWS propietaria del bucket de destino.

Para informarse sobre un ejemplo de código que agregar a la configuración de replicación, consulte Uso de los AWS SDK. Tiene que modificar la configuración de replicación en concordancia. Para obtener información conceptual, consulte Cambiar el propietario de la réplica.