Exemplo 2: Proprietário do bucket concedendo permissões de bucket entre contas - Amazon Simple Storage Service

Exemplo 2: Proprietário do bucket concedendo permissões de bucket entre contas

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.

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. Mas o usuário ainda precisará ter permissão da conta pai, 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 pai, o usuário poderá acessar o recurso.

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

  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.

  2. 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.

  3. 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), não usamos as credenciais do usuário raiz nesta 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.

ID da Conta da AWS 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 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.

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

  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.

    2. Usando as credenciais da Conta A, faça login no console do IAM 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 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. Enquanto estiver no console do IAM, anote o IAM User Sign-In URL (URL de login de usuário do IAM) no Dashboard (Painel). Todos os usuários nessa conta devem usar essa URL para fazer login no AWS Management Console.

      Para obter mais informações, consulte Como os usuários fazem login em sua conta no Guia do usuário do IAM.

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

  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 dois perfis, AccountAadmin e AccountBadmin, no arquivo de configuração.

    • Se estiver usando o AWS Tools for Windows PowerShell, armazene as credenciais para a sessão como AccountAadmin e AccountBAdmin.

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

  3. 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 de exemplo.

    1. Adicione perfis no arquivo de credenciais da AWS CLI para cada um dos usuários administradores 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
    2. Se estiver usando o AWS Tools for Windows PowerShell

      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

Etapa 1.1: Fazer login no AWS Management Console

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

Etapa 1.2: Criar um bucket

  1. No console do Amazon S3, crie um bucket. Este exercício supõe que o bucket é criado na região Leste dos EUA (N. da Virgínia) e que o nome é DOC-EXAMPLE-BUCKET.

    Para obter instruções, consulte Criação de um bucket.

  2. 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.

Etapa 1.3: anexar uma política de bucket para conceder permissões entre contas para a conta B

A política de bucket concede as permissões s3:GetLifecycleConfiguration e s3:ListBucket para a Conta B. Supõe-se que você ainda esteja conectado no console usando as credenciais do usuário AccountAadmin.

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

    Para obter instruções, consulte Adicionar uma política de bucket usando o console do Amazon S3.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "Example permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::AccountB-ID:root" }, "Action": [ "s3:GetLifecycleConfiguration", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET" ] } ] }
  2. Verifique se a Conta B (e, portanto, do usuário administrador) pode executar as operações.

    • Usando a AWS CLI

      aws s3 ls s3://DOC-EXAMPLE-BUCKET --profile AccountBadmin aws s3api get-bucket-lifecycle-configuration --bucket DOC-EXAMPLE-BUCKET --profile AccountBadmin
    • Usando a AWS Tools for Windows PowerShell

      get-s3object -BucketName DOC-EXAMPLE-BUCKET -StoredCredentials AccountBadmin get-s3bucketlifecycleconfiguration -BucketName DOC-EXAMPLE-BUCKET -StoredCredentials AccountBadmin

Etapa 2: Fazer as tarefas da Conta B

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 AWS Management Console

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

Etapa 2.2: criar o usuário Dave na conta B

No console do IAM, crie um usuário chamado Dave.

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

Etapa 2.3: delegar permissões para o usuário Dave

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.

Supõe-se que você está conectado no console usando as credenciais do usuário AccountBadmin.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Example", "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET" ] } ] }

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

Etapa 2.4: Testar permissões

Agora Dave, na conta B, pode listar o conteúdo do DOC-EXAMPLE-BUCKET de propriedade da Conta A. Você pode verificar as permissões usando um dos seguintes procedimentos.

Testar 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, consulte Configurar as ferramentas para as demonstrações de exemplo

    [profile UserDave] aws_access_key_id = access-key aws_secret_access_key = secret-access-key region = us-east-1
  2. No prompt de comando, digite o comando da AWS CLI a seguir para verificar se agora Dave pode obter uma lista de objetos do DOC-EXAMPLE-BUCKET pertencente à conta A. Observe que o comando especifica o perfil UserDave.

    aws s3 ls s3://DOC-EXAMPLE-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 seguinte de ciclo de vida de get bucket), o Amazon S3 retornará a recusa da permissão.

    aws s3api get-bucket-lifecycle-configuration --bucket DOC-EXAMPLE-BUCKET --profile UserDave
Testar usando o AWS Tools for Windows PowerShell
  1. Armazene as credenciais de Dave como AccountBDave.

    set-awscredentials -AccessKey AccessKeyID -SecretKey SecretAccessKey -storeas AccountBDave
  2. Teste o comando List Bucket.

    get-s3object -BucketName DOC-EXAMPLE-BUCKET -StoredCredentials AccountBDave

    Dave não tem nenhuma outra permissão. Portanto, se ele tentar realizar qualquer outra operação (por exemplo, a configuração seguinte de ciclo de vida de get bucket), o Amazon S3 retornará a recusa da permissão.

    get-s3bucketlifecycleconfiguration -BucketName DOC-EXAMPLE-BUCKET -StoredCredentials AccountBDave

Etapa 3: (opcional) tentar negação explícita

Você pode ter permissões concedidas por uma ACL, por uma política de bucket e por uma política de usuário. Mas se houver uma negação explícita definida por uma política de bucket ou por uma política de usuário, a negação explícita terá precedência sobre qualquer outra permissão. Para testar, vamos atualizar a política de bucket e negar explicitamente a permissão s3:ListBucket para a conta B. A política também concede a permissão s3:ListBucket, mas 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 DOC-EXAMPLE-BUCKET.

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

    { "Version": "2012-10-17", "Statement": [ { "Sid": "Example permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::AccountB-ID:root" }, "Action": [ "s3:GetLifecycleConfiguration", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET" ] }, { "Sid": "Deny permission", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::AccountB-ID:root" }, "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET" ] } ] }
  2. Agora, se você tentar obter uma lista de bucket usando as credenciais de AccountBadmin, você terá o acesso negado.

    • Usar a AWS CLI:

      aws s3 ls s3://DOC-EXAMPLE-BUCKET --profile AccountBadmin
    • Usar a AWS Tools for Windows PowerShell:

      get-s3object -BucketName DOC-EXAMPLE-BUCKET -StoredCredentials AccountBDave

Etapa 4: Limpeza

  1. Depois de terminar os testes, você pode seguir uma das etapas a seguir para fazer a limpeza.

    1. Faça login no AWS Management Console (AWS Management Console) usando as credenciais da Conta A e faça o seguinte:

      • No console do Amazon S3, remova a política de bucket anexada a DOC-EXAMPLE-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, remova o usuário AccountAadmin.

  2. Faça login no console do IAM usando as credenciais da Conta B. Exclua o usuário AccountBadmin. Para obter instruções passo a passo, consulte Excluir um usuário do IAM no Guia do usuário do IAM.