Prerequisiti per la disabilitazione delle ACL - Amazon Simple Storage Service

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Prerequisiti per la disabilitazione delle ACL

Se l'ACL del bucket concede l'accesso all'esterno del bucket Account AWS, prima di disabilitare gli ACL, è necessario migrare le autorizzazioni ACL del bucket alla policy del bucket e ripristinare l'ACL del bucket sull'ACL privato predefinito. Se non esegui la migrazione di queste ACL bucket, la richiesta per applicare l'impostazione Proprietario del bucket applicato per disabilitare le ACL non va a buon fine e restituisce il codice di errore InvalidBucketAclWithObjectOwnership. Ti consigliamo inoltre di rivedere le autorizzazioni ACL dell'oggetto e di migrarle alla policy di bucket. Per ulteriori informazioni su altri prerequisiti consigliati, consulta Prerequisiti per la disabilitazione delle ACL.

Ciascuna delle ACL di bucket e di oggetti esistenti ha un equivalente in una policy IAM. I seguenti esempi di policy di bucket mostrano come le autorizzazioni READ e WRITE per le ACL di bucket e di oggetti sono associate alle autorizzazioni IAM. Per ulteriori informazioni su come ogni ACL si traduce in autorizzazioni IAM, consulta Mappatura delle autorizzazioni ACL e delle autorizzazioni della policy di accesso.

Per esaminare e migrare le autorizzazioni ACL alle policy di bucket, consultare i seguenti argomenti.

Esempi di policy di bucket

Queste policy di bucket esemplificative mostrano come migrare le autorizzazioni ACL READ e WRITE di bucket e di oggetti per un Account AWS di terze parti ad una policy di bucket. Le ACL READ_ACP e WRITE_ACP sono meno rilevanti per le policy perché concedono autorizzazioni relative all'ACL (s3:GetBucketAcl,s3:GetObjectAcl,s3:PutBucketAcl, es3:PutObjectAcl).

Esempio — READ ACL per un bucket

Se il tuo bucket dispone di un READ ACL che concede l' Account AWS 111122223333autorizzazione a elencare i contenuti del bucket, puoi scrivere una policy del bucket che conceda le autorizzazioni per il tuo bucket. s3:ListBucket s3:ListBucketVersions s3:ListBucketMultipartUploads

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Permission to list the objects in a bucket", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:root" ] }, "Action": [ "s3:ListBucket", "s3:ListBucketVersions", "s3:ListBucketMultipartUploads" ], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET" } ] }
Esempio — ACL READ per ogni oggetto in un bucket

Se ogni oggetto nel tuo bucket ha un READ ACL a cui concede l'accesso Account AWS 111122223333, puoi scrivere una policy del bucket che s3:GetObject conceda e autorizzi a questo account per ogni oggetto nel tuo bucket. s3:GetObjectVersion

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Read permission for every object in a bucket", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:root" ] }, "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" } ] }

Questo elemento di risorsa esemplificativo consente l'accesso a un oggetto specifico.

"Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/OBJECT-KEY"
Esempio — WRITE ACL che concede le autorizzazioni per scrivere oggetti su un bucket

Se il tuo bucket ha un WRITE ACL che concede l' Account AWS 111122223333autorizzazione a scrivere oggetti nel tuo bucket, puoi scrivere una policy sul bucket che conceda l'autorizzazione per il tuo bucket. s3:PutObject

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Permission to write objects to a bucket", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:root" ] }, "Action": [ "s3:PutObject" ], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" } ] }

Utilizzo della console S3 per esaminare e migrare le autorizzazioni ACL

Per esaminare le autorizzazioni ACL di un bucket
  1. Accedi AWS Management Console e apri la console Amazon S3 all'indirizzo https://console.aws.amazon.com/s3/.

  2. Nell'elenco Bucket, seleziona il nome del bucket.

  3. Scegli la scheda Permissions (Autorizzazioni).

  4. Alla voce Lista di controllo accessi (ACL), controlla le autorizzazioni ACL del bucket.

