Ir para o conteúdo

Como soluciono erros de Access Denied quando usuários do IAM de outra conta da AWS tentam acessar meu bucket do Amazon S3?

8 minuto de leitura
0

Minha política de bucket do Amazon Simple Storage Service (Amazon S3) concede acesso total a outra conta da AWS. No entanto, quando usuários do AWS Identity and Access Management (AWS IAM) da outra conta tentam acessar meu bucket, eles recebem um erro de “Access Denied”.

Breve descrição

Se sua política de bucket já concede acesso à outra conta, os usuários de várias contas podem receber erros de acesso negado pelos seguintes motivos:

  • A política do IAM do usuário não concede acesso ao bucket.
  • O objeto é criptografado pelo AWS Key Management Service (AWS KMS) e o usuário não tem acesso à chave do AWS KMS.
  • Uma declaração de negação na política de bucket ou na política do IAM está bloqueando o acesso do usuário.
  • A política de endpoint da Amazon Virtual Private Cloud (Amazon VPC) está bloqueando o acesso ao bucket.
  • A política de controle de serviços da AWS Organizations está bloqueando o acesso ao bucket.
  • O objeto não pertence à conta proprietária do bucket.
  • Você ativou o Requester Pays para o bucket do Amazon S3.
  • Você aprovou uma política de sessão que está bloqueando o acesso ao bucket.

Resolução

Observação: Se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solução de erros da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.

A política do IAM do usuário não concede acesso ao bucket

Para acesso entre contas, certifique-se de conceder acesso ao bucket na política do IAM na Conta A e na política de bucket na Conta B.

Para adicionar permissões de bucket à política do IAM na conta dos usuários, conclua as seguintes etapas:

  1. Abra o console do IAM.
  2. No painel de navegação, selecione os usuários ou funções do IAM que não podem acessar o bucket.
  3. Em Políticas de permissões, expanda cada política para ver seu documento de política JSON.
  4. Nos documentos de política JSON que contêm o nome do bucket, confirme se as políticas permitem as ações corretas do S3 no bucket.
  5. Se o usuário ou o perfil do IAM não conceder acesso ao bucket, adicione uma política que conceda as permissões corretas.
    O exemplo de política do IAM a seguir concede ao usuário acesso para baixar objetos na solicitação getObject do DOC-EXAMPLE-BUCKET:
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Sid": "ExampleStmt",
                "Action": "s3:GetObject",
                "Effect": "Allow",
                "Resource": [
                    "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
                ]
            }
        ]
    }

Observação: se você usa perfis de instância ou assume um perfil, certifique-se de que sua política tenha as permissões corretas.

Você criptografou o objeto com o AWS KMS

Se a política do IAM e a política de bucket concederem acesso entre contas, verifique a criptografia padrão no bucket com o AWS KMS. Ou verifique as propriedades do objeto para a criptografia do AWS KMS. Se você criptografou o objeto com uma chave KMS, o usuário também deverá ter permissões para usar a chave.

Para conceder a um usuário do IAM as permissões para baixar e fazer upload em um bucket e usar a chave do AWS KMS, conclua as seguintes etapas:

  1. Edite a política de chaves do KMS para adicionar a seguinte declaração:

    {
        "Sid": "ExampleStmt",
        "Action": [
            "kms:Decrypt",
            "kms:GenerateDataKey"
        ],
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::111122223333:user/Jane"
        },
        "Resource": "*"
    }

    Observação: substitua o ARN de exemplo pelo ARN da sua entidade principal.

  2. Se a chave do AWS KMS pertencer à mesma conta do usuário do IAM, você não precisará atualizar a política de chave. Se a chave do AWS KMS pertencer à sua conta, você deverá atualizar as permissões do usuário do IAM para adicionar a seguinte declaração de política do IAM:

    {
        "Sid": "KMSAccess",
        "Action": [
            "kms:Decrypt",
            "kms:GenerateDataKey"
        ],
        "Effect": "Allow",
        "Resource": "arn:aws:kms:example-region-1:123456789098:key/111aa2bb-333c-4d44-5555-a111bb2c33dd"
    }

    Observação: substitua o ARN da chave KMS de exemplo pelo ARN da sua chave KMS.

