Exemplo 1: Proprietário do bucket que concede permissões do bucket aos usuários - Amazon Simple Storage Service

Exemplo 1: Proprietário do bucket que concede permissões do bucket aos usuários

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 Histórico: Permissões entre contas e uso de funções do IAM.

Neste exercício, uma Conta da AWS é a proprietária de um bucket e há um usuário do IAM na conta. Por padrão, o usuário não tem nenhuma permissão. 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:

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

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

  3. 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). Fazemos referência à Conta da AWS e ao usuário administrador da seguinte forma:

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 AWS Management Console. 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 para verificar as permissões.

Etapa 0: Preparar-se para a demonstração

  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, se necessário. Nós nos referimos a essa conta como conta A.

      1. Acesse https://aws.amazon.com/s3 e clique em Sign Up (Cadastrar-se).

      2. Siga as instruções da tela.

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

    2. Na conta A, crie um usuário administrador AccountAadmin. Usando as credenciais da conta A, faça login no console do IAM e faça o seguinte:

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

        Para obter instruções, consulte Criar um usuário do IAM na sua Conta da AWS no Guia do usuário do IAM.

      2. Conceda privilégios de administrador da AccountAadmin anexando uma política de usuário com pleno acesso.

        Para instruções, consulte Como trabalhar com políticas no Guia do usuário do IAM.

      3. Anote o IAM User Sign-In URL (URL de login de usuário do IAM) para AccountAadmin. Você precisará usar esse URL para fazer login no AWS Management Console. Para obter mais informações sobre onde encontrá-lo, consulte Como usuários fazem login na sua conta no Guia do usuário do IAM. Anote o URL para cada uma das contas.

  2. Configure a AWS Command Line Interface (CLI) ou o AWS Tools for Windows PowerShell. Certifique-se de ter salvado as credenciais de usuário do administrador deste modo:

    • 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 para a sessão como AccountAadmin.

    Para obter instruções, consulte Configurar as ferramentas para as demonstrações de exemplo.

Etapa 1: Criar recursos (um bucket e um usuário do IAM) na conta A e conceder permissões

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 AWS Management Console e faça o seguinte:

  1. Crie recursos (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ê o criou. Para obter instruções, consulte Criação de um bucket.

    2. No console do IAM, faça o seguinte:

      1. Crie um usuário Dave.

        Para obter instruções passo a passo, consulte Criação de usuários do IAM (AWS Management Console) no Guia do usuário do IAM.

      2. Anote as credenciais de UserDave.

      3. Anote o Nome de recurso da Amazon (ARN) para o usuário Dave. No console do IAM, selecione o usuário para que a guia Resumo fornece o ARN do usuário.

  2. Conceda 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 de bucket e políticas de usuário.

      { "Version": "2012-10-17", "Statement": [ { "Sid": "statement1", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::AccountA-ID:user/Dave" }, "Action": [ "s3:GetBucketLocation", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::awsexamplebucket1" ] }, { "Sid": "statement2", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::AccountA-ID:user/Dave" }, "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::awsexamplebucket1/*" ] } ] }
    2. 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.

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

      Para instruções, consulte Como trabalhar com políticas em linha 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

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

Testar usando a AWS CLI
  1. Atualize o arquivo de configuração da AWS CLI adicionando o perfil de UserDaveAccountA a seguir. Para obter mais informações, consulte Configurar as ferramentas para as demonstrações de exemplo.

    [profile UserDaveAccountA] aws_access_key_id = access-key aws_secret_access_key = secret-access-key region = us-east-1
  2. 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 está na raiz da unidade C: de um computador Windows, você especifica 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 usando a AWS Tools for Windows PowerShell
  1. Armazene as credenciais de Dave como AccountADave. Depois, você usa essas credenciais para PUT e GET um objeto.

    set-awscredentials -AccessKey AccessKeyID -SecretKey SecretAccessKey -storeas AccountADave
  2. 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