

# Ejemplo 4: Propietario de bucket que concede permisos entre cuentas para objetos que no le pertenecen
<a name="example-walkthroughs-managing-access-example4"></a>

**Topics**
+ [Descripción de permisos entre cuentas y uso de roles de IAM](#access-policies-walkthrough-example4-overview)
+ [Paso 0: Prepararse para el tutorial](#access-policies-walkthrough-example4-step0)
+ [Paso 1: Realizar las tareas de la cuenta A](#access-policies-walkthrough-example4-step1)
+ [Paso 2: Realizar las tareas de la cuenta B](#access-policies-walkthrough-example4-step2)
+ [Paso 3: Realización de las tareas de la cuenta C](#access-policies-walkthrough-example4-step3)
+ [Paso 4: Limpiar](#access-policies-walkthrough-example4-step6)
+ [Recursos relacionados](#RelatedResources-managing-access-example4)

 En este ejemplo de escenario, usted posee un bucket y ha permitido que otras Cuentas de AWS carguen objetos. Si ha aplicado la configuración de propietario del bucket obligatorio de S3 Object Ownership para el bucket, será propietario de todos los objetos del bucket, incluidos los objetos escritos por otra Cuenta de AWS. Este enfoque resuelve el problema de que los objetos no le pertenecen, el propietario del bucket. A continuación, puede delegar permisos a los usuarios de su propia cuenta o a otras Cuentas de AWS. Supongamos que la configuración de propietario del bucket obligatorio de S3 Object Ownership no está habilitada. Es decir, el bucket puede tener objetos que pertenecen a otras Cuentas de AWS. 

Suponga que como propietario del bucket debe conceder permiso entre cuentas para ciertos objetos, independientemente de quién sea el propietario, a un usuario en otra cuenta. Por ejemplo, ese usuario podría ser una aplicación de facturación que necesita obtener acceso a los metadatos de los objetos. Hay dos cuestiones clave:
+ El propietario del bucket no tiene permisos sobre aquellos objetos creados por otras Cuentas de AWS. Para que el propietario del bucket conceda permisos para objetos que no le pertenecen, el propietario del objeto primero debe conceder permiso al propietario del bucket. El propietario del objeto es la Cuenta de AWS que creó los objetos. Luego, el propietario del bucket puede delegar esos permisos.
+ La cuenta propietaria del bucket delega permisos a usuarios en su propia cuenta (consulte [Ejemplo 3: propietario del bucket que concede a sus usuarios permisos para objetos que no posee](example-walkthroughs-managing-access-example3.md)). Sin embargo, la cuenta del propietario del bucket no puede delegar permisos en otra Cuentas de AWS porque no se admite la delegación entre cuentas. 

En este caso, el propietario del bucket puede crear un rol de AWS Identity and Access Management (IAM) con permiso para acceder a los objetos. A continuación, el propietario del bucket puede conceder permiso a otra Cuenta de AWS para asumir el rol, habilitarlo de manera temporal para acceder a los objetos en el bucket. 

**nota**  
S3 Object Ownership es una configuración de bucket de Amazon S3 que puede usar para controlar la propiedad de los objetos que se cargan en el bucket y para activar o desactivar las ACL. De forma predeterminada, la propiedad de objetos se establece en la configuración impuesta por el propietario del bucket. Además, todas las ACL están deshabilitadas. Cuando las ACL están deshabilitadas, el propietario del bucket posee todos los objetos del bucket y administra su acceso de forma exclusiva mediante políticas de administración de acceso.  
 La mayoría de los casos de uso modernos de Amazon S3 ya no requieren el uso de ACL. Le recomendamos desactivar las ACL, excepto en circunstancias en las que necesite controlar el acceso a cada objeto de manera individual. Si las ACL están desactivadas, puede usar políticas para controlar el acceso a todos los objetos del bucket, independientemente de quién haya subido los objetos al bucket. Para obtener más información, consulte [Control de la propiedad de los objetos y desactivación de las ACL del bucket](about-object-ownership.md).

## Descripción de permisos entre cuentas y uso de roles de IAM
<a name="access-policies-walkthrough-example4-overview"></a>

 Las funciones de IAM hacen posible diferentes situaciones en las que se delega acceso a los recursos y el acceso a otras cuentas es una de las situaciones clave. En este ejemplo, el propietario del bucket, la cuenta A, usa un rol de IAM para delegar de forma temporal el acceso a los objetos entre cuentas a usuarios de otra Cuenta de AWS, la cuenta C. Cada rol de IAM que crea trae adjuntas las siguientes dos políticas:
+ Una política de confianza que identifica a otra Cuenta de AWS para que pueda asumir el rol.
+ Una política de acceso que define qué permisos, por ejemplo, `s3:GetObject`, se conceden cuando alguien asume la función. Para ver una lista de permisos que puede especificar en una política, consulte [Acciones de políticas para Amazon S3](security_iam_service-with-iam.md#security_iam_service-with-iam-id-based-policies-actions).

La Cuenta de AWS que se identifica en la política de confianza luego otorga permiso a su usuario para asumir el rol. El usuario puede luego realizar lo siguiente para obtener acceso a los objetos:
+ Asumir la función y, como respuesta, obtener las credenciales de seguridad temporales 
+ Con las credenciales de seguridad temporales, obtener acceso a los objetos en el bucket

Para obtener más información acerca de los roles de IAM, consulte [Roles de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) en la *guía del usuario de IAM*. 

A continuación, se muestra un resumen de los pasos del tutorial:

![\[Permisos entre cuentas con roles de IAM.\]](http://docs.aws.amazon.com/es_es/AmazonS3/latest/userguide/images/access-policy-ex4.png)


1. El usuario administrador de la cuenta A asocia una política de bucket por la cual concede un permiso condicional a la cuenta B para cargar objetos.

1. El administrador de la cuenta A crea un rol de IAM, con la cual establece una relación de confianza con la cuenta C, de manera que los usuarios de esa cuenta puedan obtener acceso a la cuenta A. La política de acceso asociada con la función limita lo que el usuario de la cuenta C puede hacer cuando el usuario obtiene acceso a la cuenta A.

1. El administrador de la cuenta B carga un objeto al bucket que pertenece a la cuenta A y concede un permiso de control absoluto al propietario del bucket.

1. El administrador de la cuenta C crea un usuario y asocia una política de usuario que le permite al usuario asumir la función.

1. El usuario de la cuenta C primero asume la función, la cual le devuelve al usuario credenciales de seguridad temporales. Con esas credenciales temporales, el usuario obtiene acceso a los objetos en el bucket.

Para este ejemplo, se necesitan tres cuentas. La siguiente tabla muestra cómo denominamos a estas cuentas y a los usuarios administradores en estas cuentas. De acuerdo con las directrices de IAM (consulte [Acerca del uso de un usuario administrador para crear recursos y conceder permisos](example-walkthroughs-managing-access.md#about-using-root-credentials)), no utilizamos las credenciales de Usuario raíz de la cuenta de AWS en este tutorial. En lugar de eso, usted crea un usuario administrador en cada cuenta y utiliza esas credenciales cuando se crean recursos y se conceden permisos.


| Cuenta de AWSID de  | Cuenta denominada | Usuario administrador de la cuenta  | 
| --- | --- | --- | 
|  *1111-1111-1111*  |  Cuenta A  |  AccountAadmin  | 
|  *2222-2222-2222*  |  Cuenta B  |  AccountBadmin  | 
|  *3333-3333-3333*  |  Cuenta C  |  AccountCadmin  | 



## Paso 0: Prepararse para el tutorial
<a name="access-policies-walkthrough-example4-step0"></a>

**nota**  
Puede que quiera abrir un editor de textos y tomar notas a medida que se explican los pasos. Específicamente, necesitará ID de cuentas, ID de usuarios canónicos, URL de inicio de sesión de usuarios de IAM para cada cuenta a fin de conectarse a la consola y Amazon Resource Name (ARN, Nombres de recursos de Amazon) de los usuarios de IAM y roles. 

1. Asegúrese de tener tres Cuentas de AWS y que cada cuenta tenga un usuario administrador, como se muestra en la tabla de la sección anterior.

   1. Regístrese para obtener Cuentas de AWS, según sea necesario. Denominamos estas cuentas cuenta A, cuenta B y cuenta C.

   1. Con las credenciales de la cuenta A, inicie sesión en la [consola de IAM](https://console.aws.amazon.com/iam/home?#home) y haga lo siguiente para crear un usuario administrador:
      + Cree al usuario **AccountAadmin** y tenga en cuenta sus credenciales de seguridad. Para obtener más información sobre cómo agregar usuarios, consulte [Creación de un usuario de IAM en su Cuenta de AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html) en la *Guía del usuario de IAM*. 
      + Conceda privilegios de administrador a **AccountAadmin** adjuntando una política de usuario que le conceda acceso total. Para obtener instrucciones, consulte [Administración de políticas de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage.html) en la *Guía del usuario de IAM*. 
      + En el **panel** de la consola de IAM, tenga en cuenta la **URL de inicio de sesión de usuario de IAM**. Los usuarios de esta cuenta deben usar esta dirección URL para iniciar sesión en la Consola de administración de AWS. Para obtener más información, consulte [Inicio de sesión en la Consola de administración de AWS como usuario de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-started_how-users-sign-in.html) en la *Guía del usuario de IAM*. 

   1. Repita el paso anterior para crear usuarios administradores de la cuenta B y de la cuenta C.

1. Para la cuenta C, tenga en cuenta el ID de usuario canónico. 

   Cuando crea un rol de IAM en la cuenta A, la política de confianza le concede a la cuenta C el permiso para asumir la función mediante la especificación del ID de la cuenta. Puede buscar la información de la cuenta de la siguiente manera:

   1. Utilice el ID de la Cuenta de AWS o el alias de la cuenta, el nombre de usuario de IAM y la contraseña para iniciar sesión en la [consola de Amazon S3](https://console.aws.amazon.com/s3/).

   1. Elija el nombre de un bucket de Amazon S3 para ver los detalles de dicho bucket.

   1. Elija la pestaña **Permissions (Permisos)** y, a continuación, elija **Access Control List (Lista de control de acceso)**. 

   1. En la sección **Acceso para la Cuenta de AWS**, en la columna **Cuenta**, hay un identificador largo, por ejemplo, `c1daexampleaaf850ea79cf0430f33d72579fd1611c97f7ded193374c0b163b6`. Este es el ID de usuario canónico.

1. Cuando cree una política de bucket, necesitará la siguiente información. Tenga en cuenta estos valores:
   + **El ID de usuario canónico de la cuenta A**: cuando el administrador de la cuenta A concede el permiso condicional para cargar objetos al administrador de la cuenta B, la condición especifica el ID de usuario canónico del usuario de la cuenta A que debe obtener control absoluto de los objetos. 
**nota**  
El ID de usuario canónico es un concepto exclusivo de Amazon S3. Es la versión ofuscada de 64 caracteres del ID de la cuenta. 
   + **ARN de usuario para el administrador de la cuenta B**: puede encontrar el ARN del usuario en la [consola de IAM](https://console.aws.amazon.com/iam/). Debe seleccionar el usuario y buscar el ARN del usuario en la pestaña **Resumen**.

     En la política de bucket, se concede permiso al `AccountBadmin` para cargar objetos y se usa el ARN para especificar el usuario. El siguiente es un ejemplo de valor de ARN:

     ```
     arn:aws:iam::AccountB-ID:user/AccountBadmin
     ```

1. Configure AWS Command Line Interface (CLI) o AWS Tools for Windows PowerShell. Asegúrese de guardar las credenciales del usuario administrador de la siguiente manera:
   + Si está usando la AWS CLI, cree perfiles, `AccountAadmin` y `AccountBadmin`, en el archivo de configuración.
   + Si usa AWS Tools for Windows PowerShell, asegúrese de almacenar las credenciales para la sesión como `AccountAadmin` y `AccountBadmin`.

   Para obtener instrucciones, consulte [Configuración de las herramientas para los tutoriales](policy-eval-walkthrough-download-awscli.md).

## Paso 1: Realizar las tareas de la cuenta A
<a name="access-policies-walkthrough-example4-step1"></a>

En este ejemplo, la cuenta A es la propietaria del bucket. Por lo tanto, el usuario AccountAadmin en la cuenta A hará lo siguiente: 
+ Crear un bucket.
+ Asocie una política de bucket que conceda el permiso al administrador de la cuenta B para cargar objetos.
+ Cree un rol de IAM que conceda a la cuenta C el permiso para asumir el rol, de manera que pueda acceder a los objetos en el bucket.

### Paso 1.1: Iniciar sesión en la Consola de administración de AWS
<a name="access-policies-walkthrough-cross-account-permissions-acctA-tasks-sign-in-example4"></a>

Con la URL de inicio de sesión de usuario de IAM para la cuenta A, primero inicie sesión en la Consola de administración de AWS como el usuario **AccountAadmin**. Este usuario creará un bucket y le asociará una política. 

### Paso 1.2: Crear un bucket y asociar una política de bucket
<a name="access-policies-walkthrough-example2d-step1-1"></a>

En la consola de Amazon S3, haga lo siguiente:

1. Cree un bucket. Para este ejercicio, se supone que el nombre del bucket es `amzn-s3-demo-bucket1`.

   Para obtener instrucciones, consulte [Creación de un bucket de uso general](create-bucket-overview.md). 

1. Adjunte la siguiente política de bucket. La política concede permiso condicional al permiso de administrador de la cuenta B para cargar objetos.

   Actualice la política proporcionando sus propios valores para `amzn-s3-demo-bucket1`, `AccountB-ID` y `CanonicalUserId-of-AWSaccountA-BucketOwner`. 

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "111",
               "Effect": "Allow",
               "Principal": {
                   "AWS": "arn:aws:iam::111122223333:user/AccountBadmin"
               },
               "Action": "s3:PutObject",
               "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1/*"
           },
           {
               "Sid": "112",
               "Effect": "Deny",
               "Principal": {
                   "AWS": "arn:aws:iam::111122223333:user/AccountBadmin"
               },
               "Action": "s3:PutObject",
               "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1/*",
               "Condition": {
                   "StringNotEquals": {
                       "s3:x-amz-grant-full-control": "id=CanonicalUserId-of-AWSaccountA-BucketOwner"
                   }
               }
           }
       ]
   }
   ```

------

### Paso 1.3: Creación de un rol de IAM para permitir a la cuenta C el acceso entre cuentas en la cuenta A
<a name="access-policies-walkthrough-example2d-step1-2"></a>

En la [Consola de IAM](https://console.aws.amazon.com/iam/), cree un rol de IAM (**examplerole**) que conceda permiso a la cuenta C para asumir el rol. Asegúrese de que sigue registrado como administrador de la cuenta A, ya que el rol se debe crear en la cuenta A.

1. Antes de crear el rol, prepare la política administrada que define los permisos que requiere el rol. Más tarde, en otro paso, la asociará al rol.

   1. En el panel de navegación de la izquierda, elija **Políticas** y, a continuación, elija **Crear política**.

   1. Junto a **Create Your Own Policy**, seleccione **Select**.

   1. Escriba **access-accountA-bucket** en el campo **Nombre de la política**.

   1. Copie la siguiente política de acceso y péguela en el campo **Documento de la política**. La política de acceso le concede al rol el permiso de `s3:GetObject`, de manera que cuando el usuario de la cuenta C asuma el rol, solo pueda realizar la operación `s3:GetObject`.

------
#### [ JSON ]

****  

      ```
      {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1/*"
          }
        ]
      }
      ```

------

   1. Seleccione **Crear política**.

      La nueva política aparece en la lista de políticas administradas.

1. En el panel de navegación de la izquierda, elija **Roles** y, a continuación, elija **Creación de rol nuevo**.

1. En **Seleccionar tipo de rol**, seleccione **Rol para acceso entre cuentas** y, luego, elija el botón **Seleccionar** ubicado al lado de **Proporcionar acceso entre Cuentas de AWS de su propiedad**.

1. Escriba el ID de la cuenta C.

   Para este tutorial, no es obligatorio que los usuarios tengan la autenticación multifactor (MFA) para asumir el rol, por lo que deje esa opción desmarcada.

1. Seleccione **Next Step** para establecer los permisos que se asociarán al rol.

1. 

   Seleccione la casilla de verificación situada junto a la política **access-accountA-bucket** que creó y, a continuación, elija **Siguiente paso**.

   Aparece la página Review para que confirme las configuraciones de la función antes de crearla. Un elemento muy importante para tener en cuenta en esta página es el enlace que puede enviar a los usuarios que necesitan usar esta función. Los usuarios que hacen clic en el enlace se dirigen directamente a la página **Cambio de rol** con los campos ID de cuenta y Nombre de rol ya completados. También puede ver este enlace más tarde, en la página **Role Summary** de cualquier rol con permisos entre cuentas.

1. Escriba `examplerole` para el nombre del rol y, luego, elija **Siguiente paso**.

1. Después de revisar el rol, elija **Crear rol**.

   La función `examplerole` se muestra en la lista de funciones.

1. Elija el nombre del rol `examplerole`.

1. Seleccione la pestaña **Relaciones de confianza**.

1. Elija **Mostrar el documento de política** y verifique que la política de confianza que se muestra coincide con la siguiente política.

   La siguiente política de confianza establece una relación de confianza con la cuenta C mediante la concesión del permiso para realizar la acción `sts:AssumeRole`. Para obtener más información, consulte [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) en la *Referencia de la API de AWS Security Token Service*.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "",
               "Effect": "Allow",
               "Principal": {
                   "AWS": "arn:aws:iam::111122223333:root"
               },
               "Action": "sts:AssumeRole"
           }
       ]
   }
   ```

------

1. Tenga en cuenta el nombre de recurso de Amazon (ARN) del rol `examplerole` que creó. 

   Más adelante en los pasos siguientes, se asocia una política de usuario para permitirle a un usuario de IAM que asuma esta función y la función se identifica con el valor de ARN. 

## Paso 2: Realizar las tareas de la cuenta B
<a name="access-policies-walkthrough-example4-step2"></a>

El bucket de ejemplo que pertenece a la cuenta A necesita objetos que pertenezcan a otras cuentas. En este paso, el administrador de la cuenta B carga un objeto con las herramientas de línea de comandos.
+ Mediante el uso del comando `put-object` de la AWS CLI, cargue un objeto en `amzn-s3-demo-bucket1`. 

  ```
  aws s3api put-object --bucket amzn-s3-demo-bucket1 --key HappyFace.jpg --body HappyFace.jpg --grant-full-control id="canonicalUserId-ofTheBucketOwner" --profile AccountBadmin
  ```

  Tenga en cuenta lo siguiente:
  + El parámetro `--Profile` especifica el perfil `AccountBadmin`, por lo que el objeto pertenece a la cuenta B.
  + El parámetro `grant-full-control` le concede al propietario del bucket permiso de control absoluto sobre el objeto según lo requiere la política de bucket.
  + El parámetro `--body` identifica el archivo de origen para cargar. Por ejemplo, si el archivo está en la unidad C: de un equipo con Windows, se especifica `c:\HappyFace.jpg`. 

## Paso 3: Realización de las tareas de la cuenta C
<a name="access-policies-walkthrough-example4-step3"></a>

En los pasos anteriores, la cuenta A ya ha creado un rol, `examplerole`, mediante el cual se establece una relación de confianza con la cuenta C. Este rol permite a los usuarios de la cuenta C acceder a la cuenta A. En este paso, el administrador de la cuenta C crea un usuario (Dave) y le delega el permiso `sts:AssumeRole` que recibió de la cuenta A. Este enfoque le permite a Dave asumir `examplerole` y obtener acceso temporal a la cuenta A. La política de acceso que la cuenta A asoció al rol limita lo que Dave puede hacer cuando accede a la cuenta A, específicamente, obtener objetos en `amzn-s3-demo-bucket1`.

### Paso 3.1: Creación de un usuario en la cuenta C y delegación de un permiso para asumir examplerole
<a name="cross-acct-access-using-role-step3-1"></a>

1. Con la URL de inicio de sesión de usuario de IAM para la cuenta C, primero inicie sesión en la Consola de administración de AWS como el usuario **AccountCadmin**. 

   

1. En la [consola de IAM](https://console.aws.amazon.com/iam/), cree el usuario Dave. 

   Para obtener instrucciones paso a paso, consulte [Creación de usuarios de IAM (Consola de administración de AWS)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html#id_users_create_console) en la *Guía del usuario de IAM*. 

1. Tenga en cuenta las credenciales de Dave. Dave necesitará estas credenciales para asumir la función `examplerole`.

1. Cree una política integrada para el usuario de IAM Dave a fin de delegar el permiso `sts:AssumeRole` a Dave en el rol `examplerole` en la cuenta A. 

   1. En el panel de navegación de la izquierda, elija **Usuarios**.

   1. Elija el nombre de usuario **Dave**.

   1. En la página de detalles del usuario, seleccione la pestaña **Permisos** y, luego, expanda la sección **Políticas insertadas**.

   1. Seleccione **hacer clic aquí** (o **Crear política de usuario**).

   1. Elija **Custom Policy** y después **Select**.

   1. Escriba un nombre para la política en el campo **Nombre de la política**.

   1. Copie la siguiente política en el campo **Documento de la política**.

      Debe actualizar la política proporcionando el `AccountA-ID`.

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "sts:AssumeRole"
                  ],
                  "Resource": "arn:aws:iam::111122223333:role/examplerole"
              }
          ]
      }
      ```

------

   1. Seleccione **Apply Policy**.

1. Guarde las credenciales de Dave en el archivo de configuración de la AWS CLI mediante la agregación de otro perfil, `AccountCDave`.

   ```
   [profile AccountCDave]
   aws_access_key_id = UserDaveAccessKeyID
   aws_secret_access_key = UserDaveSecretAccessKey
   region = us-west-2
   ```

### Paso 3.2: Asunción del rol (examplerole) y acceso a los objetos
<a name="cross-acct-access-using-role-step3-2"></a>

Ahora Dave puede obtener acceso a los objetos en el bucket que pertenecen a la cuenta A de la siguiente manera:
+ Dave primero asume la función `examplerole` con sus propias credenciales. Esto devuelve credenciales temporales.
+ Con las credenciales temporales, Dave obtiene acceso a los objetos en el bucket de la cuenta A.

1. En el símbolo del sistema, ejecute el comando `assume-role` de la AWS CLI con el perfil `AccountCDave`. 

   Debe actualizar el valor de ARN en el comando proporcionando el `AccountA-ID` donde se define `examplerole`.

   ```
   aws sts assume-role --role-arn arn:aws:iam::AccountA-ID:role/examplerole --profile AccountCDave --role-session-name test
   ```

   Como respuesta, AWS Security Token Service (AWS STS) muestra credenciales de seguridad temporales (ID de clave de acceso, clave de acceso secreta y token de sesión).

1. Guarde las credenciales de seguridad temporales en el archivo de configuración de la AWS CLI en el perfil `TempCred`.

   ```
   [profile TempCred]
   aws_access_key_id = temp-access-key-ID
   aws_secret_access_key = temp-secret-access-key
   aws_session_token = session-token
   region = us-west-2
   ```

1. En el símbolo del sistema, ejecute el siguiente comando de la AWS CLI para acceder a los objetos con las credenciales temporales. Por ejemplo, el comando especifica la Application Programming Interface (API, Interfaz de programación de aplicaciones) de head-object para recuperar los metadatos de los objetos para el objeto `HappyFace.jpg`.

   ```
   aws s3api get-object --bucket amzn-s3-demo-bucket1 --key HappyFace.jpg SaveFileAs.jpg --profile TempCred
   ```

   Como la política de acceso asociada con la función `examplerole` permite las acciones, Amazon S3 procesa la solicitud. Puede probar cualquier otra acción en cualquier otro objeto del bucket.

   Si prueba cualquier otra acción, por ejemplo, `get-object-acl`, se le negará el permiso porque no se le permite esa acción al rol.

   ```
   aws s3api get-object-acl --bucket amzn-s3-demo-bucket1 --key HappyFace.jpg --profile TempCred
   ```

   Usamos el usuario Dave para asumir la función y obtener acceso al objeto con credenciales temporales. También podría ser una aplicación en la cuenta C que obtuviera acceso a los objetos en el bucket `amzn-s3-demo-bucket1`. La aplicación puede obtener las credenciales de seguridad temporales y la cuenta C puede delegar el permiso de la aplicación para asumir la función `examplerole`.

## Paso 4: Limpiar
<a name="access-policies-walkthrough-example4-step6"></a>

1. Después de que haya terminado de probar, puede realizar lo siguiente para limpiar:

   1. Inicie sesión en la [Consola de administración de AWS](https://console.aws.amazon.com/) con las credenciales de la cuenta A y haga lo siguiente:
     + En la consola de Amazon S3, elimine la política de bucket asociada a `amzn-s3-demo-bucket1`. En **Propiedades** del bucket, elimine la política en la sección **Permisos**. 
     + Si se creó el bucket para este ejercicio, en la consola de Amazon S3, elimine los objetos y luego elimine el bucket. 
     + En la [consola de IAM](https://console.aws.amazon.com/iam/), elimine el `examplerole` que ha creado en la cuenta A. Para obtener instrucciones paso a paso, consulte [Eliminación de un usuario de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_manage.html#id_users_deleting) en la *Guía del usuario de IAM*. 
     + En la [consola de IAM](https://console.aws.amazon.com/iam/), quite el usuario **AccountAadmin**.

1. Inicie sesión en la [consola de IAM](https://console.aws.amazon.com/iam/) con las credenciales de la cuenta B. Elimine el usuario **AccountBadmin**. 

1. Inicie sesión en la [consola de IAM](https://console.aws.amazon.com/iam/) con las credenciales de la cuenta C. Elimine **AccountCadmin** y el usuario Dave.

## Recursos relacionados
<a name="RelatedResources-managing-access-example4"></a>

Para obtener más información relacionada con este tutorial, consulte los siguientes recursos en la *Guía del usuario de IAM*:
+ [Creación de un rol para delegar permisos a un usuario de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html)
+ [Tutorial: Delegación del acceso entre Cuentas de AWS mediante roles de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial-cross-account-with-roles.html)
+ [Administración de políticas de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage.html)