Perché gli utenti IAM di un altro account AWS ricevono errori di accesso negato anche se la mia policy dei bucket garantisce l'accesso completo a quell'account?
La policy del mio bucket Amazon Simple Storage Service (Amazon S3) garantisce l'accesso completo a un altro account AWS. Tuttavia, quando gli utenti di AWS Identity and Access Management (IAM) di quell'account cercano di accedere al mio bucket, ricevono un errore di accesso negato.
Descrizione breve
Se la policy del bucket consente già l'accesso all'altro account, gli utenti che utilizzano più account possono ricevere errori di accesso negato per i seguenti motivi:
- La policy IAM dell'utente non concede l'accesso al bucket.
- L'oggetto è crittografato da AWS Key Management Service (AWS KMS) e l'utente non ha accesso alla chiave AWS KMS.
- Una dichiarazione di rifiuto nella policy del bucket o nella policy IAM blocca l'accesso dell'utente.
- La policy sull'endpoint di Amazon Virtual Private Cloud (Amazon VPC) blocca l'accesso al bucket.
- La policy di controllo dei servizi di AWS Organizations blocca l'accesso al bucket.
- L'oggetto non appartiene all'account AWS proprietario del bucket.
- Hai attivato Richiedente paga per il bucket.
- Hai approvato una policy di sessione che blocca l'accesso al bucket.
Risoluzione
Nota: Se ricevi errori durante l'esecuzione dei comandi AWS Command Line Interface (AWS CLI), assicurati di utilizzare la versione più recente.
La policy IAM dell'utente non concede l'accesso al bucket
Per l'accesso multi-account, assicurati di concedere l'accesso al bucket nella policy IAM nell'Account A e alla policy del bucket nell'Account B.
Segui questi passaggi per verificare la policy IAM dell'utente nell'Account A:
1. Apri la console IAM.
2. Dalla console, apri l'utente IAM o il ruolo IAM che non può accedere al bucket.
3. Nella scheda Autorizzazioni dell'utente IAM o del ruolo IAM, espandi ogni policy per visualizzare il documento relativo alla policy JSON.
4. Nei documenti sulle policy JSON, cerca le policy con il nome del bucket. Quindi, conferma che tali policy consentano le azioni S3 corrette sul bucket.
5. Se l'utente IAM o il ruolo IAM non concede l'accesso al bucket, aggiungi una policy che conceda le autorizzazioni corrette. Ad esempio, la seguente policy IAM concede a un utente l'accesso per scaricare oggetti (s3:GetObject) da DOC-EXAMPLE-BUCKET:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ExampleStmt", "Action": "s3:GetObject", "Effect": "Allow", "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" ] } ] }
L'oggetto è crittografato da AWS KMS e l'utente non ha accesso alla chiave AWS KMS
Se sia la policy IAM (Account A) che la policy del bucket (Account B) concedono l'accesso multi-account, controlla la crittografia predefinita nel bucket con AWS KMS. Oppure, controlla le proprietà dell'oggetto per la crittografia AWS KMS. Se un oggetto è crittografato da una chiave AWS KMS, l'utente deve disporre anche delle autorizzazioni per utilizzare la chiave.
Per concedere a un utente IAM le autorizzazioni per il download e il caricamento in un bucket quando si utilizza una chiave KMS per la crittografia, segui questi passaggi:
1. Modifica la policy della chiave KMS per aggiungere una dichiarazione simile alla seguente:
**Nota:**Inserisci l'Amazon Resource Name (ARN) dell'utente IAM come Principale.
{ "Sid": "ExampleStmt", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/Jane" }, "Resource": "*" }
2. Se la chiave KMS appartiene allo stesso account dell'utente IAM, non è necessario aggiornare la policy della chiave. Se la chiave KMS appartiene a un account diverso da quello dell'utente IAM, devi aggiornare anche le autorizzazioni dell'utente IAM. Aggiungi una dichiarazione sulla politica IAM simile alla seguente:
Nota: Inserisci l'ARN della chiave KMS come Risorsa.
{ "Sid": "KMSAccess", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Effect": "Allow", "Resource": "arn:aws:kms:example-region-1:123456789098:key/111aa2bb-333c-4d44-5555-a111bb2c33dd" }
Una dichiarazione di rifiuto nella policy del bucket o nella policy IAM blocca l'accesso dell'utente
Controlla la policy del bucket e le policy IAM dell'utente per eventuali dichiarazioni che negano esplicitamente l'accesso dell'utente al bucket.
Segui questi passaggi per verificare la 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 la politica bucket.
5. Cerca le affermazioni con "Effetto": "Nega".
6. Modifica la policy del bucket per modificare o rimuovere qualsiasi "Effetto": Dichiarazioni "Nega" che negano l'accesso dell'utente al bucket.
Segui questi passaggi per verificare le policy IAM dell'utente:
1. Apri la console IAM.
2. Dalla console, apri l'utente IAM o il ruolo IAM che non può accedere al bucket.
3. Nella scheda Autorizzazioni dell'utente IAM o del ruolo IAM, espandi ogni policy per visualizzare i documenti delle policy JSON.
4. Nei documenti sulle policy JSON, cerca le politiche relative al bucket S3 con le istruzioni che contengono "Effetto": "Nega".
5. Modifica le policy di autorizzazione IAM dell'utente per modificare o rimuovere **"Effetto": Dichiarazioni "Nega" **che negano erroneamente l'accesso dell'utente al bucket.
La policy sull'endpoint VPC sta bloccando l'accesso al bucket
Se gli utenti accedono al bucket con un'istanza Amazon Elastic Compute Cloud (Amazon EC2) indirizzata attraverso un endpoint VPC, controlla la policy degli endpoint VPC. Verifica che la policy degli endpoint VPC includa le autorizzazioni corrette per accedere al bucket S3.
Ad esempio, la seguente policy sugli endpoint VPC consente l'accesso 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": "*" } ] }
Avvertenza: L'elemento "Principale": "*" garantisce a tutti coloro che utilizzano l'endpoint VPC l'accesso al bucket. Assicurati di limitare l'ambito del valore di Principale in base al tuo caso d'uso.
La policy di controllo dei servizi di AWS Organizations blocca l'accesso al bucket
Se l'account dell'utente ha attivato AWS Organizations, controlla le policy di controllo del servizio per assicurarti che l'accesso ad Amazon S3 sia consentito. Ad esempio, la seguente policy nega esplicitamente l'accesso ad Amazon S3 e genera un errore di accesso negato:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "s3:*", "Resource": "*" } ] }
Per ulteriori informazioni sulle funzionalità di AWS Organizations, consulta Attivazione di tutte le funzionalità della tua organizzazione.
L'oggetto non appartiene all'account AWS proprietario del bucket
Per impostazione predefinita, un oggetto S3 è di proprietà dell'account AWS che lo ha caricato. Questo vale anche quando il bucket è di proprietà di un altro account. Le autorizzazioni del bucket non si applicano automaticamente a un oggetto quando l'oggetto è di proprietà di un altro account.
Per risolvere gli errori di accesso negato relativi alla proprietà degli oggetti, prova le seguenti soluzioni:
- È consigliabile disattivare le liste di controllo degli accessi (ACL) per i tuoi bucket Amazon S3. Per disattivare gli ACL, applica l'impostazione applicata dal proprietario del bucket per S3 Object Ownership. Quando applichi questa impostazione, possiedi tutti gli oggetti nel tuo bucket e ne hai il pieno controllo.
- Per imporre la proprietà degli oggetti ai nuovi oggetti senza disattivare gli ACL, applica l'impostazione preferita del proprietario del bucket. Quando si applica questa impostazione, è consigliabile aggiornare la policy del bucket per richiedere l'ACL preimpostato di bucket-owner-fullcontrol per tutte le richieste PUT al bucket. Il proprietario dell'oggetto può concedere l'accesso al proprietario del bucket con un comando put-object-acl:
$ aws s3api put-object-acl --bucket examplebucket --key keyname --acl bucket-owner-full-control
**Nota:**Per accedere all'oggetto, il proprietario dell'oggetto deve concedere esplicitamente l'accesso al proprietario del bucket. Pertanto, utilizza l'account del proprietario dell'oggetto per eseguire questi comandi.
Hai attivato Richiedente paga per il bucket
Se hai attivato Richiedente paga per il tuo bucket, gli utenti di altri account devono specificare il parametro request-payer quando inviano richieste al tuo bucket. In caso contrario, tali utenti ricevono un errore di accesso negato.
Per risolvere questo errore, esegui le seguenti azioni:
- Per le richieste DELETE, GET, HEAD, POST e PUT, includi x-amz-request-payer: requester nell'intestazione.
- Per gli URL firmati, includi x-amz-request-payer=requester nella richiesta.
- Per i comandi dell'interfaccia a riga di comando di AWS, includi il parametro**--request-payer**. Esempio:
$ aws s3 cp exampleobject.jpg s3://DOC-EXAMPLE-BUCKET/exampleobject.jpg --request-payer requester
Hai approvato una policy di sessione che blocca l'accesso al bucket
Una policy di sessione è una policy in linea che è possibile creare e approvare rapidamente nella sessione durante l'assunzione del ruolo. È possibile approvare la policy di sessione per definire ulteriormente le autorizzazioni della sessione di ruolo. Le policy di sessione sono policy avanzate che vengono approvate come parametri quando si crea, a livello di programmazione, una sessione temporanea per un ruolo o un utente federato. Le autorizzazioni effettive della sessione sono l'intersezione tra le policy basate sull'identità del ruolo e la policy di sessione. Pertanto, assicurati che la policy di sessione che hai approvato non blocchi l'accesso al bucket S3.
Informazioni correlate
Come posso risolvere gli errori 403 Accesso negato di Amazon S3?

Contenuto pertinente
- AWS UFFICIALEAggiornata un anno fa