Perché non riesco ad accedere a una cartella o a un file specifico nel mio bucket Amazon S3?

5 minuti di lettura
0

Non riesco ad accedere a un determinato prefisso o oggetto presente nel mio bucket Amazon Simple Storage Service (Amazon S3). Riesco ad accedere al resto dei dati nel bucket.

Breve descrizione

Controlla le seguenti autorizzazioni per tutte le impostazioni che impediscono l'accesso al prefisso o all'oggetto:

  • Proprietà del prefisso o dell'oggetto
  • Restrizioni nella policy del bucket
  • Restrizioni nella policy per gli utenti di AWS Identity and Access Management (IAM)
  • Autorizzazioni per oggetti crittografati da Servizio di gestione delle chiavi AWS (AWS KMS)

Inoltre, tieni presente le seguenti condizioni di accesso:

  • Se l'oggetto Hai crittografato l'oggetto utilizzando una chiave KMS gestita da AWS, solo l'account AWS che ha crittografato l'oggetto può leggerlo.
  • Se hai definito i limiti delle autorizzazioni e le politiche di sessione, è possibile influire sulle autorizzazioni massime del richiedente. Anche l'accesso agli oggetti potrebbe risentirne.
  • Altre policy come le policy degli endpoint VPC e le policy di controllo dei servizi (SCP) possono specificare restrizioni. Pertanto, controlla queste policy e aggiornale di conseguenza.
  • È possibile anche controllare la proprietà degli oggetti caricati utilizzando Amazon S3 Object Ownership. Se imposti Object Ownership su BucketOwnerPreferred, dunque gli account con il bucket-owner-fullcontrol predefinito possono scrivere oggetti che passano al proprietario del bucket.

Risoluzione

Proprietà del prefisso o dell'oggetto

Per impostazione predefinita, quando un account AWS carica un oggetto S3, l'account possiede quell'oggetto. Questo vale anche quando il bucket è di proprietà di un altro account. Se altri account possono caricare nel tuo bucket, segui questi passaggi per ottenere le autorizzazioni per l'oggetto o il prefisso a cui non puoi accedere:

  1. Esegui questo comando dell'interfaccia della linea di comando AWS (AWS CLI) per ottenere l'ID canonico Amazon S3:

    aws s3api list-buckets --query Owner.ID
  2. Ottieni l'ID canonico Amazon S3 dell'account proprietario dell'oggetto a cui non puoi accedere:

    aws s3api list-objects --bucket DOC-EXAMPLE-BUCKET --prefix index.html
  3. Se gli ID canonici non corrispondono, allora l'utente (il proprietario del bucket) non possiede l'oggetto. Per un singolo oggetto, il proprietario dell'oggetto può concederti il controllo completo con questo comando put-object-acl:

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

    Per gli oggetti all'interno di un prefisso, il proprietario dell'oggetto deve copiare nuovamente il prefisso e concedere all'utente il pieno controllo degli oggetti come parte dell'operazione. Ad esempio, il proprietario dell'oggetto può eseguire questo comando cp con il parametro --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

    Suggerimento: è possibile utilizzare una policy del bucket per richiedere che altri account ti concedano la proprietà degli oggetti che caricano nel tuo bucket.

Restrizioni nella policy del bucket

  1. Apri la console Amazon S3.

  2. Dall'elenco dei bucket, apri il bucket con la policy dei bucket che desideri controllare.

  3. Scegli la scheda Autorizzazioni.

  4. Scegli politica Bucket.

  5. Cerca le affermazioni con "Effect": "Deny". Quindi, esamina quelle istruzioni per i riferimenti al prefisso o all'oggetto a cui non puoi accedere. Ad esempio, questa policy del bucket nega a tutti l'accesso al prefisso abc/* in 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. Modifica la policy del bucket per modificare o rimuovere qualsiasi istruzione "Effect": "Deny" che impedisce erroneamente l'accesso al prefisso o all'oggetto.

Restrizioni nella tua politica per gli utenti IAM

  1. Apri la console IAM.

  2. Dalla console, apri l'utente o il ruolo IAM che utilizzi per accedere al prefisso o all'oggetto.

  3. Nella scheda Autorizzazioni dell'utente o del ruolo IAM, espandi ogni policy per visualizzare il documento relativo alla policy JSON.

  4. Nei documenti relativi alle policy JSON, cerca le policy relative all'accesso ad Amazon S3. Quindi, cerca in queste policy qualsiasi istruzione di tipo "Effect": Istruzioni "Deny" che bloccano l'accesso al prefisso o all'oggetto.

    Ad esempio, la seguente policy IAM ha un'istruzione "Effect": "Deny" che blocca l'accesso dell'identità IAM al prefisso abc/* all'interno di DOC-EXAMPLE-BUCKET. Quindi, la policy dispone anche di un'istruzione "Effect": "Consenti" che consente l'accesso a DOC-EXAMPLE-BUCKET. Nonostante l'istruzione consenti per l'intero bucket, l'istruzione nega esplicita impedisce all'identità IAM di accedere al prefisso 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. Modifica la policy del bucket per modificare o rimuovere qualsiasi "Effect": "Deny" che impedisce erroneamente l'accesso al prefisso o all'oggetto.

Autorizzazioni per oggetti crittografati da AWS KMS

Se un oggetto è crittografato con una chiave AWS KMS, sono necessarie le autorizzazioni sia per l'oggetto che per la chiave. Verifica se non riesci ad accedere all'oggetto perché hai bisogno delle autorizzazioni per una chiave AWS KMS:

  1. Usa la console Amazon S3 per visualizzare le proprietà di uno degli oggetti a cui non puoi accedere. Rivedi le proprietà di Crittografia dell'oggetto.

  2. Se l'oggetto è crittografato con una chiave AWS KMS personalizzata, rivedi la policy della chiave. Verifica che la policy della consenta alla tua identità IAM di eseguire le seguenti azioni:

    "Action": ["kms:Decrypt"]
  3. Se alla tua identità IAM mancano le autorizzazioni per una di queste azioni, modifica la policy della chiave per concedere le autorizzazioni mancanti.

Importante: Se la tua identità IAM e la tua chiave AWS KMS appartengono ad account diversi, verifica di disporre delle autorizzazioni appropriate. Sia la tua policy IAM sia quella della chiave devono concederti le autorizzazioni per le azioni AWS KMS richieste.

Informazioni correlate

Perché non riesco ad accedere a un oggetto che è stato caricato nel mio bucket Amazon S3 da un altro account AWS?

In che modo posso consentire a un utente l'accesso a una cartella specifica nel mio bucket Amazon S3?

Devo specificare la chiave AWS KMS quando scarico un oggetto crittografato con KMS da Amazon S3?

AWS UFFICIALE
AWS UFFICIALEAggiornata 8 mesi fa