Controllo della proprietà degli oggetti e disabilitazione degli ACL per il bucket
S3 Proprietà dell'oggetto è un'impostazione a livello di bucket Amazon S3 che è possibile utilizzare per controllare la proprietà degli oggetti caricati nel bucket e per disabilitare o abilitare le liste di controllo degli accessi (ACL). Per impostazione predefinita, Proprietà dell'oggetto è impostata su Proprietario del bucket applicato e tutte le ACL sono disabilitate. Quando le ACL sono disabilitate, il proprietario del bucket dispone di tutti gli oggetti nel bucket e gestisce l'accesso ai dati in maniera esclusiva utilizzando policy di gestione dell'accesso.
La maggior parte dei casi d’uso moderni in Amazon S3 non richiede più l’uso di ACL ed è consigliabile mantenere le ACL disabilitate tranne in circostanze in cui è necessario controllare l’accesso individualmente per ciascun oggetto. Con le ACL disabilitate, puoi utilizzare le policy per controllare più facilmente l'accesso a tutti gli oggetti nel bucket, a prescindere da chi ha caricato gli oggetti nel bucket.
Object Ownership ha tre impostazioni che è possibile utilizzare per controllare la proprietà degli oggetti caricati nel bucket e disabilitare o abilitare le ACL:
ACL disabilitate
-
Proprietario del bucket applicato (impostazione predefinita): le ACL sono disabilitate e il proprietario del bucket possiede automaticamente e ha il controllo completo di ogni oggetto nel bucket. Le ACL non influiscono più sulle autorizzazioni per i dati nel bucket S3. Il bucket utilizza le policy per definire il controllo degli accessi.
ACL abilitate
-
Proprietario del bucket preferito - Il proprietario del bucket possiede e ha il pieno controllo sui nuovi oggetti che altri account scrivono sul bucket con l'ACL
bucket-owner-full-controlpredefinita. -
Object writer – L'Account AWS che carica un oggetto lo possiede, ne ha il pieno controllo e può concedere ad altri utenti l'accesso tramite ACL.
Per la maggior parte dei casi d'uso moderni in S3, è consigliabile mantenere le ACL disabilitate applicando l'impostazione Proprietario del bucket applicato e utilizzando la policy del bucket per condividere i dati con utenti esterni all'account in base alle esigenze. Questo approccio semplifica la gestione delle autorizzazioni. È possibile disabilitare le ACL su bucket appena creati e già esistenti. Per i bucket appena creati, le ACL sono disabilitate per impostazione predefinita. Nel caso di un bucket esistente che contiene già oggetti, dopo aver disabilitato le ACL, le ACL oggetto e bucket non faranno più parte di una valutazione dell'accesso, che verrà concesso o negato sulla base delle policy. Per i bucket esistenti, è possibile riattivare le ACL in qualsiasi momento dopo averle disabilitate e le ACL bucket e oggetto preesistenti verranno ripristinate.
Prima di disabilitare le ACL, ti consigliamo di rivedere la policy del bucket per assicurarti che copra tutti i modi in cui intendi concedere l'accesso al tuo bucket al di fuori del tuo account. Dopo aver disabilitato le ACL, il bucket accetta solo le richieste PUT che non specificano una ACL o le richieste PUT con ACL di controllo completo del proprietario del bucket, ad esempio la ACL predefinite bucket-owner-full-control o forme equivalenti di questa ACL espresse in XML. Le applicazioni esistenti che supportano le ACL di controllo completo del proprietario del bucket non subiranno alcun impatto. Le richieste PUT contenenti altre ACL (ad esempio, autorizzazioni personalizzate a determinatiAccount AWS) saranno respinte e restituiranno un errore 400 con il codice di errore AccessControlListNotSupported.
Al contrario, un bucket con l'impostazione Bucket owner preferred continua ad accettare e rispettare le ACL di bucket e oggetti. Con questa impostazione, nuovi oggetti scritti con l'ACL predefinita bucket-owner-full-control saranno automaticamente di proprietà del proprietario del bucket anziché dell'object writer. Tutti gli altri comportamenti ACL rimangono in vigore. Per richiedere a tutte le operazioni PUT di Amazon S3 di includere l'ACL predefinita bucket-owner-full-control, puoi aggiungere una policy di bucket che consenta solo il caricamento di oggetti utilizzando questa ACL.
Per vedere quali impostazioni di Object Ownership vengono applicate ai tuoi bucket, puoi utilizzare i parametri di Amazon S3 Storage Lens. S3 Storage Lens è una funzionalità di analisi dell'archiviazione su cloud che puoi utilizzare per avere una panoramica completa a livello di organizzazione sull'utilizzo e sulle attività relative all'archiviazione di oggetti. Per ulteriori informazioni, consulta la sezione relativa all'utilizzo di S3 Storage Lens per trovare le impostazioni di Object Ownership.
Nota
Per ulteriori informazioni sull'utilizzo della classe di archiviazione Amazon S3 Express One Zone con bucket di directory, consulta S3 Express One Zone e Operazioni con i bucket di directory.
Impostazioni di Object Ownership
Questa tabella mostra l'impatto di ogni impostazione Object Ownership su ACL, oggetti, proprietà di oggetti e caricamenti di oggetti.
| Impostazione | Si applica a | Effetto sulla proprietà degli oggetti | Effetto sulle ACL | Caricamenti accettati |
|---|---|---|---|---|
| Proprietario del bucket applicato (impostazione predefinita) | Tutti gli oggetti esistenti e nuovi | Il proprietario del bucket possiede ogni oggetto. |
Le ACL sono disabilitate e non influiscono più sulle autorizzazioni di accesso al bucket. Le richieste di impostazione o aggiornamento delle ACL sono respinte. Tuttavia, sono supportate le richieste di lettura delle ACL. Il proprietario del bucket ha piena proprietà e controllo. L'object Writer non ha più piena proprietà e controllo. |
Caricamenti con ACL a controllo completo del proprietario del bucket o caricamenti che non specificano un'ACL |
| Proprietario del bucket preferito | Nuovi oggetti | Se un caricamento di oggetti include l'ACL preferita bucket-owner-full-control, il proprietario del bucket possiede l'oggetto. Gli oggetti caricati con altre ACL sono di proprietà dell'account di scrittura. |
Le ACL possono essere aggiornate e possono concedere autorizzazioni. Se un caricamento di oggetti include l'ACL preferita |
Tutti i caricamenti |
| Autore dell'oggetto | Nuovi oggetti | L'object writer è proprietario dell'oggetto. |
Le ACL possono essere aggiornate e possono concedere autorizzazioni. L'Object writer ha completo controllo degli accessi. |
Tutti i caricamenti |
Modifiche introdotte disabilitando le ACL
Quando si applica l'impostazione Proprietario del bucket applicato per Proprietà dell'oggetto, le ACL vengono disabilitate e l'utente dispone automaticamente e acquisisce il controllo completo di tutti gli oggetti nel bucket senza eseguire alcuna azione aggiuntiva. Proprietario del bucket applicato è l'impostazione predefinita per tutti i nuovi bucket creati. Dopo aver applicato l'impostazione Proprietario del bucket applicato, verranno visualizzate tre modifiche:
-
Tutte le ACL dei bucket e le ACL degli oggetti sono disabilitate, il che ti dà pieno accesso in quanto proprietario del bucket. Quando esegui una richiesta ACL di lettura sul bucket o sull'oggetto, vedrai che l'accesso completo è dato solo al proprietario del bucket.
-
In quanto proprietario del bucket possiedi automaticamente e hai il pieno controllo su ogni oggetto nel bucket.
-
Le ACL non influiscono più sulle autorizzazioni di accesso al bucket. Di conseguenza, il controllo dell'accesso ai dati si basa su policy, come le policy basate sull'identità di AWS Identity and Access Management (IAM), le policy dei bucket Amazon S3, le policy degli endpoint VPC e le policy di controllo dei servizi (SCP) o delle risorse (RCP) delle organizzazioni.
Se si utilizza il controllo delle versioni di S3, il proprietario del bucket possiede e ha il pieno controllo su tutte le versioni degli oggetti nel bucket. L'applicazione dell'impostazione Proprietario del bucket applicato non aggiunge una nuova versione di un oggetto.
I nuovi oggetti possono essere caricati nel bucket solo se utilizzano ACL a controllo completo del proprietario del bucket o non specificano un'ACL. I caricamenti di oggetti non riescono se specificano altre ACL. Per ulteriori informazioni, consulta Risoluzione dei problemi.
Dal momento che la seguente operazione esemplificativa PutObject che utilizza la AWS Command Line Interface (AWS CLI) include l'ACL predefinita bucket-owner-full-control, l'oggetto può essere caricato in un bucket con ACL disabilitate.
aws s3api put-object --bucketamzn-s3-demo-bucket--keykey-name--bodypath-to-file--acl bucket-owner-full-control
Dal momento che la seguente operazione PutObject non specifica un'ACL, avrà esito positivo anche per un bucket con ACL disabilitate.
aws s3api put-object --bucketamzn-s3-demo-bucket--keykey-name--bodypath-to-file
Nota
Se altri Account AWS necessitano l'accesso agli oggetti dopo il caricamento, bisogna concedere autorizzazioni aggiuntive a tali account tramite le policy del bucket. Per ulteriori informazioni, consulta Passaggi che utilizzano le policy per gestire l'accesso alle risorse Amazon S3.
Riabilitazione delle ACL
È possibile riabilitare le ACL passando dall'impostazione Proprietario del bucket applicato a un'altra impostazione di Proprietà dell'oggetto in qualsiasi momento. Se ACL oggetto sono state utilizzate per la gestione delle autorizzazioni prima di applicare l'impostazione Proprietario del bucket applicato e non è stata eseguita la migrazione delle autorizzazioni ACL dell'oggetto alla policy del bucket, dopo che le ACL vengono riabilitate, queste autorizzazioni verranno ripristinate. Inoltre, gli oggetti scritti nel bucket mentre era applicata l'impostazione Proprietario del bucket applicato, appartengono ancora al proprietario del bucket.
Ad esempio, se passi dall'impostazione Proprietario del bucket applicato all'impostazione Autore dell'oggetto, in qualità di proprietario del bucket, non disporrai più della proprietà e del controllo completo sugli oggetti che appartenevano in precedenza ad altri Account AWS. Al contrario, gli account di caricamento possiederanno nuovamente questi oggetti. Gli oggetti di proprietà di altri account utilizzano le ACL per le autorizzazioni, quindi non è possibile utilizzare le policy per concedere autorizzazioni a questi oggetti. Tuttavia, in qualità di proprietario del bucket, sei ancora il proprietario di tutti gli oggetti che sono stati scritti nel bucket mentre era applicata l'impostazione Proprietario del bucket applicato. Questi oggetti non sono di proprietà dell'object writer, anche se le ACL vengono riabilitate.
Per istruzioni su come abilitare e gestire le ACL utilizzando la Console di gestione AWS, la AWS Command Line Interface (CLI), la REST API o gli SDK AWS, consulta Configurazione delle ACL.
Prerequisiti per la disabilitazione delle ACL
Prima di disabilitare le ACL per un bucket esistente, è necessario soddisfare i seguenti prerequisiti.
Autorizzazioni di Object Ownership
Per applicare, aggiornare o eliminare un'impostazione di Object Ownership per un bucket, è necessaria l'autorizzazione s3:PutBucketOwnershipControls. Per restituire l'impostazione Object Ownership per un bucket, è necessaria l'autorizzazione s3:GetBucketOwnershipControls. Per ulteriori informazioni, consulta Impostazione di Object Ownership quando si crea un bucket e Visualizzare l'impostazione di Object Ownership per un bucket S3.
Disabilitare le ACL per tutti i nuovi bucket
Per impostazione predefinita, tutti i nuovi bucket vengono creati con l'impostazione Proprietario del bucket applicato applicata e le ACL sono disabilitate. È consigliabile mantenere le ACL disabilitate. Come regola generale, è consigliabile utilizzare policy basate sulle risorse S3 (policy di bucket e policy dei punti di accesso) o policy IAM per il controllo degli accessi anziché ACL. Le policy sono un'opzione di controllo degli accessi semplificata e più flessibile. Con le policy dei bucket e le policy dei punti di accesso, puoi definire le regole applicabili globalmente a tutte le richieste alle risorse Amazon S3.
Replication e Object Ownership
Quando si utilizza la replica di S3 e i bucket di origine e di destinazione sono di proprietà di Account AWS diversi, è possibile disabilitare le ACL (con l'impostazione Proprietario del bucket applicato per Proprietà dell'oggetto) per cambiare la proprietà della replica in Account AWS che dispone del bucket di destinazione. Questa impostazione imita il comportamento di sovrascrittura del proprietario esistente senza la necessità di un'autorizzazione s3:ObjectOwnerOverrideToBucketOwner. Tutti gli oggetti replicati nel bucket di destinazione con l'impostazione Proprietario del bucket applicato sono di proprietà del proprietario del bucket di destinazione. Per ulteriori informazioni sull'opzione di sovrascrittura del proprietario per le configurazioni di replica, consulta Modifica del proprietario della replica.
Impostazione di Object Ownership
Puoi applicare un'impostazione di Object Ownership utilizzando la console S3, la AWS CLI, AWS SDK, REST API di Amazon S3 o AWS CloudFormation. La seguente REST API e i comandi AWS CLI supportano Object Ownership:
| REST API | AWS CLI | Descrizione |
|---|---|---|
| PutBucketOwnershipControls | put-bucket-ownership-controls |
Crea o modifica l'impostazione Object Ownership per un bucket S3 esistente. |
| CreateBucket | create-bucket |
Crea un bucket tramite l'intestazione x-amz-object-ownership della richiesta per specificare l'impostazione Object Ownership. |
| GetBucketOwnershipControls | get-bucket-ownership-controls |
Recupera l'impostazione Object Ownership per un bucket Amazon S3. |
| DeleteBucketOwnershipControls | delete-bucket-ownership-controls |
Elimina l'impostazione Object Ownership per un bucket Amazon S3. |
Per ulteriori informazioni sull'applicazione e l'utilizzo delle impostazioni di Object Ownership, consultare gli argomenti riportati di seguito.