Por que não consigo acessar um objeto que foi enviado ao meu bucket do Amazon S3 por outra conta da AWS?
Um usuário do AWS Identity and Access Management (IAM) de outra conta da AWS fez upload de um objeto no meu bucket do Amazon Simple Storage Service (Amazon S3). Quando tento acessar esse objeto, recebo o erro 403 Acesso negado. Como posso corrigir isso?
Breve descrição
Em buckets existentes do Amazon S3 com as configurações padrão de propriedade do objeto, o proprietário do objeto é a conta da AWS que carregou o objeto no bucket. Para esses buckets existentes, o proprietário do objeto precisava conceder explicitamente permissões a um objeto (anexando uma lista de controle de acesso). Caso contrário, o proprietário do bucket não conseguiria acessar o objeto.
Com a Propriedade de objeto do S3, os proprietários de buckets agora podem gerenciar a propriedade de qualquer objeto carregado em seus buckets. Por padrão, todos os buckets do S3 recém-criados têm a configuração imposta pelo proprietário do bucket ativada. Quando a configuração imposta pelo proprietário do bucket está habilitada, os proprietários do bucket se tornam os proprietários de todos os objetos dentro do bucket. Além disso, todas as ACLs em um bucket e seus objetos são desativados.
Você também pode definir a Propriedade de objeto do S3 em buckets existentes ativando a configuração imposta pelo proprietário do bucket ou a configuração de preferência do proprietário do bucket. Quando a configuração de preferência do proprietário do bucket está ativada, as ACLs ainda estão ativadas. Além disso, somente objetos enviados para o bucket com uma ACL bucket-owner-full-control são de propriedade do proprietário do bucket. Se você habilitar a configuração imposta pelo proprietário do bucket em um bucket existente, você também pode desativá-la a qualquer momento. (Desativar a configuração imposta pelo proprietário do bucket em um bucket existente reativa todos os buckets e ACLs de objetos que foram aplicados anteriormente.)
É uma prática recomendada que os proprietários de bucket usem a configuração imposta pelo proprietário do bucket em buckets novos e existentes, enquanto gerenciam as permissões por meio do IAM e das políticas de bucket.
Importante: antes de desativar qualquer ACL nos buckets existentes, avalie o impacto potencial. Se houver várias ACLs em um objeto ou bucket, revise e atualize suas políticas de bucket e IAM para conceder as permissões necessárias.
Resolução
Para desativar as ACLs em seu bucket e se apropriar de todos os objetos no bucket, execute o seguinte comando:
aws s3api put-bucket-ownership-controls --bucket example-bucket --ownership-controls 'Rules=[{ObjectOwnership=BucketOwnerEnforced}]'
Se você não conseguir desativar as ACLs no seu bucket, use as opções a seguir para conceder acesso aos objetos em seu bucket.
Conceda acesso durante uma operação put ou copy
Durante uma operação put ou copy, o proprietário do objeto pode especificar que a ACL do objeto dê controle total ao proprietário do bucket.
Para uma operação put, o proprietário do objeto pode executar este comando:
aws s3api put-object --bucket destination_DOC-EXAMPLE-BUCKET --key dir-1/my_images.tar.bz2 --body my_images.tar.bz2 --acl bucket-owner-full-control
Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), certifique-se de estar usando a versão mais recente da AWS CLI.
Para uma operação copy de um único objeto, o proprietário do objeto pode executar um destes comandos:
aws s3api copy-object --bucket destination_DOC-EXAMPLE-BUCKET --key source_DOC-EXAMPLE-BUCKET/myobject --acl bucket-owner-full-control
-or-
aws s3 cp s3://source_DOC-EXAMPLE-BUCKET/myobject s3://destination_DOC-EXAMPLE-BUCKET/ --acl bucket-owner-full-control
Para uma operação copy de vários objetos, o proprietário do objeto pode executar este comando:
aws s3 cp s3://source_DOC-EXAMPLE-BUCKET/ s3://destination_DOC-EXAMPLE-BUCKET/ --acl bucket-owner-full-control --recursive
Conceda acesso depois que o objeto for adicionado ao bucket
Se o objeto já estiver em um bucket em outra conta, o proprietário do objeto poderá conceder acesso ao proprietário do bucket com um comando put-object-acl:
aws s3api put-object-acl --bucket destination_DOC-EXAMPLE-BUCKET --key keyname --acl bucket-owner-full-control
Exija que os objetos concedam controle total ao proprietário do bucket
Você pode usar uma política de bucket para exigir que qualquer objeto carregado em seu bucket por outra conta defina a ACL como “bucket-owner-full-control”. Por exemplo, consulte Quando outras contas da AWS carregam objetos no meu bucket do S3, como posso exigir que elas me concedam a propriedade dos objetos?
Informações relacionadas
Tutorial do IAM: Delegue acesso entre contas da AWS usando perfis do IAM
Conteúdo relevante
- AWS OFICIALAtualizada há um ano
- AWS OFICIALAtualizada há 2 anos
- AWS OFICIALAtualizada há um ano
- AWS OFICIALAtualizada há um mês