Ir para o conteúdo

Como soluciono erros 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 uma mensagem de erro "Access Denied".

Breve descrição

Se sua política de bucket já concede acesso a outra conta, os usuários entre contas podem receber mensagens de erro de Access Denied pelos seguintes motivos:

  • A política do IAM do usuário não concede acesso ao bucket.
  • O objeto foi criptografado com o AWS Key Management Service (AWS KMS) e o usuário não tem acesso à chave do AWS KMS.
  • Uma declaração Deny na política de bucket ou na política do IAM está bloqueando o acesso do usuário.
  • A política do endpoint da Amazon Virtual Private Cloud (Amazon VPC) está bloqueando o acesso ao bucket.
  • A política de controle de serviços (SCP) do 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 mensagens de erro ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solução de problemas 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 dos usuários e à política de bucket na sua conta.

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 perfis 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 na criptografia do AWS KMS. Se você criptografou o objeto com uma chave do KMS, o usuário também deve 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 chave 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 precisa atualizar a política de chave. Se a chave do AWS KMS pertencer à sua conta, você deve 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 do KMS de exemplo pelo ARN da sua chave do KMS.

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

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

Verifique a política de bucket e as políticas do IAM dos usuários para ver se há instruçõ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, selecione o bucket com a política que você deseja verificar.
  3. Clique na guia Permissões.
  4. Na política de bucket, verifique as instruções com "Effect": "Deny".
  5. Modifique a política de bucket para remover qualquer instrução "Effect": "Deny" que nega 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 perfis do IAM que não podem acessar o bucket.
  3. Em Políticas de permissões, expanda cada política para visualizar os documentos de política JSON.
  4. Nos documentos de política JSON relacionados ao bucket do S3, verifique se há instruções que contenham "Effect": "Deny".
  5. Modifique as políticas de permissões do IAM do usuário para remover instruções "Effect": "Deny" que nega o acesso do usuário ao bucket.

A política do 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) por meio de um endpoint da VPC, verifique a política do endpoint da VPC. Confirme se a política do endpoint da VPC inclui as permissões corretas para acessar o bucket do S3.

O exemplo de política do endpoint da VPC a seguir 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": "*"
        }
    ]
}

Atenção: o elemento "Principal": "*" concede acesso ao bucket a todos que usam o endpoint da VPC. Certifique-se de restringir o escopo do valor de Principal conforme apropriado para seu caso de uso.

A SCP do Organizations bloqueia o acesso ao bucket

Se a conta do usuário usar Organizations, verifique se há instruçõ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 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 em 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:

  • Em solicitações DELETE, GET, HEAD, POST e PUT, inclua x-amz-request-payer : requester no cabeçalho.
  • Em URLs assinados, inclua x-amz-request-payer=requester na solicitação.
  • Em 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 solucionar 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 acesso negado. Por que isso acontece?

AWS OFICIALAtualizada há um ano