

# Exemplo 1: Proprietário do bucket que concede permissões do bucket aos usuários
<a name="example-walkthroughs-managing-access-example1"></a>

**Importante**  
Conceder permissões a perfis do IAM é uma prática mais adequada do que conceder permissões a usuários individuais. Consulte mais informações sobre como conceder permissões a perfis do IAM em [Noções básicas de permissões entre contas e do uso de perfis do IAM](example-walkthroughs-managing-access-example4.md#access-policies-walkthrough-example4-overview).

**Topics**
+ [Preparar para a demonstração](#grant-permissions-to-user-in-your-account-step0)
+ [Etapa 1: criar recursos na Conta A e conceder permissões](#grant-permissions-to-user-in-your-account-step1)
+ [Etapa 2: Testar permissões](#grant-permissions-to-user-in-your-account-test)

Nessa demonstração, uma Conta da AWS possui um bucket e a conta inclui um usuário do IAM. Por padrão, o usuário não tem permissões. Para que o usuário realize execute qualquer tarefa, a conta pai deve conceder permissão a ele. O proprietário do bucket e a conta pai são os mesmos. Portanto, para conceder ao usuário permissões no bucket, a Conta da AWS pode usar uma política de bucket, uma política de usuário ou ambas. O proprietário da conta concederá algumas permissões usando uma política de bucket e outras permissões usando uma política de usuário.

Os passos a seguir resumem as etapas de demonstração:

![\[Diagrama que mostra uma conta da AWS concedendo permissões.\]](http://docs.aws.amazon.com/pt_br/AmazonS3/latest/userguide/images/access-policy-ex1.png)


1. O administrador da conta cria uma política do bucket concedendo um conjunto de permissões ao usuário.

1. O administrador da conta anexa uma política de usuário ao usuário concedendo permissões adicionais.

1. O usuário então testa as permissões concedidas por política do bucket e por política de usuário.

Neste exemplo, você precisará de uma Conta da AWS. Em vez de usar as credenciais do usuário raiz da conta, você criará um usuário administrador (consulte [Sobre o uso de um usuário administrador para criar recursos e conceder permissões](example-walkthroughs-managing-access.md#about-using-root-credentials)). Fazemos referência à Conta da AWS e ao usuário administrador conforme indicado na tabela a seguir.


| ID da conta | Conta referida como | Usuário administrador na conta | 
| --- | --- | --- | 
|  *1111-1111-1111*  |  Conta A  |  AccountAadmin  | 

**nota**  
O usuário administrador neste exemplo é **AccountaAdmin**, que se refere à conta A, e não à **AccountAdmin**.

Todas as tarefas de criar usuários e conceder permissões são feitas no Console de gerenciamento da AWS. Para verificar permissões, a demonstração usa as ferramentas de linha de comando, a AWS Command Line Interface (AWS CLI), e o AWS Tools for Windows PowerShell. Portanto, você não precisa escrever nenhum código.

## Preparar para a demonstração
<a name="grant-permissions-to-user-in-your-account-step0"></a>

1. Verifique se você tem uma Conta da AWS que tenha um usuário com privilégios de administrador.

   1. Cadastre-se para obter uma Conta da AWS, se necessário. Nós nos referimos a essa conta como conta A.

      1.  Acesse [https://aws.amazon.com/s3](https://aws.amazon.com/s3) e selecione **Criar uma conta da AWS**. 

      1. Siga as instruções da tela.

         AWSA notificará você por e-mail quando sua conta estiver ativa e disponível para uso.

   1. Na Conta A, crie um usuário administrador **AccountAadmin**. Usando as credenciais da conta A, faça login no [console do IAM](https://console.aws.amazon.com/iam/home?#home) e faça o seguinte: 

      1. Crie um usuário **AccountAadmin** e anote as credenciais de segurança do usuário. 

         Consulte instruções em [Criar um usuário do IAM na sua Conta da AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html) no *Guia do usuário do IAM*. 

      1. Conceda privilégios de administrador a **AccountAadmin** anexando uma política de usuário com pleno acesso. 

         Consulte instruções em [Gerenciar políticas do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage.html) no *Guia do usuário do IAM*. 

      1. Anote o **URL de login de usuário do IAM** de **AccountAadmin**. Você precisará usar esse URL para fazer login no Console de gerenciamento da AWS. Consulte mais informações sobre onde encontrar o URL de login em [Sign in to the Console de gerenciamento da AWS as an IAM user](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-started_how-users-sign-in.html) no *Guia do usuário do IAM*. Anote o URL de cada uma das contas.

1. Configure a AWS CLI ou o AWS Tools for Windows PowerShell. Salve as credenciais de usuário do administrador da seguinte maneira:
   + Se estiver usando a AWS CLI, crie um perfil, `AccountAadmin`, no arquivo de configuração.
   + Se estiver usando o AWS Tools for Windows PowerShell, armazene as credenciais da sessão como `AccountAadmin`.

   Para instruções, consulte [Configurar as ferramentas para as demonstrações](policy-eval-walkthrough-download-awscli.md). 

## Etapa 1: criar recursos na Conta A e conceder permissões
<a name="grant-permissions-to-user-in-your-account-step1"></a>

Com as credenciais do usuário `AccountAadmin` na Conta A e o URL especial de login do usuário do IAM, faça login no Console de gerenciamento da AWS e execute o seguinte:

1. Crie recursos de um bucket e um usuário do IAM

   1. No console do Amazon S3, crie um bucket. Anote a Região da AWS na qual você criou o bucket. Para instruções, consulte [Criar um bucket de uso geral](create-bucket-overview.md). 

   1. No [console do IAM](https://console.aws.amazon.com/iam/), faça o seguinte: 

      1. Crie um usuário chamado Dave.

         Para obter instruções passo a passo, consulte [Criação de usuários do IAM (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html#id_users_create_console) no *Guia do usuário do IAM*. 

      1. Anote as credenciais de `UserDave`.

      1. Anote o nome do recurso da Amazon (ARN) do usuário Dave. No [console do IAM](https://console.aws.amazon.com/iam/), selecione o usuário para que a guia **Resumo** fornece o ARN do usuário.

1. Conceder permissões 

   Como o proprietário do bucket e a conta pai a que o usuário pertence são iguais, a Conta da AWS pode conceder permissões de usuário usando uma política do bucket, uma política de usuário ou ambas. Neste exemplo, você faz ambos. Se o objeto também for de propriedade da mesma conta, o proprietário do bucket pode conceder permissões de objeto na política do bucket (ou em uma política do IAM).

   1. No console do Amazon S3, anexe a seguinte política do bucket a *awsexamplebucket1*. 

      A política tem duas instruções. 
      + A primeira instrução concede a Dave as permissões de operação dos buckets `s3:GetBucketLocation` e `s3:ListBucket`.
      + A segunda instrução concede a permissão `s3:GetObject`. Como a Conta A também possui o objeto, o administrador da conta pode conceder a permissão `s3:GetObject`. 

      Na instrução `Principal`, Dave é identificado por seu ARN de usuário. Para obter mais informações sobre elementos de política, consulte [Políticas e permissões no 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. Crie uma política inline para o usuário Dave usando as seguintes políticas. A política concede a Dave a permissão `s3:PutObject`. Você precisa atualizar a política, fornecendo o nome de seu bucket.

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

****  

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

------

      Consulte instruções em [Gerenciamento de políticas do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_inline-using.html) no *Guia do usuário do IAM*. Observe que você precisa fazer login no console usando as credenciais da Conta A.

## Etapa 2: Testar permissões
<a name="grant-permissions-to-user-in-your-account-test"></a>

Com as credenciais de Dave, verifique se as permissões funcionam. Você pode usar um dos dois procedimentos a seguir.

**Testar as permissões usando a AWS CLI**

1. Atualize o arquivo de configuração da AWS CLI adicionando o perfil `UserDaveAccountA` a seguir. Para obter mais informações, consulte [Configurar as ferramentas para as demonstrações](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. Verifique se Dave pode executar as operações conforme concedido na política de usuário. Carregue um objeto de exemplo usando o comando `put-object` da AWS CLI a seguir. 

   O parâmetro `--body` no comando identifica o arquivo de origem para fazer upload. Por exemplo, se o arquivo estiver na raiz da unidade C: de um computador Windows, você deve especificar `c:\HappyFace.jpg`. O parâmetro `--key` fornece o nome de chave para o objeto.

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

   Execute o comando da AWS CLI a seguir para obter o objeto. 

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

**Testar as permissões usando o AWS Tools for Windows PowerShell**

1. Armazene as credenciais de Dave como `AccountADave`. Depois, use essas credenciais para `PUT` e `GET` um objeto.

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

1. Carregue um objeto de exemplo usando o comando `Write-S3Object` do AWS Tools for Windows PowerShell com as credenciais armazenadas do usuário Dave. 

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

   Faça download do objeto anteriormente carregado.

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