Per esaminare le autorizzazioni ACL di un oggetto
  1. Accedi AWS Management Console e apri la console Amazon S3 all'indirizzo https://console.aws.amazon.com/s3/.

  2. Nell'elenco Buckets (Bucket), scegli il nome del bucket contenente l'oggetto.

  3. Nell'elenco Oggetti scegli il nome dell'oggetto.

  4. Scegli la scheda Permissions (Autorizzazioni).

  5. Alla voce Lista di controllo accessi (ACL), controlla le autorizzazioni ACL dell'oggetto.

Per migrare le autorizzazioni ACL e aggiornare l'ACL del bucket
  1. Accedi AWS Management Console e apri la console Amazon S3 all'indirizzo https://console.aws.amazon.com/s3/.

  2. Nell'elenco Bucket, seleziona il nome del bucket.

  3. Nella sezione Autorizzazioni, alla voce Policy del bucket, scegliere Modifica.

  4. Nella casella Policy, aggiungi o aggiorna la policy del bucket.

    Per le policy di bucket di esempio, consulta Esempi di policy di bucket e Procedure guidate di esempio.

  5. Seleziona Salvataggio delle modifiche.

  6. Aggiorna l'ACL del bucket per rimuovere le autorizzazioni ACL ad altri gruppi o Account AWS.

  7. Applica l'impostazione Proprietario del bucket applicato per Proprietà dell'oggetto.

Utilizzo di AWS CLI per rivedere e migrare le autorizzazioni ACL

  1. Per restituire l'ACL del bucket per il tuo bucket, usa il comando: get-bucket-acl AWS CLI

    aws s3api get-bucket-acl --bucket DOC-EXAMPLE-BUCKET

    Ad esempio, questa ACL di bucket concede l'accesso WRITE e READ a un account di terze parti. In questa ACL, l'account di terze parti è identificato dall'ID utente canonico. Per applicare l'impostazione Proprietario del bucket applicato e disabilitare le ACL, è necessario migrare queste autorizzazioni per l'account di terze parti a una policy del bucket.

    { "Owner": { "DisplayName": "DOC-EXAMPLE-ACCOUNT-OWNER", "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID" }, "Grants": [ { "Grantee": { "DisplayName": "DOC-EXAMPLE-ACCOUNT-OWNER", "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID", "Type": "CanonicalUser" }, "Permission": "FULL_CONTROL" }, { "Grantee": { "DisplayName": "THIRD-PARTY-EXAMPLE-ACCOUNT", "ID": "72806de9d1ae8b171cca9e2494a8d1335dfced4ThirdPartyAccountCanonicalUserID", "Type": "CanonicalUser" }, "Permission": "READ" }, { "Grantee": { "DisplayName": "THIRD-PARTY-EXAMPLE-ACCOUNT", "ID": "72806de9d1ae8b171cca9e2494a8d1335dfced4ThirdPartyAccountCanonicalUserID", "Type": "CanonicalUser" }, "Permission": "WRITE" } ] }

    Per altre ACL di esempio, consultare Procedure guidate di esempio.

  2. Migrazione delle autorizzazioni ACL del bucket a una policy di bucket:

    Questo esempio di policy di bucket concede autorizzazioni s3:PutObject e s3:ListBucket per un account di terze parti. Nella policy bucket, l'account di terze parti è identificato dall'ID (). Account AWS 111122223333

    aws s3api put-bucket-policy --bucket DOC-EXAMPLE-BUCKET --policy file://policy.json policy.json: { "Version": "2012-10-17", "Statement": [ { "Sid": "PolicyForCrossAccountAllowUpload", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:root" ] }, "Action": [ "s3:PutObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET", "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" } ] }

    Per ulteriori policy di bucket esemplificative, consulta Esempi di policy di bucket e Procedure guidate di esempio.

  3. Per restituire l'ACL per un oggetto specifico, utilizzate il get-object-acl AWS CLI comando.

    aws s3api get-object-acl --bucket DOC-EXAMPLE-BUCKET --key EXAMPLE-OBJECT-KEY
  4. Se necessario, migrare le autorizzazioni ACL degli oggetti alla policy del bucket.

    Questo elemento di risorsa esemplificativo concede l'accesso a un oggetto specifico in una policy di bucket.

    "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/EXAMPLE-OBJECT-KEY"
  5. Ripristina l'ACL per il bucket sull'ACL predefinito.

    aws s3api put-bucket-acl --bucket DOC-EXAMPLE-BUCKET --acl private
  6. Applica l'impostazione Proprietario del bucket applicato per Proprietà dell'oggetto.

