Por que não consigo acessar uma pasta ou arquivo específico no meu bucket do Amazon S3?

6 minuto de leitura
0

Não consigo acessar um determinado prefixo ou objeto que está no meu bucket do Amazon Simple Storage Service (Amazon S3). Eu consigo acessar o restante dos dados no bucket.

Breve descrição

Verifique as seguintes permissões de todas as configurações que estão negando seu acesso ao prefixo ou objeto:

  • Propriedade do prefixo ou objeto
  • Restrições na política de bucket
  • Restrições em sua política de usuário do AWS Identity and Access Management (IAM)
  • Permissões para objetos criptografados pelo AWS Key Management Service (AWS KMS)

Além disso, observe as seguintes condições de acesso:

  • Se você criptografou o objeto com uma chave do AWS KMS, somente a conta da AWS que criptografou o objeto poderá lê-lo.
  • Se você definiu limites de permissões e políticas de sessões, as permissões máximas do solicitante podem ser afetadas. O acesso ao objeto também pode ser afetado.
  • Outras políticas, como políticas de endpoint da VPC e políticas de controle de serviços (SCPs) podem especificar restrições.. Portanto, verifique essas políticas e atualize-as adequadamente.
  • Você também pode controlar a propriedade dos objetos enviados usando a propriedade de objetos do Amazon S3. Se você definir Propriedade de objeto como BucketOwnerPreferred, as contas com ACL predefinida bucket-owner-full-control poderão gravar objetos que fazem a transição para o proprietário do bucket.

Resolução

Propriedade do prefixo ou objeto

Por padrão, quando uma conta da AWS envia um objeto do S3, a conta é proprietária desse objeto. Isso é verdade mesmo quando outra conta é proprietária do bucket. Se outras contas puderem fazer envios para o seu bucket, siga estas etapas para obter permissões para o objeto ou prefixo que você não consegue acessar:

  1. Para obter o ID canônico do Amazon S3 para sua conta, execute este comando da AWS Command Line Interface (AWS CLI):

    aws s3api list-buckets --query Owner.ID
  2. Obtenha o ID canônico do Amazon S3 da conta proprietária do objeto que você não consegue acessar:

    aws s3api list-objects --bucket DOC-EXAMPLE-BUCKET --prefix index.html
  3. Se os IDs canônicos não forem compatíveis, você (proprietário do bucket) não é o proprietário do objeto. Para um objeto individual, o proprietário do objeto pode conceder a você controle total com este comando put-object-acl:

    aws s3api put-object-acl --bucket DOC-EXAMPLE-BUCKET --key object-name --acl bucket-owner-full-control

    Para objetos dentro de um prefixo, o proprietário do objeto deve copiar novamente o prefixo e conceder a você o controle total dos objetos como parte da operação. Por exemplo, o proprietário do objeto pode executar este comando cp com o parâmetro --acl bucket-owner-full-control:

    aws s3 cp s3://DOC-EXAMPLE-BUCKET/abc/ s3://DOC-EXAMPLE-BUCKET/abc/ --acl bucket-owner-full-control --recursive --storage-class STANDARD

    Dica: você pode usar uma política de bucket para exigir que outras contas concedam a você a propriedade dos objetos que elas enviam para o seu bucket.

Restrições na política de bucket

  1. Abra o console do Amazon S3.

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

  3. Selecione a guia Permissões.

  4. Selecione a Política do bucket.

  5. Procure declarações com “Efeito”: “Negar”. Em seguida, revise essas declarações em busca de referências ao prefixo ou objeto que você não consegue acessar. Por exemplo, essa política de bucket nega a todos o acesso ao prefixo abc/* em DOC-EXAMPLE-BUCKET:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "StatementPrefixDeny",
          "Effect": "Deny",
          "Principal": {
            "AWS": "*"
          },
          "Action": "s3:*",
          "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/abc/*"
        }
      ]
    }
  6. Modifique a política do bucket para editar ou remover qualquer declaração “Efeito”: “Negar” que esteja negando incorretamente seu acesso ao prefixo ou objeto.

Restrições em sua política de usuário do IAM

  1. Abra o console do IAM.

  2. No console, abra o usuário ou o perfil do IAM que você está usando para acessar o prefixo ou objeto.

  3. Na guia Permissões do seu 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, pesquise políticas relacionadas ao acesso ao Amazon S3. Em seguida, pesquise nessas políticas por qualquer declaração “Efeito”: “Negar” que bloqueiam seu acesso ao prefixo ou objeto.

    Por exemplo, a seguinte política do IAM tem uma declaração “Efeito”: “Negar” que bloqueia o acesso da identidade do IAM ao prefixo abc/* em DOC-EXAMPLE-BUCKET. A política também tem uma declaração “Efeito”: “Permitir” que concede acesso a DOC-EXAMPLE-BUCKET. Apesar da declaração “permitir” todo o bucket, a declaração “negar” explícita impede que a identidade do IAM acesse o prefixo abc/*:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "StatementPrefixDeny",
          "Effect": "Deny",
          "Action": "s3:GetObject",
          "Resource": [
            "arn:aws:s3:::DOC-EXAMPLE-BUCKET/abc/*"
          ]
        },
        {
          "Sid": "StatementFullPermissionS3",
          "Effect": "Allow",
          "Action": "s3:GetObject",
          "Resource": [
            "arn:aws:s3:::DOC-EXAMPLE-BUCKET",
            "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
          ]
        }
      ]
    }
  5. Modifique a política para editar ou remover qualquer declaração**“Efeito”: “Negar”** que esteja negando incorretamente seu acesso ao prefixo ou objeto.

Permissões para objetos criptografados pelo AWS KMS

Se um objeto for criptografado com uma chave do AWS KMS, você precisará de permissões tanto para o objeto quanto para a chave. Verifique se você não consegue acessar o objeto porque precisa de permissões para uma chave do AWS KMS:

  1. Use o console do Amazon S3 para visualizar as propriedades de um dos objetos que você não consegue acessar. Examine as propriedades de Criptografia do objeto.

  2. Se o objeto estiver criptografado com uma chave personalizada do AWS KM, analise a política de chave. Confirme se a política permite que sua identidade do IAM execute as seguintes ações:

    "Action": ["kms:Decrypt"]
  3. Se sua identidade do IAM não tiver permissões para qualquer uma dessas ações, modifique a política de chave para conceder as permissões ausentes.

Importante: se sua identidade do IAM e sua chave do AWS KMS pertencerem a contas diferentes, verifique se você tem as permissões adequadas. Tanto o IAM quanto as políticas de chave devem conceder permissões para as ações necessárias do AWS KMS.

Informações relacionadas

Por que não consigo acessar um objeto que foi enviado ao meu bucket do Amazon S3 por outra conta da AWS?

Como posso conceder a um usuário acesso a uma pasta específica no meu bucket do Amazon S3?

Preciso especificar a chave do AWS KMS quando faço download de um objeto do Amazon S3 criptografado pelo KMS?

AWS OFICIAL
AWS OFICIALAtualizada há 6 meses