

# Ejemplo 1: propietario del bucket que concede permisos de bucket a sus usuarios
<a name="example-walkthroughs-managing-access-example1"></a>

**importante**  
Conceder permisos a roles de IAM es preferible a conceder permisos a usuarios individuales. Para obtener más información acerca de cómo conceder permisos a roles de IAM, 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](#grant-permissions-to-user-in-your-account-step0)
+ [Paso 1: Creación de recursos en la cuenta A y concesión de permisos](#grant-permissions-to-user-in-your-account-step1)
+ [Paso 2: Probar los permisos](#grant-permissions-to-user-in-your-account-test)

En este tutorial, una Cuenta de AWS es propietaria de un bucket y la cuenta incluye un usuario de IAM. De forma predeterminada, el usuario no tiene permisos. La cuenta principal debe conceder permisos al usuario para realizar cualquier tarea. El propietario del bucket y la cuenta principal son el mismo. Por tanto, para conceder permisos al usuario en el bucket, la Cuenta de AWS puede utilizar una política de bucket, una política de usuario o ambas. El propietario de la cuenta concederá algunos permisos utilizando una política de bucket y otros permisos mediante una política de usuario.

En los siguientes pasos se resume el tutorial:

![\[Diagrama que muestra una cuenta de AWS que concede permisos.\]](http://docs.aws.amazon.com/es_es/AmazonS3/latest/userguide/images/access-policy-ex1.png)


1. El administrador de la cuenta crea una política de bucket en la que se concede un conjunto de permisos al usuario.

1. El administrador de la cuenta adjunta una política de usuario al usuario, en la que se conceden permisos adicionales.

1. A continuación, el usuario prueba los permisos concedidos tanto mediante la política de bucket como mediante la política de usuario.

Para este ejemplo, necesitará una Cuenta de AWS. En lugar de usar las credenciales de usuario raíz de la cuenta, creará un usuario administrador (consulte [Acerca del uso de un usuario administrador para crear recursos y conceder permisos](example-walkthroughs-managing-access.md#about-using-root-credentials)). Nos referimos a la Cuenta de AWS y al usuario administrador como se muestra en la siguiente tabla.


| ID de cuenta | Cuenta denominada | Usuario administrador de la cuenta | 
| --- | --- | --- | 
|  *1111-1111-1111*  |  Cuenta A  |  AccountAadmin  | 

**nota**  
El usuario administrador de este ejemplo es **AccountAdmin**, que hace referencia a la cuenta A y no **AccountAdmin**.

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 la línea de comandos, AWS Command Line Interface (AWS CLI) y AWS Tools for Windows PowerShell, por lo que no necesita escribir código.

## Prepararse para el tutorial
<a name="grant-permissions-to-user-in-your-account-step0"></a>

1. Asegúrese de tener una Cuenta de AWS que cuente con un usuario con privilegios de administrador.

   1. Si lo necesita, regístrese para obtener una Cuenta de AWS. Nos referiremos a esta cuenta como Cuenta A.

      1.  Vaya a [https://aws.amazon.com/s3](https://aws.amazon.com/s3) y elija **Crear una cuenta de AWS**. 

      1. Siga las instrucciones en pantalla.

         AWSCuando la cuenta esté activada y lista para usar, lo notificará por email.

   1. En la Cuenta A, cree un usuario administrador **AccountAadmin**. Con las credenciales de la Cuenta A, inicie sesión en la [consola de IAM](https://console.aws.amazon.com/iam/home?#home) y realice los siguientes pasos: 

      1. Cree al usuario **AccountAadmin** y tenga en cuenta las credenciales de seguridad del mismo. 

         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 [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*. 

      1. Tenga en cuenta la **URL de inicio de sesión de usuario de IAM** para **AccountAadmin**. Tendrá que usar esta dirección URL al iniciar sesión en la Consola de administración de AWS. Para obtener más información sobre dónde encontrar la URL de inicio de sesión, consulte [Iniciar 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*. Tenga en cuenta la URL de cada una de las cuentas.

1. Configure AWS CLI o AWS Tools for Windows PowerShell. Asegúrese de guardar las credenciales del usuario administrador de la siguiente manera:
   + Si utiliza la AWS CLI, cree un perfil, `AccountAadmin`, 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`.

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

## Paso 1: Creación de recursos en la cuenta A y concesión de permisos
<a name="grant-permissions-to-user-in-your-account-step1"></a>

Con las credenciales del usuario `AccountAadmin` en la Cuenta A y la URL especial de inicio de sesión del usuario de IAM, inicie sesión en la Consola de administración de AWS y realice los siguientes pasos:

1. Creación de recursos de un bucket y un usuario de IAM

   1. En la consola de Amazon S3, cree un bucket. Tenga en cuenta la Región de AWS en la que creó el bucket. Para obtener instrucciones, consulte [Creación de un bucket de uso general](create-bucket-overview.md). 

   1. En la [consola de IAM](https://console.aws.amazon.com/iam/), haga lo siguiente: 

      1. Cree un usuario llamado Dave.

         Para obtener instrucciones paso a paso, 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*. 

      1. Tenga en cuenta las credenciales de `UserDave`.

      1. Tenga en cuenta el nombre de recurso de Amazon (ARN) para el usuario Dave. En la [consola de IAM](https://console.aws.amazon.com/iam/), seleccione el usuario y en la pestaña **Resumen** podrá ver el ARN del usuario.

1. Concesión de permisos. 

   Dado que la cuenta propietaria del bucket y la cuenta principal a la que pertenece el usuario coinciden, la Cuenta de AWS puede conceder permisos al usuario mediante una política de bucket, una política de usuario o ambas. En este ejemplo, usará ambas. Si el objeto también es propiedad de la misma cuenta, el propietario del bucket puede conceder permisos de objeto en la política del bucket (o una política de IAM).

   1. En la consola de Amazon S3, asocie la siguiente política de bucket a *awsexamplebucket1*. 

      La política tiene dos instrucciones: 
      + En la primera instrucción se conceden a Dave los permisos de operación en el bucket `s3:GetBucketLocation` y `s3:ListBucket`.
      + En la segunda instrucción se concede el permiso `s3:GetObject`. Dado que la Cuenta A también es propietaria del objeto, el administrador de la cuenta puede conceder el permiso `s3:GetObject`. 

      En la instrucción `Principal`, el ARN del usuario es lo que identifica a Dave. Para obtener más información sobre los elementos de las políticas, consulte [Políticas y permisos en Amazon S3](access-policy-language-overview.md).

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

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Sid": "statement1",
                  "Effect": "Allow",
                  "Principal": {
                      "AWS": "arn:aws:iam::111122223333:user/Dave"
                  },
                  "Action": [
                      "s3:GetBucketLocation",
                      "s3:ListBucket"
                  ],
                  "Resource": [
                      "arn:aws:s3:::awsexamplebucket1"
                  ]
              },
              {
                  "Sid": "statement2",
                  "Effect": "Allow",
                  "Principal": {
                      "AWS": "arn:aws:iam::111122223333:user/Dave"
                  },
                  "Action": [
                      "s3:GetObject"
                  ],
                  "Resource": [
                      "arn:aws:s3:::awsexamplebucket1/*"
                  ]
              }
          ]
      }
      ```

------

   1. Cree una política en línea para el usuario Dave utilizando la siguiente política. La política concede a Dave el permiso `s3:PutObject`. Tendrá que actualizar la política proporcionando el nombre del bucket.

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

****  

      ```
      {
         "Version":"2012-10-17",		 	 	 
         "Statement": [
            {
               "Sid": "PermissionForObjectOperations",
               "Effect": "Allow",
               "Action": [
                  "s3:PutObject"
               ],
               "Resource": [
                  "arn:aws:s3:::awsexamplebucket1/*"
               ]
            }
         ]
      }
      ```

------

      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*. Tenga en cuenta que tendrá que iniciar sesión en la consola con las credenciales de la Cuenta A.

## Paso 2: Probar los permisos
<a name="grant-permissions-to-user-in-your-account-test"></a>

Compruebe que los permisos funcionan con las credenciales de Dave. Puede utilizar uno de los dos procedimientos siguientes.

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

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

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

1. Compruebe que Dave pueda realizar las operaciones según los permisos concedidos en la política de usuario. Cargue un objeto de muestra con el comando de la AWS CLI `put-object`. 

   El parámetro `--body` en el comando identifica el archivo de origen para cargar. Por ejemplo, si el archivo está en el directorio raíz del disco C: en un equipo Windows, debe especificar `c:\HappyFace.jpg`. El parámetro `--key` brinda el nombre de clave para el objeto.

   ```
   aws s3api put-object --bucket awsexamplebucket1 --key HappyFace.jpg --body HappyFace.jpg --profile UserDaveAccountA
   ```

   Ejecute el siguiente comando de la AWS CLI para obtener el objeto. 

   ```
   aws s3api get-object --bucket awsexamplebucket1 --key HappyFace.jpg OutputFile.jpg --profile UserDaveAccountA
   ```

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

1. Almacene las credenciales de Dave como `AccountADave`. A continuación, use estas credenciales para `PUT` y `GET` un objeto.

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

1. Cargue un objeto de muestra con el comando `Write-S3Object` de AWS Tools for Windows PowerShell con las credenciales almacenadas de Dave. 

   ```
   Write-S3Object -bucketname awsexamplebucket1 -key HappyFace.jpg -file HappyFace.jpg -StoredCredentials AccountADave
   ```

   Descargue el objeto que cargó en el paso anterior.

   ```
   Read-S3Object -bucketname awsexamplebucket1 -key HappyFace.jpg -file Output.jpg -StoredCredentials AccountADave
   ```