Para obter mais informações, consulte Por que usuários de várias contas recebem erros de Access Denied quando tentam acessar meus objetos do S3 que eu criptografei com uma chave gerenciada pelo cliente do AWS KMS?

Uma declaração de negação na política bloqueia o acesso dos usuários

Verifique a política de bucket e as políticas do IAM do usuário para ver se há declarações que neguem explicitamente o acesso do usuário ao bucket.

Para verificar sua política de bucket, conclua as etapas a seguir:

  1. Abra o console do Amazon S3.
  2. Na lista de buckets, abra o bucket com a política que você deseja verificar.
  3. Escolha a guia Permissões.
  4. Na política de bucket, verifique as declarações com “Efeito”: “Negar”.
  5. Modifique a política do bucket para editar ou remover qualquer declaração “Efeito”: “Negar” que negam incorretamente o acesso do usuário ao bucket.

Para verificar as políticas de IAM dos usuários, conclua as seguintes etapas:

  1. Abra o console do IAM.
  2. No painel de navegação, selecione os usuários ou funções do IAM que não podem acessar o bucket.
  3. Em Políticas de permissões, expanda cada política para visualizar os documentos da política JSON.
  4. Nos documentos de política JSON relacionados ao bucket do S3, verifique se há declarações que contenham “Efeito”: “Negar”.
  5. Modifique as políticas de permissões do IAM do usuário para editar ou remover instruções “Efeito”: “Negar” que negam incorretamente o acesso do usuário ao bucket.

A política de endpoint da VPC bloqueia o acesso ao bucket

Se os usuários acessarem o bucket com uma instância do Amazon Elastic Compute Cloud (Amazon EC2) roteada por meio de um endpoint da VPC, verifique a política de endpoint da VPC. Confirme se a política de endpoint da VPC inclui as permissões corretas para acessar o bucket do S3.

O exemplo de política de endpoint da VPC permite acesso a DOC-EXAMPLE-BUCKET:

{
    "Id": "Policy1234567890123",
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Stmt1234567890123",
            "Action": [
                "s3:GetObject",
                "s3:PutObject"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::DOC-EXAMPLE-BUCKET",
                "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
            ],
            "Principal": "*"
        }
    ]
}

Aviso: o elemento “Entidade principal”: “*” concede acesso ao bucket a todos que usam o endpoint da VPC. Certifique-se de restringir o escopo do valor Entidade principal conforme apropriado para seu caso de uso.

O SCP da organização bloqueia o acesso ao bucket

Se a conta do usuário usar Organizações, verifique se há declarações Negar nos SCPs que bloqueiam o acesso ao bucket.

O exemplo de política a seguir nega explicitamente o acesso ao Amazon S3:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Action": "s3:*",
            "Resource": "*"
        }
    ]
}

O objeto não pertence à conta proprietária do bucket

Por padrão, a conta que carrega o objeto é proprietária do objeto, mesmo quando outra conta é proprietária do bucket. As permissões do bucket não se aplicam automaticamente a um objeto de propriedade de uma conta diferente.

Para resolver os erros de Access Denied da propriedade de objetos do S3, use as seguintes práticas recomendadas:

Você ativou o Requester Pays

Se você ativou o Requester Pays para seu bucket, os usuários de outras contas devem especificar o parâmetro x-amz-request-payer.

Os usuários devem realizar as seguintes ações:

  • Para solicitações DELETE, GET, HEAD, POST e PUT, inclua x-amz-request-payer : requester no cabeçalho.
  • Para URLs assinados, inclua x-amz-request-payer=requester na solicitação.
  • Para comandos da AWS CLI, inclua o parâmetro --request-payer:
    aws s3 cp exampleobject.jpg s3://DOC-EXAMPLE-BUCKET/exampleobject.jpg --request-payer requester
    

Uma política de sessão bloqueou o acesso ao bucket

Certifique-se de que a política de sessão que você aprovou não bloqueie o acesso ao bucket do S3.

Informações relacionadas

Como soluciono erros 403 Access Denied do Amazon S3?

Um usuário com permissão para adicionar objetos ao meu bucket do Amazon S3 está recebendo erros de Access Denied. Por quê?

AWS OFICIALAtualizada há um ano