AWS Builder Center: Learn, Build and Connect with builders in the AWS community
AWS Builder Center is the official home for builders on AWS. Share and read what others are working on, follow people who inspire you, explore training and workshops, and find tools to support what you're building.
Come posso concedere a un utente in un altro account AWS l'accesso per caricare oggetti nel mio bucket Amazon S3?
Desidero concedere a un utente AWS Identity and Access Management (AWS IAM) in un altro account AWS l'accesso al mio bucket Amazon Simple Storage Service (Amazon S3). Inoltre, desidero concedere l'accesso multi-account in modo che l'utente possa caricare oggetti nel mio bucket Amazon S3.
Risoluzione
Nota: se ricevi errori quando esegui i comandi dell'Interfaccia della linea di comando AWS (AWS CLI), consulta Risoluzione degli errori per AWS CLI. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.
Per concedere l'accesso a un utente in un altro account per caricare oggetti in un bucket S3, aggiorna le policy IAM per l'utente o per il suo account. È consigliabile controllare l'accesso tramite l'account con la proprietà dell'oggetto applicata dal proprietario del bucket.
Se il bucket utilizza le liste di controllo degli accessi (ACL) anziché la proprietà applicata dal proprietario del bucket, valuta la possibilità di utilizzare la configurazione di Amazon S3 BucketOwnerEnforced, che disattiva le ACL. Controlla se il bucket utilizza le ACL con questo comando get-bucket-ownership-controls:
aws s3api get-bucket-ownership-controls --bucket DOC-EXAMPLE-BUCKET
Nota: sostituisci DOC-EXAMPLE-BUCKET con il nome del tuo bucket.
Se l'output mostra BucketOwnerPreferred o ObjectWriter invece di BucketOwnerEnforced, il bucket utilizza le ACL. L'autore del caricamento, non il proprietario del bucket, possiede gli oggetti caricati in più account.
Proprietà dell’oggetto applicata dal proprietario del bucket
Per concedere l'accesso a un bucket a livello di account, utilizza la proprietà dell'oggetto applicata dal proprietario del bucket. Per concedere a un utente IAM dell'Account A l'accesso per caricare oggetti in un bucket S3 dell'Account B, segui questi passaggi:
-
Nell'Account A, crea una policy IAM per gli utenti che devono accedere al bucket dell'Account B:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET", "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" ] } ] }Nota: sostituisci DOC-EXAMPLE-BUCKET con il nome del tuo bucket.
-
Dall'Account A, ottieni il nome della risorsa Amazon (ARN) dell'utente IAM.
-
Dall'Account B, crea una policy di bucket che conceda all'utente multi-account l'autorizzazione a caricare oggetti:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "CrossAccountUploadAccess", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/UploadData" }, "Action": [ "s3:PutObject" ], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" }, { "Sid": "CrossAccountListAccess", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/UploadData" }, "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET" } ] }Nota: per il valore Principal, assicurati di inserire l'ARN dell'utente IAM nell'Account A. Sostituisci DOC-EXAMPLE-BUCKET con il nome del tuo bucket.
Proprietà dell'oggetto applicata dall'ACL
Per concedere l'accesso a un bucket che utilizza la proprietà dell'oggetto applicata dall'ACL, concedi l'autorizzazione PutObjectAcl nella policy di bucket e nella policy dell'utente IAM.
-
Dall'Account A, collega una policy all'utente IAM. La policy deve consentire all'utente di eseguire le azioni PutObject e PutObjectAcl nel bucket dell'Account B:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:PutObjectAcl", "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET", "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" ] } ] }Nota: prima di specificare una ACL per il caricamento, devi avere l'autorizzazione s3:PutObjectAcl. Altrimenti ricevi un errore Access Denied quando carichi un oggetto con un'ACL, ad esempio l'ACL bucket-owner-full control.
-
Dall'Account B, collega una policy di bucket che conceda all'utente IAM nell'Account A l'autorizzazione per eseguire le azioni s3:PutObject e s3:PutObjectAcl:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DelegateS3ObjectAccess", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::999999999999:user/UploadData" }, "Action": [ "s3:PutObject", "s3:PutObjectAcl" ], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" }, { "Sid": "DelegateS3BucketAccess", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/UploadData" }, "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET" } ] }
Informazioni correlate
Esempio 2: il proprietario del bucket concede autorizzazioni per il bucket multi-account
- Argomenti
- Storage
- Lingua
- Italiano
Video correlati

