

# Ejemplo 2: propietario del bucket que concede permisos de bucket entre cuentas
<a name="example-walkthroughs-managing-access-example2"></a>

**importante**  
Conceder permisos a roles de IAM es preferible a conceder permisos a usuarios individuales. Para obtener información sobre como hacer esto, consulte [Descripción de permisos entre cuentas y uso de roles de IAM](example-walkthroughs-managing-access-example4.md#access-policies-walkthrough-example4-overview).

**Topics**
+ [Prepararse para el tutorial](#cross-acct-access-step0)
+ [Paso 1: Realizar las tareas de la cuenta A](#access-policies-walkthrough-cross-account-permissions-acctA-tasks)
+ [Paso 2: Realizar las tareas de la cuenta B](#access-policies-walkthrough-cross-account-permissions-acctB-tasks)
+ [Paso 3: (Opcional) Intentar denegar explícitamente](#access-policies-walkthrough-example2-explicit-deny)
+ [Paso 4: Limpiar](#access-policies-walkthrough-example2-cleanup-step)

Una Cuenta de AWS, por ejemplo, la cuenta A, puede conceder a otra Cuenta de AWS, la cuenta B, permiso para acceder a sus recursos, como buckets y objetos. La cuenta B puede delegar estos permisos a los usuarios en la cuenta. En este escenario de ejemplo, un propietario de bucket concede permiso entre cuentas a otra cuenta para realizar operaciones de bucket específicas.

**nota**  
La cuenta A también puede usar una política de bucket para conceder permisos directamente a un usuario de la cuanta B. Sin embargo, el usuario necesitará permiso de la cuenta principal, la cuenta B, a la que pertenece el usuario, incluso aunque la cuenta B no tenga permisos de la cuenta A. El usuario podrá acceder al recurso siempre y cuando tenga permiso del propietario del recurso y la cuenta principal.

El siguiente es un resumen de los pasos del tutorial:

![\[Una Cuenta de AWS que concede a otra Cuenta de AWS permiso para acceder a sus recursos.\]](http://docs.aws.amazon.com/es_es/AmazonS3/latest/userguide/images/access-policy-ex2.png)


1. El usuario administrador de la cuenta A adjunta una política de bucket que concede permisos entre cuentas a la cuenta B para realizar operaciones de bucket específicas.

   Tenga en cuenta que el usuario administrador en la cuenta B heredará automáticamente los permisos.

1. El usuario administrador de la cuenta B le adjunta la política de usuario al usuario que delega los permisos que recibió de la cuenta A.

1. El usuario de la cuenta B luego accede a un objeto en el bucket que pertenece a la cuenta A para verificar los permisos.

Para este ejemplo, necesita dos cuentas. En la siguiente tabla se muestra cómo nos referimos a estas cuentas y a sus usuarios administradores. 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 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  | 

Todas las tareas de creación de usuarios y concesión de permisos se realizan en la Consola de administración de AWS. Para verificar los permisos, en la explicación se utilizan herramientas de línea de comandos, AWS Command Line Interface (CLI) y AWS Tools for Windows PowerShell, por lo que no necesita escribir código.

## Prepararse para el tutorial
<a name="cross-acct-access-step0"></a>

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

   1. Si lo necesita, regístrese para obtener una Cuenta de AWS. 

   1. Con las credenciales de la cuenta A, inicie sesión en la [consola de IAM](https://console.aws.amazon.com/iam/home?#home) para crear el usuario administrador:

      1. Cree al usuario **AccountAadmin** y tenga en cuenta las credenciales de seguridad. Para obtener instrucciones, consulte [Creación de un usuario de IAM en la Cuenta de AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html) en la *Guía del usuario de IAM*. 

      1. Conceda privilegios de administrador a **AccountAadmin** adjuntando una política de usuario que le conceda acceso total. Para obtener instrucciones, consulte [Uso de políticas](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage.html) en la *guía del usuario de IAM*. 

   1. Mientras se encuentra en la consola de IAM, tenga en cuenta la **URL de inicio de sesión de usuario de IAM** en el **Panel**. Todos los usuarios de la cuenta deben utilizar esta dirección URL para iniciar sesión en la Consola de administración de AWS.

      Para obtener más información, consulte [Cómo los usuarios inician sesión en la cuenta](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 con las credenciales de la cuenta B y cree el usuario administrador **AccountBadmin**.

1. Configure AWS Command Line Interface (AWS 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 dos 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). 

1. Guarde las credenciales de usuario administrador, también denominadas perfiles. Puede utilizar el nombre de perfil en lugar de especificar las credenciales para cada comando que escribe. Para obtener más información, consulte [Configuración de las herramientas para los tutoriales](policy-eval-walkthrough-download-awscli.md). 

   1. Agregue perfiles en el archivo de credenciales de la AWS CLI para cada uno de los usuarios administradores, `AccountAadmin` y `AccountBadmin` en las dos cuentas. 

      ```
      [AccountAadmin]
      aws_access_key_id = access-key-ID
      aws_secret_access_key = secret-access-key
      region = us-east-1
      
      [AccountBadmin]
      aws_access_key_id = access-key-ID
      aws_secret_access_key = secret-access-key
      region = us-east-1
      ```

   1. Si usa AWS Tools for Windows PowerShell, ejecute el siguiente comando.

      ```
      set-awscredentials –AccessKey AcctA-access-key-ID –SecretKey AcctA-secret-access-key –storeas AccountAadmin
      set-awscredentials –AccessKey AcctB-access-key-ID –SecretKey AcctB-secret-access-key –storeas AccountBadmin
      ```

## Paso 1: Realizar las tareas de la cuenta A
<a name="access-policies-walkthrough-cross-account-permissions-acctA-tasks"></a>

### 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"></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
<a name="access-policies-walkthrough-example2a-create-bucket"></a>

1. En la consola de Amazon S3, cree un bucket. En este ejercicio se asume que el bucket se crea en la Región de AWS Este de EE. UU. (Norte de Virginia) y se llama `amzn-s3-demo-bucket`.

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

1. Cargue un objeto de ejemplo en el bucket.

   Para obtener instrucciones, consulte [Paso 2: Cargar un objeto en el bucket](GetStartedWithS3.md#uploading-an-object-bucket). 

### Paso 1.3: Asociar una política de bucket para conceder permisos entre cuentas a la cuenta B
<a name="access-policies-walkthrough-example2a"></a>

La política de bucket concede los permisos de `s3:GetLifecycleConfiguration` y `s3:ListBucket` a la cuenta B. Se asume que aún sigue registrado en la consola con las credenciales de usuario **AccountAadmin**.

1. Adjunte la siguiente política de bucket a `amzn-s3-demo-bucket`. La política le concede a la cuenta B permiso para las acciones `s3:GetLifecycleConfiguration` y `s3:ListBucket`.

   Para obtener instrucciones, consulte [Agregar una política de bucket mediante la consola de Amazon S3](add-bucket-policy.md). 

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

****  

   ```
   {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
         {
            "Sid": "Example permissions",
            "Effect": "Allow",
            "Principal": {
               "AWS": "arn:aws:iam::111122223333:root"
            },
            "Action": [
               "s3:GetLifecycleConfiguration",
               "s3:ListBucket"
            ],
            "Resource": [
               "arn:aws:s3:::amzn-s3-demo-bucket"
            ]
         }
      ]
   }
   ```

------

1. Asegúrese de que la cuenta B (y por lo tanto el usuario administrador) pueda realizar las operaciones.
   + Verificación mediante la AWS CLI

     ```
     aws s3 ls s3://amzn-s3-demo-bucket --profile AccountBadmin
     aws s3api get-bucket-lifecycle-configuration --bucket amzn-s3-demo-bucket --profile AccountBadmin
     ```
   + Verificación mediante la AWS Tools for Windows PowerShell

     ```
     get-s3object -BucketName amzn-s3-demo-bucket -StoredCredentials AccountBadmin 
     get-s3bucketlifecycleconfiguration -BucketName amzn-s3-demo-bucket -StoredCredentials AccountBadmin
     ```

## Paso 2: Realizar las tareas de la cuenta B
<a name="access-policies-walkthrough-cross-account-permissions-acctB-tasks"></a>

Ahora, el administrador de la cuenta B crea un usuario, Dave, y delega los permisos que recibió de la cuenta A. 

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

Con el URL de inicio de sesión de usuario de IAM para la cuenta B, primero inicie sesión en la Consola de administración de AWS con el usuario **AccountBadmin**. 

### Paso 2.2: Crear el usuario Dave en la cuenta B
<a name="access-policies-walkthrough-example2b-create-user"></a>

En la [Consola de IAM](https://console.aws.amazon.com/iam/), cree un usuario, **Dave**. 

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

### Paso 2.3: Delegar permisos al usuario Dave
<a name="access-policies-walkthrough-example2-delegate-perm-userdave"></a>

Cree una política en línea para el usuario Dave utilizando la siguiente política. Tendrá que proporcionar el nombre del bucket para actualizar la política.

Se asume que se ha registrado en la consola con las credenciales de usuario **AccountBadmin**.

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
      {
         "Sid": "Example",
         "Effect": "Allow",
         "Action": [
            "s3:ListBucket"
         ],
         "Resource": [
            "arn:aws:s3:::amzn-s3-demo-bucket"
         ]
      }
   ]
}
```

------

Para obtener instrucciones, consulte [Administración de políticas de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_inline-using.html) en la *Guía del usuario de IAM*.

### Paso 2.4: Probar los permisos
<a name="access-policies-walkthrough-example2b-user-dave-access"></a>

Ahora, Dave en la cuenta B puede indicar los contenidos de `amzn-s3-demo-bucket` que pertenece a la cuenta A. Puede usar cualquiera de los siguientes procedimientos para verificar los permisos. 

**Prueba de los permisos mediante la AWS CLI**

1. Agregue el perfil `UserDave` al archivo de configuración de la AWS CLI. Para obtener más información acerca del archivo de configuración, consulte [Configuración de las herramientas para los tutoriales](policy-eval-walkthrough-download-awscli.md).

   ```
   [profile UserDave]
   aws_access_key_id = access-key
   aws_secret_access_key = secret-access-key
   region = us-east-1
   ```

1. En el símbolo del sistema, ingrese el siguiente comando de la AWS CLI para asegurarse de que Dave ya pueda obtener una lista de objetos de `amzn-s3-demo-bucket` que pertenece a la cuenta A. Tenga en cuenta que el comando especifica el perfil `UserDave`.

   ```
   aws s3 ls s3://amzn-s3-demo-bucket --profile UserDave
   ```

   Dave no tiene ningún otro permiso. Por lo tanto, si intenta cualquier otra operación, como la siguiente configuración `get-bucket-lifecycle`, Amazon S3 deniega el permiso. 

   ```
   aws s3api get-bucket-lifecycle-configuration --bucket amzn-s3-demo-bucket --profile UserDave
   ```

**Prueba de los permisos mediante AWS Tools for Windows PowerShell**

1. Almacene las credenciales de Dave como `AccountBDave`.

   ```
   set-awscredentials -AccessKey AccessKeyID -SecretKey SecretAccessKey -storeas AccountBDave
   ```

1. Pruebe el comando List Bucket.

   ```
   get-s3object -BucketName amzn-s3-demo-bucket -StoredCredentials AccountBDave
   ```

   Dave no tiene ningún otro permiso. Por lo tanto, si intenta cualquier otra operación, como la siguiente `get-s3bucketlifecycleconfiguration`, Amazon S3 deniega el permiso. 

   ```
   get-s3bucketlifecycleconfiguration -BucketName amzn-s3-demo-bucket -StoredCredentials AccountBDave
   ```

## Paso 3: (Opcional) Intentar denegar explícitamente
<a name="access-policies-walkthrough-example2-explicit-deny"></a>

Puede tener permisos concedidos mediante el uso de una lista de control de acceso (ACL), una política de bucket o una política de usuario. Pero si se establece una denegación explícita a través de una política de bucket o una política de usuario, la denegación explícita tiene preferencia sobre cualquier otro permiso. Para las pruebas, actualice la política de bucket y niegue explícitamente los permisos de `s3:ListBucket` a la cuenta B. La política también concede el permiso de `s3:ListBucket`. Sin embargo, la denegación explícita prevalece, y la cuenta B o los usuarios de la cuenta B no podrán mostrar los objetos en `amzn-s3-demo-bucket`.

1. Con las credenciales de usuario `AccountAadmin` en la cuenta A, sustituya la política de bucket por lo siguiente. 

1. Ahora, si intenta obtener una lista de bucket con las credenciales de `AccountBadmin`, se le denegará el acceso.
   + Con la AWS CLI, ejecute el siguiente comando:

     ```
     aws s3 ls s3://amzn-s3-demo-bucket --profile AccountBadmin
     ```
   + Con la AWS Tools for Windows PowerShell, ejecute el siguiente comando:

     ```
     get-s3object -BucketName amzn-s3-demo-bucket -StoredCredentials AccountBDave
     ```

## Paso 4: Limpiar
<a name="access-policies-walkthrough-example2-cleanup-step"></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 ([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-bucket`. 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/), 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`. 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*.