Quali sono alcuni casi d'uso per l'utilizzo di un'ACL oggetto in Amazon S3?

Ultimo aggiornamento: 21/12/2021

Desidero delegare l'accesso ai miei oggetti Amazon Simple Storage Service (Amazon S3) utilizzando una lista di controllo accessi (ACL). Quali sono alcuni casi d'uso per l'utilizzo di un'ACL oggetto o bucket?

Risoluzione

Le liste di controllo accessi (ACL) di Amazon S3 consentono di gestire l'accesso a bucket e oggetti S3. Ogni bucket e oggetto S3 ha un'ACL collegata come risorsa secondaria. Le ACL definiscono a quali account o gruppi AWS viene concesso l'accesso e il tipo di accesso. Quando invii una richiesta per una risorsa, Amazon S3 controlla l'ACL corrispondente per confermare che disponi delle autorizzazioni di accesso richieste.

La maggior parte dei casi d'uso in cui l'accesso è concesso a oggetti o bucket non richiede più le ACL. Tuttavia, in alcuni casi, l'uso di un'ACL potrebbe essere più appropriato. Di seguito sono riportati alcuni casi d'uso di esempio in cui potrebbe essere necessario utilizzare un'ACL per gestire l'accesso a bucket o oggetti:

  • Un'ACL oggetto è l'unico modo per concedere l'accesso a oggetti che non sono di proprietà del proprietario del bucket. Per impostazione predefinita, quando un altro account AWS carica un oggetto nel tuo bucket S3, quell'account (l'autore dell'oggetto) possiede l'oggetto. Inoltre, l'autore dell'oggetto ha accesso all'oggetto e può concedere ad altri utenti l'accesso ad esso utilizzando le ACL.
  • Le ACL oggetto possono essere utilizzate quando è necessario gestire le autorizzazioni a livello di oggetto. Ad esempio, se è necessario delegare l'accesso a un'intera cartella, è possibile utilizzare una policy di bucket. Tuttavia, se le autorizzazioni di accesso variano in base all'oggetto, la concessione di autorizzazioni a singoli oggetti utilizzando una policy di bucket potrebbe non essere pratica. Pertanto, un'ACL oggetto potrebbe essere più appropriata per la gestione dell'accesso agli oggetti.
  • Se desideri che nuovi oggetti vengano scritti nel bucket da altri account AWS (e la tua ACL non è disabilitata), applica l'impostazione preferita del proprietario del bucket. Con questa impostazione, i nuovi oggetti scritti con l'ACL bucket-owner-full-control sono automaticamente di proprietà del proprietario del bucket (e non dell'autore dell'oggetto). Tutti gli altri comportamenti delle ACL rimangono in vigore.
    Nota: per disabilitare un'ACL, utilizza l'impostazione applicata dal proprietario del bucket per S3 Object Ownership. Quando le ACL sono disabilitate, puoi gestire facilmente un bucket con oggetti caricati (tra account) da account AWS diversi utilizzando le policy del bucket. Se il bucket utilizza l'impostazione applicata dal proprietario del bucket per S3 Object Ownership, le richieste di impostazione o aggiornamento delle ACL non riescono, restituendo il codice di errore AccessControlListNotSupported. Tuttavia, le richieste di lettura delle ACL saranno comunque supportate.
  • Le ACL bucket possono essere utilizzate per concedere autorizzazioni a servizi AWS come Amazon CloudFront per eseguire determinate azioni sul tuo bucket. Ad esempio, quando crei o aggiorni una implementazione CloudFront e abiliti la registrazione CloudFront, CloudFront aggiorna l'ACL del bucket. Questo aggiornamento fornisce all'account awslogsdelivery l'autorizzazione FULL_CONTROL per scrivere i registri nel tuo bucket. Per ulteriori informazioni, consulta Autorizzazioni necessarie per configurare la registrazione standard e per accedere ai file di registro.

Applicazione di ACL agli oggetti

Esempio 1

Se stai caricando un oggetto in un bucket in un altro account AWS, utilizza l'ACL predefinita bucket-owner-full-control:

aws s3api put-object --bucket destination_bucket --key dir-1/myfile --body dir-1/myfile --acl bucket-owner-full-control

L'ACL predefinita bucket-owner-full-control fornisce l'accesso all'account del proprietario del bucket.

Nota: Amazon S3 supporta una serie di ACL predefinite noti come ACL predefinite (come l'ACL bucket-owner-full-control utilizzata in questo esempio).

Esempio 2

Il programma di caricamento oggetti può aggiungere un'ACL anche per concedere autorizzazioni di lettura ad altri account AWS:

aws s3api put-object --bucket destination_mybucket --key dir/myfile --body dir/myfile --grant-read emailaddress=user1@amazon.com,id=canonical-id-of-account

Nota: puoi specificare un beneficiario solo utilizzando indirizzi e-mail nelle seguenti regioni AWS: Virginia settentrionale, California settentrionale, Oregon, Singapore, Sydney, Tokyo, Irlanda e San Paolo.

Esempio 3

È possibile anche aggiornare l'ACL di un oggetto esistente:

aws s3api put-object-acl --bucket destination_bucket --key dir/myfile --acl bucket-owner-full-control

Esempio 4

Amazon S3 ha una serie di gruppi predefiniti. È possibile utilizzare le ACL oggetto per concedere autorizzazioni agli utenti che fanno parte di questi gruppi predefiniti.

Ad esempio, puoi concedere l'accesso agli oggetti a qualsiasi utente AWS autenticato concedendo l'accesso al gruppo Utenti autenticati:

aws s3api put-object --bucket destination_mybucket --key dir/myfile --body dir/myfile --grant-read uri=http://acs.amazonaws.com/groups/global/AuthenticatedUsers

Nota: prima di concedere l'accesso al gruppo Utenti autenticati, disabilita le impostazioni di blocco accesso pubblico per le ACL sia a livello di account che di bucket. In caso contrario, sarà visualizzato un messaggio di errore Accesso negato. Per risolvere gli errori Accesso negato relativi alle ACL, consulta Un utente autorizzato ad aggiungere oggetti al mio bucket Amazon S3 riceve errori di accesso negato. Perché?