Prerequisiti per la disabilitazione delle ACL - Amazon Simple Storage Service

Prerequisiti per la disabilitazione delle ACL

Se l'ACL del tuo bucket garantisce l'accesso al di fuori del tuo Account AWS, prima di disabilitare le ACL, è necessario migrare le autorizzazioni ACL del bucket alla policy di bucket e reimpostare l'ACL del bucket all'ACL privato predefinito. Se non esegui la migrazione di queste ACL di bucket, la richiesta di eseguire l'impostazione proprietario del bucket applicato verrà respinta e restituirà 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 — ACL READ per un bucket

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

{ "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 bucket ha un ACL READ che consente l'accesso all'Account AWS 111122223333, è possibile scrivere una policy del bucket che conceda autorizzazione s3:GetObject e s3:GetObjectVersion a questo account per ogni oggetto nel tuo bucket.

{ "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 — ACL di scrittura che concede le autorizzazioni per scrivere oggetti su un bucket

Se il tuo bucket ha un ACL di scrittura che garantisce all'Account AWS 111122223333 l'autorizzazione a scrivere oggetti nel bucket, è possibile scrivere una policy di bucket che conceda l'autorizzazione s3:PutObject per il tuo bucket.

{ "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 alla 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. Scegliere 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 alla 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. Scegliere 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 alla 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 Salva modifiche.

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

  7. Eseguire l'impostazione proprietario del bucket applicato per Object Ownership.

Utilizzo della AWS CLI per esaminare e migrare le autorizzazioni ACL

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

    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 eseguire l'impostazione proprietario del bucket applicato e disabilitare le ACL, è necessario migrare queste autorizzazioni per l'account di terze parti a una policy di 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 di bucket, l'account di terze parti è identificato dall'ID dell'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, utilizzare il comando AWS CLI get-object-acl.

    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. Eseguire l'impostazione proprietario del bucket applicato per Object Ownership.

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 distribuzione di registri S3 per la registrazione degli accessi al server

Se si desidera eseguire l'impostazione proprietario del bucket applicato per disabilitare le ACL per un bucket di destinazione di registrazione dell'accesso al server, è necessario migrare le autorizzazioni ACL del bucket per il gruppo di distribuzione di registri S3 al principal del servizio di registrazione (logging.s3.amazonaws.com) in una policy di 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 principal del servizio di registrazione in una policy di bucket
  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: { { "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. Resettare l'ACL per il bucket all'ACL di default.

    aws s3api put-bucket-acl --bucket DOC-EXAMPLE-BUCKET --acl private
  3. Eseguire l'impostazione proprietario del bucket applicato per Object Ownership nel tuo 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. Eseguire l'impostazione proprietario del bucket applicato per Object Ownership.

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

È possibile esportare il backup di ElastiCache per Redis in un bucket S3, che fornisce l'accesso al backup al di fuori di ElastiCache. Per esportare il backup in un bucket S3, è necessario concedere ad ElastiCache le autorizzazioni per copiare uno snapshot nel bucket. Se sono state concesse le autorizzazioni a ElastiCache in un ACL di bucket, è necessario migrare queste autorizzazioni a una policy di bucket prima di eseguire l'impostazione proprietario del bucket applicato per disabilitare le ACL. Per ulteriori informazioni, consulta Concedi a ElastiCache l'accesso al bucket Amazon S3 nella Guida per l'utente di Amazon ElastiCache.

L'esempio seguente mostra le autorizzazioni ACL di bucket che concedono le autorizzazioni a 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 di bucket per ElastiCache per Redis a una policy di bucket
  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. Eseguire l'impostazione proprietario del bucket applicato per Object Ownership.