In che modo è possibile risolvere gli errori 403 di accesso negato da Amazon S3?
I miei utenti stanno cercando di effettuare l'accesso agli oggetti nel mio bucket di Amazon Simple Storage Service (Amazon S3), ma Amazon S3 segnala un errore 403 Accesso negato. In che modo posso risolvere l'errore?
Risoluzione
Utilizzare i documenti di Automazione AWS Systems Manager
Utilizza il documento di automazione AWSSupport-TroubleshootS3PublicRead su AWS Systems Manager. Questo documento di automazione ti aiuta a diagnosticare problemi relativi agli oggetti da un bucket pubblico S3 da te specificato. Puoi anche utilizzare il documento di automazione su AWSSupport-TroubleshootS3AccessSameAccount su AWS Systems Manager per ricevere aiuto per diagnosticare l'accesso negato dal tuo bucket S3. AWSSupport-TroubleshootS3AccessSameAccount non valuta le autorizzazioni per le risorse tra account.
Controlla la proprietà di bucket e oggetti
Per gli errori AccessDenied provenienti dalle richieste GetObject o HeadObject, verifica se l'oggetto è anche di proprietà del proprietario del bucket. Inoltre, verifica se il proprietario del bucket dispone delle autorizzazioni della lista di controllo accessi (ACL) in lettura o controllo completo.
Conferma l'account che è proprietario degli oggetti
Di default, un oggetto S3 è di proprietà dell'account AWS che lo ha caricato. anche quando il bucket è di proprietà di un altro account. Se altri account possono caricare oggetti nel tuo bucket, verifica quale account è proprietario degli oggetti a cui i tuoi utenti non possono accedere.
Nota: se ricevi un messaggio di errore durante l'esecuzione dei comandi di AWS CLI, assicurati di utilizzare la versione più recente di AWS CLI.
1. Esegui il comando AWS Command Line Interface (AWS CLI) list-buckets per ottenere l'ID canonico di Amazon S3 per il tuo account eseguendo una query per ID proprietario.
aws s3api list-buckets --query "Owner.ID"
2. Esegui il comando list-objects per ottenere l'ID canonico di Amazon S3 dell'account proprietario dell'oggetto a cui gli utenti non possono accedere. Sostituisci DOC-EXAMPLE-BUCKET con il nome del tuo bucket e exampleprefix con il valore del tuo prefisso.
aws s3api list-objects --bucket DOC-EXAMPLE-BUCKET --prefix exampleprefix
Suggerimento: è possibile utilizzare il comando list-objects per controllare numerosi oggetti.
3. Se gli ID canonici non corrispondono, allora non sei il proprietario dell'oggetto. Il proprietario dell'oggetto può concederti il pieno controllo dell'oggetto eseguendo il comando put-object-acl. Sostituisci DOC-EXAMPLE-BUCKET con il nome del bucket che contiene gli oggetti. Sostituisci exampleobject.jpg con il nome della tua chiave.
aws s3api put-object-acl --bucket DOC-EXAMPLE-BUCKET --key exampleobject.jpg --acl bucket-owner-full-control
4. Una volta che il proprietario dell'oggetto ha cambiato l'ACL dell'oggetto in bucket-owner-full-control, il proprietario del bucket può accedere all'oggetto. Tuttavia, la sola modifica dell'ACL non cambia la proprietà dell'oggetto. Per cambiare il proprietario dell'oggetto nell'account del bucket, esegui il comando cp dall'account del bucket per copiare l'oggetto su se stesso.
Copia di tutti gli oggetti nuovi in un bucket di un altro account
2. Attiva e imposta la proprietà dell’oggetto S3 sul proprietario del bucket preferitonella Console di gestione AWS.
In questo modo, il proprietario dell'oggetto diventa automaticamente proprietario del bucket quando l'oggetto viene caricato con l'ACL di controllo completo del proprietario del bucket.
Crea un ruolo AWS Identity and Access Management (IAM) con autorizzazioni per il tuo bucket
Per le autorizzazioni per più account, crea un ruolo IAM nel tuo account con autorizzazioni per il tuo bucket. Quindi, concedi a un altro account AWS l'autorizzazione ad assumere quel ruolo IAM. Per ulteriori informazioni, guarda il Tutorial: Delegare l'accesso su più account AWS con i ruoli IAM.
Controlla la policy del bucket o le policy dell'utente IAM
Esamina la policy del bucket o le policy dell'utente IAM associate per eventuali istruzioni che potrebbero negare l'accesso. Verifica che le richieste al tuo bucket soddisfino le condizioni della policy del bucket o delle policy IAM. Controlla eventuali istruzioni di diniego errate, operazioni mancanti o spaziature errate in una policy.
Condizioni delle istruzioni di diniego
Controlla le istruzioni deny per le condizioni che bloccano l'accesso in base a quanto segue:
- Autenticazione a più fattori (MFA)
- Chiavi di crittografia
- Indirizzo IP specifico
- Endpoint VPC o VPC specifici
- Utenti o ruoli IAM specifici
Nota: se richiedi la MFA e gli utenti inviano richieste tramite la AWS CLI, assicurati che gli utenti configurino l'AWS CLI per l'utilizzo di MFA.
Ad esempio, nella seguente policy del bucket, Statement1 consente l'accesso pubblico per scaricare oggetti (s3:GetObject) da DOC-EXAMPLE-BUCKET. Tuttavia, Statement2 nega esplicitamente a tutti l'accesso per scaricare oggetti da DOC-EXAMPLE-BUCKET, a meno che la richiesta non provenga dall'endpoint VPC vpce-1a2b3c4d. In questo caso ha precedenza l'enunciato di diniego. Ciò significa che agli utenti che cercano di scaricare oggetti al di fuori di vpce-1a2b3c4d viene negato l'accesso.
{
"Id": "Policy1234567890123",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Statement1",
"Action": [
"s3:GetObject"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*",
"Principal": "*"
},
{
"Sid": "Statement2",
"Action": [
"s3:GetObject"
],
"Effect": "Deny",
"Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*",
"Condition": {
"StringNotEquals": {
"aws:SourceVpce": "vpce-1a2b3c4d"
}
},
"Principal": "*"
}
]
}
Policy del bucket o policy IAM
Controlla che la policy del bucket o le policy IAM permettano le azioni di Amazon S3 necessarie agli utenti. Per esempio, la seguente policy di bucket non include l'autorizzazione all'operazione s3:PutObjectAcl. Se l'utente IAM cerca di modificare la lista di controllo accessi (ACL) di un oggetto, l'utente riceverà un messaggio di errore di accesso negato.
{
"Id": "Policy1234567890123",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1234567890123",
"Action": [
"s3:PutObject"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*",
"Principal": {
"AWS": [
"arn:aws:iam::111122223333:user/Dave"
]
}
}
]
}
Altri errori delle policy
Controlla che non ci siano spazi in più o ARN non corretti nella policy del bucket o nelle policy dell'utente IAM.
Per esempio, se una policy IAM contiene uno spazio in più nell'Amazon Resource Name (ARN) arn:aws:s3::: DOC-EXAMPLE-BUCKET/*. In questo caso, l'ARN viene valutato erroneamente come arn:aws:s3: :::%20DOC-EXAMPLE-BUCKET/ e dà all'utente IAM un errore di accesso negato.
Conferma che i limiti delle autorizzazioni IAM consentano l'accesso ad Amazon S3
Controlla i limiti delle autorizzazioni IAM impostati sulle identità IAM che stanno tentando di accedere al bucket. Conferma che i limiti delle autorizzazioni IAM permettano l'accesso ad Amazon S3.
Controlla le impostazioni per il blocco dell’accesso pubblico di Amazon S3 del bucket
Se ricevi errori di accesso negato nelle richieste di lettura pubbliche che dovrebbero essere consentite, controlla le impostazioni per il blocco dell’accesso pubblico di Amazon S3 del bucket.
Controlla le impostazioni per il blocco dell’accesso pubblico S3 sia a livello di account sia di bucket. Queste impostazioni possono avere la precedenza sulle autorizzazioni che consentono l'accesso alla lettura pubblica. Il blocco dell'accesso pubblico di Amazon S3 può essere applicato a bucket singoli o ad account AWS.
Controlla le credenziali dell'utente
Controlla le credenziali configurate dall'utente per accedere ad Amazon S3. I kit SDK AWS e l'AWS CLI devono essere configurati per utilizzare le credenziali dell'utente o del ruolo IAM con accesso al bucket.
Per l'AWS CLI, esegui il comando configure per verificare le credenziali configurate:
aws configure list
Se gli utenti accedono al bucket attraverso un'istanza Amazon Elastic Compute Cloud (Amazon EC2), verifica che l'istanza utilizzi il ruolo corretto. Connettiti all'istanza, quindi esegui il comando get-caller-identity:
aws sts get-caller-identity
Controlla le credenziali di sicurezza provvisorie
Se gli utenti ricevono errori di accesso negato dalle credenziali di sicurezza temporanee concesse tramite il Servizio di token di sicurezza AWS (AWS STS), controlla la policy di sessione associata. Quando un amministratore crea delle credenziali di sicurezza temporanee utilizzando la chiamata API AssumeRole o il comando assume-role, può passare policy specifiche della sessione.
Per trovare le policy di sessione associate agli errori di accesso negato di Amazon S3, cerca gli eventi AssumeRole nella cronologia degli eventi di AWS CloudTrail. Assicurati di cercare gli eventi AssumeRole nello stesso arco di tempo in cui hanno avuto luogo le richieste di accesso ad Amazon S3 non riuscite. Quindi controlla il campo requestParameters nei registri CloudTrail rilevanti per qualsiasi parametro policy o policyArns. Verifica che la policy associata o l'ARN della policy concedano le autorizzazioni necessarie per Amazon S3.
Ad esempio, il seguente frammento di un registro CloudTrail mostra che le credenziali temporanee includono una policy di sessione in linea che concede autorizzazioni s3:GetObject aDOC-EXAMPLE-BUCKET:
"requestParameters": {
"roleArn": "arn:aws:iam::123412341234:role/S3AdminAccess",
"roleSessionName": "s3rolesession",
"policy": "{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Action": [
"s3:GetObject"
],
"Resource": ["arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"]
}
}
]
}
"
}
Assicurati che la policy degli endpoint Amazon VPC includa le autorizzazioni corrette per accedere ai bucket e agli oggetti S3
Se gli utenti accedono al bucket con un'istanza EC2 instradata attraverso un endpoint VPC, controlla la policy dell'endpoint VPC.
Ad esempio, la seguente policy dell'endpoint VPC consente l'accesso solo a DOC-EXAMPLE-BUCKET. Gli utenti che inviano richieste tramite questo endpoint VPC non possono accedere a un altro bucket.
{
"Id": "Policy1234567890123",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1234567890123",
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:ListBucket"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::DOC-EXAMPLE-BUCKET",
"arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
],
"Principal": "*"
}
]
}
Controlla la policy IAM del punto di accesso Amazon S3
Se utilizzi un punto di accesso Amazon S3 per gestire l'accesso al tuo bucket, controlla la policy IAM del punto di accesso.
Le autorizzazioni concesse in una policy del punto di accesso sono valide solo se la policy del bucket sottostante consente anche lo stesso accesso. Conferma che la policy del bucket e la policy del punto di accesso concedano le autorizzazioni corrette.
Conferma che all'oggetto non manchi l'oggetto o che non contenga caratteri speciali
Controlla che l'oggetto richiesto esista nel bucket, altrimenti la richiesta non trova l'oggetto e Amazon S3 dà per scontato che l'oggetto non esista. Riceverai un errore di accesso negato (anziché errori 404 Non trovato) se non disponi delle autorizzazioni s3:ListBucket corrette.
Un oggetto con un carattere speciale (ad esempio uno spazio) richiede una gestione speciale per recuperare l'oggetto.
Esegui il comando della AWS CLI head-object per verificare se esiste un oggetto nel bucket. Sostituisci DOC-EXAMPLE-BUCKET con il nome del bucket che desideri controllare.
aws s3api head-object --bucket DOC-EXAMPLE-BUCKET --key exampleobject.jpg
Se l'oggetto esiste nel bucket, l'errore di accesso negato non nasconde un errore 404 Non trovato. Verifica altri requisiti di configurazione per risolvere l'errore di Accesso negato.
Se l'oggetto non esiste nel bucket, l'errore di accesso negato nasconde un errore 404 Non trovato. Risolvi il problema relativo all'oggetto mancante.
Controlla la configurazione della crittografia del servizio di gestione delle chiavi AWS (KMS)
Tieni presente quanto segue sulla crittografia di AWS KMS (SSE-KMS) :
- Se un utente IAM non riesce ad accedere a un oggetto per cui dispone di tutte le autorizzazioni, controlla se l'oggetto è crittografato da SSE-KMS. È possibile utilizzare la console Amazon S3 per visualizzare le proprietà dell'oggetto, che includono le informazioni di crittografia dell'oggetto lato server.
- Se l'oggetto è crittografato con SSE-KMS, accertati che la policy delle chiave AWS KMS conceda all'utente IAM le autorizzazioni minime richieste per l'utilizzo della chiave. Ad esempio, se l'utente IAM utilizza la chiave solo per scaricare un oggetto S3, l'utente IAM deve disporre delle autorizzazioni kms:Decrypt. Per ulteriori informazioni, consultaConsente l'accesso all'account AWS e attiva le policy IAM.
- Se l'identità e la chiave IAM si trovano nello stesso account, le autorizzazioni kms:Decrypt devono essere concesse utilizzando la policy delle chiavi. La policy delle chiavi deve fare riferimento alla stessa identità IAM della policy IAM.
- Se l'utente IAM appartiene a un account diverso dalla chiave AWS KMS, è necessario che queste autorizzazioni siano concesse anche alla policy IAM. Ad esempio, per scaricare gli oggetti crittografati SSE-KMS, le autorizzazioni kms:Decrypt devono essere specificate sia nella policy della chiave sia nella policy IAM. Per ulteriori informazioni sull'accesso multi-account tra l'utente IAM e la chiave AWS KMS, consulta Consentire agli utenti di altri account di utilizzare una chiave AWS KMS.
Conferma che il parametro request-payer sia specificato dagli utenti (se utilizzi pagamento a carico del richiedente)
Se nel tuo bucket è attivata la funzione Pagamento a carico del richiedente, gli utenti di altri account devono specificare il parametro request-payer quando inviano richieste al tuo bucket. Per verificare se la funzione Pagamento a carico del richiedente è attivata, puoi utilizzare la console Amazon S3 per visualizzare le proprietà del tuo bucket.
Il seguente esempio di comando della AWS CLI include il parametro corretto per accedere a un bucket tra account con Pagamenti a carico del richiedente:
aws s3 cp exampleobject.jpg s3://DOC-EXAMPLE-BUCKET/exampleobject.jpg --request-payer requester
Controlla la tua policy di controllo del servizio AWS Organizations
Se utilizzi AWS Organizations, controlla le policy di controllo dei servizi per assicurarti che l'accesso ad Amazon S3 sia permesso. Le policy di controllo del servizio specificano le autorizzazioni massime per gli account interessati. Per esempio, la policy seguente nega esplicitamente l'accesso ad Amazon S3 e restituisce un messaggio di errore di accesso negato:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Action": "s3:*",
"Resource": "*"
}
]
}
Per ulteriori informazioni sulle caratteristiche di AWS Organizations, consultaAttivazione di tutte le caratteristiche nella tua organizzazione.
Informazioni correlate
Video correlati

Contenuto pertinente
- AWS UFFICIALEAggiornata 2 anni fa
- AWS UFFICIALEAggiornata 2 mesi fa