

# Exemplo 2: Proprietário do bucket concedendo permissões de bucket entre contas
<a name="example-walkthroughs-managing-access-example2"></a>

**Importante**  
Conceder permissões a perfis do IAM é uma prática melhor do que conceder permissões a usuários individuais. Para aprender a fazer isso, consulte [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](#cross-acct-access-step0)
+ [Etapa 1: Fazer as tarefas da Conta A](#access-policies-walkthrough-cross-account-permissions-acctA-tasks)
+ [Etapa 2: Fazer as tarefas da Conta B](#access-policies-walkthrough-cross-account-permissions-acctB-tasks)
+ [Etapa 3: (opcional) tentar negação explícita](#access-policies-walkthrough-example2-explicit-deny)
+ [Etapa 4: limpar](#access-policies-walkthrough-example2-cleanup-step)

Uma Conta da AWS, por exemplo, a conta A, pode conceder a outra Conta da AWS, a conta B, permissão para acessar os respectivos recursos, como buckets e objetos. A Conta B pode então delegar essas permissões para usuários em sua conta. Neste cenário de exemplo, o proprietário do bucket concede a permissão entre contas a outra conta para executar operações específicas no bucket.

**nota**  
A Conta A também pode conceder diretamente a um usuário na Conta B permissões usando uma política de bucket. No entanto, o usuário ainda precisará ter permissão da conta principal, a Conta B, à qual o usuário pertence, mesmo que a Conta B não tenha permissões da Conta A. Desde que o usuário tenha permissão do proprietário do recurso e da conta principal, o usuário poderá acessar o recurso.

A seguir é apresentado um resumo das etapas de demonstração:

![\[Uma Conta da AWS que concede permissão a outra Conta da AWS para acessar seus recursos.\]](http://docs.aws.amazon.com/pt_br/AmazonS3/latest/userguide/images/access-policy-ex2.png)


1. O usuário administrador da Conta A anexa uma política de bucket concedendo permissões entre contas à Conta B para executar operações específicas no bucket.

   Observe que o usuário administrador da Conta B herdará automaticamente as permissões.

1. O usuário administrador da Conta B anexa uma política de usuário ao usuário delegando as permissões que recebeu da Conta A.

1. Em seguida, o usuário na Conta B verifica as permissões acessando um objeto no bucket de propriedade da Conta A.

Para este exemplo, você precisará de duas contas. A tabela a seguir mostra como nos referimos a essas contas e aos usuários administradores nessas contas. Conforme as diretrizes do IAM (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)), não usamos as credenciais do usuário-raiz nessa demonstração. Em vez disso, você cria um usuário administrador em cada conta e usa essas credenciais para criar recursos e conceder permissões a eles. 


| Conta da AWSID da  | Conta referida como | Usuário administrador na conta  | 
| --- | --- | --- | 
|  *1111-1111-1111*  |  Conta A  |  AccountAadmin  | 
|  *2222-2222-2222*  |  Conta B  |  AccountBadmin  | 

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 (CLI), e o AWS Tools for Windows PowerShell. Portanto, você não precisa escrever nenhum código.

## Preparar para a demonstração
<a name="cross-acct-access-step0"></a>

1. Você precisa ter duas Contas da AWS, e cada conta deverá ter um usuário administrador, conforme mostrado na tabela na seção anterior.

   1. Cadastre-se para obter uma Conta da AWS, se necessário. 

   1. Usando as credenciais da Conta A, faça login no [console do IAM](https://console.aws.amazon.com/iam/home?#home) para criar o usuário administrador:

      1. Crie um usuário **AccountAadmin** e anote as credenciais de segurança. Para obter instruções, consulte [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. Para instruções, consulte [Como trabalhar com políticas](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage.html) no *Guia do usuário do IAM*. 

   1. Enquanto estiver no console do IAM, anote o **URL de login de usuário do IAM** indicado no **Painel**. Todos os usuários nessa conta devem usar essa URL para fazer login no Console de gerenciamento da AWS.

      Para obter mais informações, consulte [Como os usuários fazem login em sua conta](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-started_how-users-sign-in.html) no *Guia do usuário do IAM*. 

   1. Repita a etapa anterior usando as credenciais da Conta B e crie um usuário administrador **AccountBadmin**.

1. Configure a AWS Command Line Interface (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 dois perfis, `AccountAadmin` e `AccountBadmin`, no arquivo de configuração.
   + Se estiver usando o AWS Tools for Windows PowerShell, armazene as credenciais da sessão como `AccountAadmin` e `AccountBadmin`.

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

1. Salve as credenciais do usuário administrador, também conhecidas como perfis. Você pode usar o nome do perfil em vez de especificar as credenciais para cada comando digitado. Para obter mais informações, consulte [Configurar as ferramentas para as demonstrações](policy-eval-walkthrough-download-awscli.md). 

   1. Adicione perfis no arquivo de credenciais da AWS CLI para cada um dos usuários administradores, `AccountAadmin` e `AccountBadmin`, nas duas contas. 

      ```
      [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. Se estiver usando o AWS Tools for Windows PowerShell, execute o comando a seguir.

      ```
      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
      ```

## Etapa 1: Fazer as tarefas da Conta A
<a name="access-policies-walkthrough-cross-account-permissions-acctA-tasks"></a>

### Etapa 1.1: Fazer login no Console de gerenciamento da AWS
<a name="access-policies-walkthrough-cross-account-permissions-acctA-tasks-sign-in"></a>

Usando o URL de login do usuário do IAM da Conta A, primeiro faça login no Console de gerenciamento da AWS como o usuário **AccountAadmin**. Esse usuário criará um bucket e anexará uma política a ele. 

### Etapa 1.2: Criar um bucket
<a name="access-policies-walkthrough-example2a-create-bucket"></a>

1. No console do Amazon S3, crie um bucket. Esse exercício supõe que o bucket é criado na Região da AWS Leste dos EUA (Norte da Virgínia) e que o nome dele é `amzn-s3-demo-bucket`.

   Para instruções, consulte [Criar um bucket de uso geral](create-bucket-overview.md). 

1. Faça upload de um objeto de exemplo no bucket.

   Para obter instruções, vá para [Etapa 2: fazer upload de um objeto para o seu bucket](GetStartedWithS3.md#uploading-an-object-bucket). 

### Etapa 1.3: anexar uma política de bucket para conceder permissões entre contas para a conta B
<a name="access-policies-walkthrough-example2a"></a>

A política de bucket concede as permissões `s3:GetLifecycleConfiguration` e `s3:ListBucket` à Conta B, presumindo que você ainda está usando as credenciais do usuário **AccountAadmin** no console.

1. Anexe a política de bucket a seguir ao `amzn-s3-demo-bucket`. A política concede à Conta B permissão para as ações `s3:GetLifecycleConfiguration` e `s3:ListBucket`.

   Para instruções, consulte [Adicionar uma política de bucket usando o console do 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. Verifique se a Conta B (ou seja, do usuário administrador) pode executar as operações.
   + Fazer a verificação usando a 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
     ```
   + Fazer a verificação usando o AWS Tools for Windows PowerShell

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

## Etapa 2: Fazer as tarefas da Conta B
<a name="access-policies-walkthrough-cross-account-permissions-acctB-tasks"></a>

Agora o administrador da Conta B cria um usuário, Dave, e delega as permissões recebidas da Conta A. 

### Etapa 2.1: Fazer login no Console de gerenciamento da AWS
<a name="access-policies-walkthrough-cross-account-permissions-acctB-tasks-sign-in"></a>

Usando o URL de login do usuário do IAM da Conta B, primeiro faça login no Console de gerenciamento da AWS como o usuário **AccountBadmin**. 

### Etapa 2.2: criar o usuário Dave na conta B
<a name="access-policies-walkthrough-example2b-create-user"></a>

No [console do IAM](https://console.aws.amazon.com/iam/), crie um usuário chamado **Dave**. 

Para obter instruções, 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*. 

### Etapa 2.3: delegar permissões para o usuário Dave
<a name="access-policies-walkthrough-example2-delegate-perm-userdave"></a>

Crie uma política inline para o usuário Dave usando as seguintes políticas. Você precisará atualizar a política fornecendo o nome do bucket.

Presume-se que você fez login no console usando as credenciais do usuário **AccountBadmin**.

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

****  

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

------

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

### Etapa 2.4: Testar permissões
<a name="access-policies-walkthrough-example2b-user-dave-access"></a>

Agora Dave, na conta B, pode listar o conteúdo do `amzn-s3-demo-bucket` de propriedade da Conta A. Você pode verificar as permissões usando um dos seguintes procedimentos. 

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

1. Adicione o perfil `UserDave` ao arquivo de configuração da AWS CLI. Para obter mais informações sobre o arquivo de configuração, consult [Configurar as ferramentas para as demonstrações](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. No prompt de comando, insira o comando da AWS CLI a seguir para verificar se agora Dave consegue obter uma lista de objetos do `UserDave` pertencente à Conta A. Observe que o comando especifica o perfil `amzn-s3-demo-bucket`.

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

   Dave não tem nenhuma outra permissão. Portanto, se ele tentar realizar qualquer outra operação (por exemplo, a configuração de `get-bucket-lifecycle` a seguir), o Amazon S3 retornará uma negação da permissão. 

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

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

1. Armazene as credenciais de Dave como `AccountBDave`.

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

1. Teste o comando List Bucket.

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

   Dave não tem nenhuma outra permissão. Portanto, se ele tentar realizar qualquer outra operação (por exemplo, a `get-s3bucketlifecycleconfiguration` a seguir), o Amazon S3 retornará uma negação da permissão. 

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

## Etapa 3: (opcional) tentar negação explícita
<a name="access-policies-walkthrough-example2-explicit-deny"></a>

Você pode ter permissões concedidas usando uma lista de controle de acesso (ACL), uma política de bucket ou uma política de usuário. Entretanto, se houver uma negação explícita definida por uma política de bucket ou por uma política de usuário, ela terá precedência sobre qualquer outra permissão. Para testar, atualize a política de bucket e negue explicitamente a permissão `s3:ListBucket` para a Conta B. A política também concede a permissão `s3:ListBucket`. No entanto, a negação explícita tem precedência, e a Conta B ou os usuários da Conta B não poderão listar objetos no `amzn-s3-demo-bucket`.

1. Usando as credenciais do usuário `AccountAadmin` na Conta A, substitua a política de bucket pela seguinte: 

1. Agora, se você tentar obter uma lista de bucket usando as credenciais de `AccountBadmin`, o acesso será negado.
   + Usando a AWS CLI, execute o seguinte comando:

     ```
     aws s3 ls s3://amzn-s3-demo-bucket --profile AccountBadmin
     ```
   + Usando o AWS Tools for Windows PowerShell, execute o seguinte comando:

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

## Etapa 4: limpar
<a name="access-policies-walkthrough-example2-cleanup-step"></a>

1. Depois de terminar os testes, você pode fazer o seguinte para concluir a limpeza:

   1. Faça login no Console de gerenciamento da AWS ([Console de gerenciamento da AWS](https://console.aws.amazon.com/)) usando as credenciais da Conta A e faça o seguinte:
     + No console do Amazon S3, remova a política de bucket anexada a `amzn-s3-demo-bucket`. Nas **Propriedades** do bucket, exclua a política na seção **Permissions (Permissões)**. 
     + Se o bucket foi criado para este exercício, no console do Amazon S3, exclua os objetos e, em seguida, exclua o bucket. 
     + No [console do IAM](https://console.aws.amazon.com/iam/), remova o usuário `AccountAadmin`.

1. Faça login no [console do IAM](https://console.aws.amazon.com/iam/) usando as credenciais da Conta B. Exclua o usuário `AccountBadmin`. Consulte instruções detalhadas em [Exclusão de um usuário do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_manage.html#id_users_deleting) no *Guia do usuário do IAM*.