Por que usuários do IAM de outra conta da AWS estão recebendo erros de acesso negado mesmo que minha política de bucket conceda acesso total a essa conta?

9 minuto de leitura
0

A política do meu 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 (IAM) dessa conta tentam acessar meu bucket, eles recebem um erro de acesso negado.

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 do AWS Organizations está bloqueando o acesso ao bucket.
  • O objeto não pertence à conta da AWS que possui o bucket.
  • Você ativou Solicitante paga para o bucket.
  • 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), verifique se está usando a versão mais recente.

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.

Siga estas etapas para verificar a política do IAM do usuário na Conta A:

1.    Abra o console do IAM.

2.    No console, abra o usuário ou o perfil do IAM que não consegue acessar o bucket.

3.    Na guia Permissões do usuário ou perfil do IAM, expanda cada política para ver seu documento de política do JSON.

4.    Nos documentos de política do JSON, procure por políticas com o nome do bucket. Em seguida, confirme se essas 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. Por exemplo, a seguinte política do IAM concede ao usuário acesso para baixar objetos (s3:GetObject) de DOC-EXAMPLE-BUCKET:

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

O objeto é criptografado pelo AWS KMS e o usuário não tem acesso à chave do AWS KMS

Se a política do IAM (Conta A) e a política de bucket (Conta B) 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 um objeto for criptografado por uma chave do AWS 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 de download e upload para um bucket ao usar uma chave do KMS para criptografia, siga estas etapas:

1.    Edite a política de chave do KMS para adicionar uma declaração semelhante à seguinte:

Observação: Insira o nome do recurso da Amazon (ARN) do usuário do IAM como Principal.

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

2.    Se a chave do KMS pertencer à mesma conta do usuário do IAM, você não precisará atualizar a política de chave. Se a chave do KMS pertencer a uma conta do usuário do IAM diferente, você também deverá atualizar as permissões do usuário do IAM. Adicione uma declaração de política do IAM semelhante à seguinte:

Observação: Insira o ARN da chave do KMS como Recurso.

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

Uma declaração de negação na política de bucket ou na política do IAM está bloqueando o acesso do usuário

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.

Siga estas etapas para verificar a política de bucket:

1.    Abra o console do Amazon S3.

2.    Na lista de buckets, abra o bucket com a política de bucket que você deseja verificar.

3.    Escolha a guia Permissões.

4.    Escolha a política do Bucket.

5.    Procure por declarações com “Efeito”: “Negar”.

6.    Modifique a política do bucket para editar ou remover qualquer instrução “Efeito”: “Negar” que está negando o acesso do usuário ao bucket.

Siga estas etapas para verificar as políticas do IAM do usuário:

1.    Abra o console do IAM.

2.    No console, abra o usuário ou o perfil do IAM que não consegue acessar o bucket.

3.    Na guia Permissões do usuário ou perfil do IAM, expanda cada política para ver os documentos de política do JSON.

4.    Nos documentos de política do JSON, procure por políticas relacionadas ao bucket do S3 com instruçõ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 está bloqueando 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.

Por exemplo, a seguinte 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 “Principal”: “*” concede acesso ao bucket a todos que usam o endpoint da VPC. Certifique-se de restringir o escopo do valor Principal conforme apropriado para seu caso de uso.

A política de controle de serviços da AWS Organizations está bloqueando o acesso ao bucket

Se a conta do usuário tiver ativado AWS Organizations, verifique as políticas de controle de serviços para garantir que o acesso ao Amazon S3 seja permitido. Por exemplo, a política a seguir nega explicitamente o acesso ao Amazon S3 e resulta em um erro de acesso negado:

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

Para mais informações sobre os recursos do AWS Organizations, consulte Como ativar todos os recursos em sua organização.

O objeto não pertence à conta da AWS que possui o bucket

Por padrão, um objeto S3 pertence à conta da AWS que o carregou. Isso é verdade mesmo quando o bucket pertence a outra conta. As permissões do bucket não se aplicam automaticamente a um objeto quando o objeto pertence a uma conta diferente.

Para resolver erros de acesso negado decorrentes da propriedade do objeto, tente as seguintes soluções:

$ aws s3api put-object-acl --bucket examplebucket --key keyname --acl bucket-owner-full-control

Observação: Para acessar o objeto, o proprietário do objeto deve conceder acesso explicitamente ao proprietário do bucket. Portanto, use a conta do proprietário do objeto para executar esses comandos.

Você ativou Solicitante paga para o bucket

Se você ativou Solicitante paga para seu bucket, os usuários de outras contas devem especificar o parâmetro request-payer ao enviar solicitações para seu bucket. Caso contrário, esses usuários receberão um erro de acesso negado.

Para resolver esse erro, execute 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. Exemplo:
$ aws s3 cp exampleobject.jpg s3://DOC-EXAMPLE-BUCKET/exampleobject.jpg --request-payer requester

Você aprovou uma política de sessão que está bloqueando o acesso ao bucket

Uma política de sessão é uma política em linha que você pode criar e transmitir rapidamente na sessão ao presumir o perfil. Você pode passar a política da sessão para ampliar o escopo das permissões da sessão do perfil. As políticas de sessão são políticas avançadas que você passa como parâmetro ao criar programaticamente uma sessão temporária para um perfil ou usuário federado. As permissões efetivas da sessão são a interseção das políticas baseadas em identidade do perfil e da política da sessão. Portanto, certifique-se de que a política de sessão que você aprovou não esteja bloqueando o acesso ao bucket do S3.

Informações relacionadas

Como soluciono erros 403 de acesso negado do Amazon S3?

Por que usuários de várias contas estão recebendo erros de acesso negado quando tentam acessar meu bucket que é criptografado por uma chave do AWS KMS personalizada?

AWS OFICIAL
AWS OFICIALAtualizada há um ano