Procedure guidate di esempio

Negli esempi seguenti viene illustrato come migrare le autorizzazioni ACL alle policy di bucket per casi d'uso specifici.

Concedere l'accesso al gruppo di consegna di log S3 per la registrazione di log degli accessi al server

Se desideri applicare l'impostazione Proprietario del bucket applicato per disabilitare le ACL per un bucket di destinazione di registrazione di log degli accessi a un server (noto anche come bucket target), è necessario migrare le autorizzazioni ACL bucket per il gruppo di consegna di log S3 al principale del servizio di registrazione di log (logging.s3.amazonaws.com) in una policy del bucket. Per ulteriori informazioni sulle autorizzazioni della distribuzione dei registri, consultare Autorizzazioni per la distribuzione dei registri.

Questa ACL del bucket concede l'accesso WRITE e READ_ACP al gruppo di distribuzione di registri S3:

{ "Owner": { "DisplayName": "DOC-EXAMPLE-ACCOUNT-OWNER", "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID" }, "Grants": [ { "Grantee": { "Type": "CanonicalUser", "DisplayName": "DOC-EXAMPLE-ACCOUNT-OWNER", "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID" }, "Permission": "FULL_CONTROL" }, { "Grantee": { "Type": "Group", "URI": "http://acs.amazonaws.com/groups/s3/LogDelivery" }, "Permission": "WRITE" }, { "Grantee": { "Type": "Group", "URI": "http://acs.amazonaws.com/groups/s3/LogDelivery" }, "Permission": "READ_ACP" } ] }
Per migrare le autorizzazioni ACL del bucket per il gruppo di distribuzione di registri S3 al principale del servizio di registrazione in una policy di bucket
  1. Aggiungi la seguente policy di bucket al bucket di destinazione, sostituendo i valori di esempio.

    aws s3api put-bucket-policy --bucket DOC-EXAMPLE-BUCKET --policy file://policy.json policy.json: { { "Version": "2012-10-17", "Statement": [ { "Sid": "S3ServerAccessLogsPolicy", "Effect": "Allow", "Principal": { "Service": "logging.s3.amazonaws.com" }, "Action": [ "s3:PutObject" ], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/EXAMPLE-LOGGING-PREFIX*", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:s3:::SOURCE-BUCKET-NAME" }, "StringEquals": { "aws:SourceAccount": "SOURCE-AWS-ACCOUNT-ID" } } } ] }
  2. Ripristina l'ACL per il bucket di destinazione all'ACL predefinita.

    aws s3api put-bucket-acl --bucket DOC-EXAMPLE-BUCKET --acl private
  3. Applica l'impostazione Proprietario del bucket applicato per Proprietà dell'oggetto al bucket di destinazione.

Concedere l'accesso pubblico in lettura agli oggetti nel bucket

Se le ACL di oggetto consentono l'accesso pubblico in lettura a tutti gli oggetti del bucket, è possibile migrare queste autorizzazioni ACL a una policy di bucket.

Questa ACL di oggetto concede l'accesso pubblico in lettura a un oggetto in un bucket:

