Perché ricevo un errore "403 Forbidden" (403 Non consentito) quando provo a caricare i file in Amazon S3?

Ultimo aggiornamento: 27/04/2022

Sto cercando di caricare file nel mio bucket Amazon Simple Storage Service (Amazon S3) utilizzando la console Amazon S3. Tuttavia, ricevo invece un errore "403 Forbidden" (403 Non consentito).

Breve descrizione

L'errore "403 Forbidden" (403 Non consentito) può verificarsi per i seguenti motivi:

  • Mancano le autorizzazioni per s3:PutObject per aggiungere un oggetto o s3:PutObjectAcl per modificare l'ACL dell'oggetto.
  • Non disponi delle autorizzazioni per utilizzare una chiave AWS Key Management Service (AWS KMS).
  • Esiste una dichiarazione di rifiuto esplicito nella policy del bucket.
  • La funzione Amazon S3 Block Public Access (Blocco dell'accesso pubblico di Amazon S3) è abilitata.
  • La lista di controllo degli accessi (ACL) del bucket non permette all'utente root dell'account AWS di scrivere oggetti.
  • La policy di controllo del servizio di AWS Organizations non permette l'accesso ad Amazon S3.

Soluzione

Controlla le autorizzazioni per s3:PutObject o s3:PutObjectAcl

Completa le seguenti fasi:

  1. Apri la console AWS Identity and Access Management (IAM).
  2. Seleziona l'identità utilizzata per accedere alla policy del bucket, ad esempio User (Utente) o Role (Ruolo).
  3. Seleziona il nome dell'identità IAM che stai utilizzando per accedere alla policy del bucket.
  4. Seleziona la scheda Permissions (Autorizzazioni) ed espandi ciascuna policy per visualizzare il relativo documento di policy JSON.
  5. Nei documenti di policy JSON, cerca le policy relative all'accesso ad Amazon S3. Quindi, conferma di disporre delle autorizzazioni per le operazioni s3:PutObject o s3:PutObjectAcl sul bucket.

Richiedi l'autorizzazione per utilizzare una chiave AWS KMS

Per accedere a un bucket S3 che utilizza la crittografia di default con una chiave AWS KMS personalizzata, un amministratore della chiave deve concedere l'autorizzazione sulla policy della chiave.

Per caricare un oggetto in un bucket crittografato, il tuo utente o ruolo IAM deve disporre delle autorizzazioni AWS KMS per almeno kms:Encrypt e kms:GenerateDataKey.

Controlla la policy del bucket per le dichiarazioni di rifiuto esplicito

Completa le seguenti fasi:

  1. Apri la console Amazon S3.
  2. Dall'elenco dei bucket, apri il bucket in cui desideri caricare i file.
  3. Scegli la scheda Permissions (Autorizzazioni).
  4. Scegli Bucket policy (Policy del bucket).
  5. Ricerca le dichiarazioni contrassegnate da "Effect": "Deny" ("Effetto": "Rifiuto").
  6. Verifica che la tua policy del bucket includa i parametri della richiesta URI corretti per s3:PutObject per soddisfare le condizioni specifiche.

Importante: prima di salvare una policy del bucket con "Effect": "Deny" ("Effetto": "Rifiuto"), assicurati di controllare la presenza di eventuali dichiarazioni che rifiutano l'accesso al bucket S3. Se vieni bloccato, consulta Ho rifiutato accidentalmente a tutti l'accesso al mio bucket Amazon S3. Come posso riabilitare l'accesso?

La seguente dichiarazione di esempio rifiuta esplicitamente l'accesso a s3:PutObject su awsdoc-example-bucket a meno che la richiesta di caricamento non includa la crittografia con la chiave AWS KMS arn:aws:kms:us-east-1:111122223333:key:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "ExampleStmt",
      "Action": [
        "s3:PutObject"
      ],
      "Effect": "Deny",
      "Resource": "arn:aws:s3:::awsdoc-example-bucket/*",
      "Condition": {
        "StringNotLikeIfExists": {
          "s3:x-amz-server-side-encryption-aws-kms-key-id": "arn:aws:kms:us-east-1:111122223333:key/*"
        }
      },
      "Principal": "*"
    }
  ]
}

Disabilita il blocco dell'accesso pubblico S3

Se stai passando l'ACL pubblico in una richiesta di caricamento e la caratteristica del blocco dell'accesso pubblico S3 è abilitata, disabilitala quindi prima di caricare i file.

Per ulteriori informazioni sulla configurazione delle impostazioni di blocco dell'accesso pubblico S3 a livello di account, consulta Configurazione delle impostazioni di blocco dell'accesso pubblico per il proprio account. Per configurare le impostazioni a livello di bucket, consulta Configurazione delle impostazioni di blocco dell'accesso pubblico per i bucket S3.

Concedi all'utente root l'autorizzazione per scrivere oggetti

Configura le autorizzazioni ACL del bucket per concedere all'utente root l'accesso per scrivere oggetti.

Elimina policy di controllo dei servizi per AWS Organizations

Se utilizzi AWS Organizations, elimina tutte le policy di controllo dei servizi che rifiutano esplicitamente le azioni S3.