{ "Owner": { "DisplayName": "DOC-EXAMPLE-ACCOUNT-OWNER", "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID" }, "Grants": [ { "Grantee": { "DisplayName": "DOC-EXAMPLE-ACCOUNT-OWNER", "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID", "Type": "CanonicalUser" }, "Permission": "FULL_CONTROL" }, { "Grantee": { "Type": "Group", "URI": "http://acs.amazonaws.com/groups/global/AllUsers" }, "Permission": "READ" } ] }
Per migrare le autorizzazioni ACL di lettura pubblica a una policy di bucket
  1. Per concedere l'accesso in lettura pubblica a tutti gli oggetti nel bucket, aggiungere la seguente policy di bucket, sostituendo i valori di esempio.

    aws s3api put-bucket-policy --bucket DOC-EXAMPLE-BUCKET --policy file://policy.json policy.json: { "Version": "2012-10-17", "Statement": [ { "Sid": "PublicReadGetObject", "Effect": "Allow", "Principal": "*", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" ] } ] }

    Per concedere l'accesso pubblico a un oggetto specifico in una policy di bucket, utilizzare il seguente formato per l'elemento Resource.

    "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/OBJECT-KEY"

    Per concedere l'accesso pubblico a tutti gli oggetti con un prefisso specifico, utilizzare il seguente formato per l'elemento Resource.

    "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/PREFIX/*"
  2. Applica l'impostazione Proprietario del bucket applicato per Proprietà dell'oggetto.

Concedi ad Amazon ElastiCache for Redis l'accesso al tuo bucket S3

Puoi esportare il tuo backup ElastiCache per Redis in un bucket S3, che ti consente di accedere al backup dall'esterno. ElastiCache Per esportare il backup in un bucket S3, devi concedere le ElastiCache autorizzazioni per copiare un'istantanea nel bucket. Se hai concesso le autorizzazioni a un ACL ElastiCache in un bucket, devi migrare queste autorizzazioni a una policy del bucket prima di applicare l'impostazione applicata dal proprietario del bucket per disabilitare gli ACL. Per ulteriori informazioni, consulta Concedi ElastiCache l'accesso al tuo bucket Amazon S3 nella Amazon ElastiCache User Guide.

L'esempio seguente mostra le autorizzazioni ACL del bucket a cui concedono le autorizzazioni. ElastiCache

{ "Owner": { "DisplayName": "DOC-EXAMPLE-ACCOUNT-OWNER", "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID" }, "Grants": [ { "Grantee": { "DisplayName": "DOC-EXAMPLE-ACCOUNT-OWNER", "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID", "Type": "CanonicalUser" }, "Permission": "FULL_CONTROL" }, { "Grantee": { "DisplayName": "aws-scs-s3-readonly", "ID": "540804c33a284a299d2547575ce1010f2312ef3da9b3a053c8bc45bf233e4353", "Type": "CanonicalUser" }, "Permission": "READ" }, { "Grantee": { "DisplayName": "aws-scs-s3-readonly", "ID": "540804c33a284a299d2547575ce1010f2312ef3da9b3a053c8bc45bf233e4353", "Type": "CanonicalUser" }, "Permission": "WRITE" }, { "Grantee": { "DisplayName": "aws-scs-s3-readonly", "ID": "540804c33a284a299d2547575ce1010f2312ef3da9b3a053c8bc45bf233e4353", "Type": "CanonicalUser" }, "Permission": "READ_ACP" } ] }
Per migrare le autorizzazioni ACL del bucket per Redis a una policy bucket ElastiCache
  1. Aggiungere la seguente policy di bucket al bucket di destinazione, sostituendo i valori di esempio.

    aws s3api put-bucket-policy --bucket DOC-EXAMPLE-BUCKET --policy file://policy.json policy.json: "Id": "Policy15397346", "Statement": [ { "Sid": "Stmt15399483", "Effect": "Allow", "Principal": { "Service": "Region.elasticache-snapshot.amazonaws.com" }, "Action": [ "s3:PutObject", "s3:GetObject", "s3:ListBucket", "s3:GetBucketAcl", "s3:ListMultipartUploadParts", "s3:ListBucketMultipartUploads" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET", "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" ] } ] }
  2. Resettare l'ACL per il bucket all'ACL di default:

    aws s3api put-bucket-acl --bucket DOC-EXAMPLE-BUCKET --acl private
  3. Applica l'impostazione Proprietario del bucket applicato per Proprietà dell'oggetto.