Controllo della proprietà degli oggetti e disattivazione ACLs del bucket - 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à.

Controllo della proprietà degli oggetti e disattivazione ACLs del bucket

S3 Object Ownership è un'impostazione a livello di bucket Amazon S3 che puoi usare per controllare la proprietà degli oggetti caricati nel tuo bucket e per disabilitare o abilitare le liste di controllo degli accessi (). ACLs Per impostazione predefinita, Object Ownership è impostata sull'impostazione imposta dal proprietario di Bucket e tutti sono disabilitati. ACLs Quando ACLs sono disabilitati, il proprietario del bucket possiede tutti gli oggetti nel bucket e gestisce l'accesso ai dati esclusivamente utilizzando le politiche di gestione degli accessi.

La maggior parte dei casi d'uso moderni in Amazon S3 non richiede più l'uso di e consigliamo di ACLs mantenerlo ACLs disabilitato tranne in circostanze insolite in cui è necessario controllare l'accesso per ogni oggetto singolarmente. Se ACLs disabilitato, puoi utilizzare le policy per controllare più facilmente l'accesso a ogni oggetto nel tuo bucket, indipendentemente da chi ha caricato gli oggetti nel tuo bucket.

Object Ownership dispone di tre impostazioni che puoi utilizzare per controllare la proprietà degli oggetti caricati nel tuo bucket e per disabilitarli o abilitarli: ACLs

ACLs disabilitato
  • Proprietario del bucket applicato (impostazione predefinita): ACLs sono disabilitati e il proprietario del bucket possiede automaticamente e ha il pieno controllo su ogni oggetto nel bucket. ACLs non influiscono più sulle autorizzazioni per i dati nel bucket S3. Il bucket utilizza le policy per definire il controllo degli accessi.

ACLs enabled
  • 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-control predefinita.

  • Object writer: chi carica un oggetto possiede l'oggetto, ne ha il pieno controllo e può concedere ad altri utenti l'accesso ad esso tramite. Account AWS ACLs

Per la maggior parte dei casi d'uso moderni in S3, ti consigliamo di rimanere ACLs disabilitato applicando l'impostazione Bucket owner enforce e utilizzando la tua policy bucket per condividere i dati con utenti esterni al tuo account, se necessario. Questo approccio semplifica la gestione delle autorizzazioni. Puoi disabilitarlo sia ACLs sui bucket appena creati che su quelli già esistenti. Per impostazione predefinita, i bucket appena creati ACLs sono disabilitati. Nel caso di un bucket esistente che contiene già oggetti, dopo la disattivazione ACLs, l'oggetto e il bucket non ACLs fanno più parte di una valutazione dell'accesso e l'accesso viene concesso o negato in base alle politiche. Per i bucket esistenti, è possibile riattivarli ACLs in qualsiasi momento dopo averli disabilitati e il bucket e l'oggetto preesistenti vengono ripristinati. ACLs

Prima di disabilitare ACLs, ti consigliamo di rivedere la tua policy sui bucket per assicurarti che copra tutti i modi in cui intendi concedere l'accesso al tuo bucket al di fuori del tuo account. Dopo la disattivazione ACLs, il bucket accetta solo PUT le richieste che non specificano un ACL o PUT le richieste con il pieno controllo del proprietario del bucket ACLs, ad esempio l'ACL predefinito o forme equivalenti di bucket-owner-full-control questo ACL espresse in XML. Le applicazioni esistenti che supportano il pieno controllo del proprietario del bucket non hanno alcun impatto. ACLs PUTle richieste che ne contengono altre ACLs (ad esempio, concessioni personalizzate a determinate Account AWS) hanno esito negativo e restituiscono un 400 errore con il codice di errore. AccessControlListNotSupported

Al contrario, un bucket con l'impostazione preferita del proprietario del bucket continua ad accettare e rispettare bucket e oggetto. ACLs 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 che ogni impostazione della proprietà degli oggetti ha sugli oggetti ACLs, sulla proprietà degli oggetti e sui caricamenti degli oggetti.

Impostazione Si applica a Effetto sulla proprietà degli oggetti Effetto su ACLs Caricamenti accettati
Proprietario del bucket applicato (impostazione predefinita) Tutti gli oggetti esistenti e nuovi Il proprietario del bucket possiede ogni oggetto.

ACLs sono disabilitati e non influiscono più sulle autorizzazioni di accesso al tuo bucket. Le richieste di impostazione o aggiornamento ACLs hanno esito negativo. Tuttavia, le richieste di lettura ACLs sono supportate.

Il proprietario del bucket ha piena proprietà e controllo.

L'object Writer non ha più piena proprietà e controllo.

Caricamenti con il pieno controllo del proprietario del bucket ACLs 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 altri ACLs sono di proprietà dell'account di scrittura.

ACLs possono essere aggiornati e possono concedere autorizzazioni.

Se un caricamento di oggetti include l'ACL preferita bucket-owner-full-control, il proprietario del bucket ha completo controllo degli accessi mentre l'object writer non lo ha più.

Tutti i caricamenti
Autore dell'oggetto Nuovi oggetti L'object writer è proprietario dell'oggetto.

ACLs può essere aggiornato e può concedere autorizzazioni.

L'Object writer ha completo controllo degli accessi.

Tutti i caricamenti

Modifiche introdotte mediante disabilitazione ACLs

Quando viene applicata l'impostazione imposta dal proprietario del bucket per la proprietà degli oggetti, ACLs vengono disattivate e l'utente possiede automaticamente e assume il pieno controllo di ogni oggetto nel bucket senza intraprendere 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:

Diagramma che mostra cosa succede quando si applica l'impostazione forzata del proprietario di Bucket alla disattivazione. ACLs

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 il pieno controllo del proprietario del bucket ACLs o non specificano un ACL. I caricamenti di oggetti non riescono se specificano altre ACL. Per ulteriori informazioni, consulta Risoluzione dei problemi.

Poiché l'PutObjectoperazione di esempio seguente che utilizza il AWS Command Line Interface (AWS CLI) include l'ACL predefinito, l'oggetto può essere caricato bucket-owner-full-control in un bucket con la modalità disattivata. ACLs

aws s3api put-object --bucket amzn-s3-demo-bucket --key key-name --body path-to-file --acl bucket-owner-full-control

Poiché l'PutObjectoperazione seguente non specifica un ACL, ha esito positivo anche per un bucket con impostazione disattivata. ACLs

aws s3api put-object --bucket amzn-s3-demo-bucket --key key-name --body path-to-file
Nota

Se altri Account AWS hanno bisogno di accedere agli oggetti dopo il caricamento, devi concedere autorizzazioni aggiuntive a tali account tramite le policy dei bucket. Per ulteriori informazioni, consulta Passaggi che utilizzano le policy per gestire l'accesso alle risorse Amazon S3.

Riattivazione ACLs

Puoi riattivarla passando ACLs dall'impostazione forzata del proprietario del Bucket a un'altra impostazione di proprietà dell'oggetto in qualsiasi momento. Se hai utilizzato l'oggetto ACLs per la gestione delle autorizzazioni prima di applicare l'impostazione Bucket owner enforce e non hai migrato queste autorizzazioni ACL dell'oggetto alla tua policy del bucket, dopo la riattivazione, queste autorizzazioni vengono ripristinate. ACLs 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 vengono utilizzati per le autorizzazioni, quindi non puoi utilizzare le politiche ACLs per concedere le 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'autore dell'oggetto, anche se li riattivate. ACLs

Per istruzioni sull'attivazione e la gestione dell' ACLs utilizzo dell'API REST AWS Management Console, AWS Command Line Interface (CLI) oppure AWS SDKs, consulta. Configurazione ACLs

Prerequisiti per la disabilitazione ACLs

Prima di disattivarlo ACLs per un bucket esistente, completa i seguenti prerequisiti.

Rivedi il bucket e l'oggetto ACLs e migra le autorizzazioni ACL

Quando disabiliti ACLs, le autorizzazioni concesse dal bucket e dall'oggetto non influiscono più sull'accesso. ACLs Prima di disabilitarlo ACLs, esamina il bucket e l'oggetto. ACLs

Se il tuo bucket ACLs concede autorizzazioni di lettura o scrittura ad altre persone esterne al tuo account, devi migrare queste autorizzazioni alla tua policy sul bucket prima di poter applicare l'impostazione imposta dal proprietario del Bucket. Se non esegui la migrazione dei bucket ACLs che garantiscono l'accesso in lettura o scrittura all'esterno del tuo account, la tua richiesta di applicare l'impostazione Bucket owner enforced ha esito negativo e restituisce il InvalidBucketAclWithObjectOwnershipcodice di errore.

Ad esempio, se desideri ACLs disabilitare un bucket che riceve i log di accesso al server, devi migrare le autorizzazioni ACL del bucket per il gruppo di consegna dei log S3 al principale del servizio di registrazione in una policy del bucket. Per ulteriori informazioni, consulta Concedere l'accesso al gruppo di consegna di log S3 per la registrazione di log degli accessi al server.

Se si desidera che l'object writer mantenga il pieno controllo dell'oggetto caricato, l'object writer è la migliore impostazione di Object Ownership per il caso d'uso. Se si desidera controllare l'accesso a livello di singolo oggetto, il proprietario del bucket preferito è la decisione migliore. Questi casi d'uso non sono comuni.

Per rivedere e migrare le autorizzazioni ACL alle policy dei bucket ACLs , consulta. Prerequisiti per la disabilitazione ACLs

Identifica tutte le richieste che richiedono una ACL per l'autorizzazione

Per identificare le richieste Amazon S3 che richiedono ACLs l'autorizzazione, puoi utilizzare il aclRequired valore nei log di accesso al server Amazon S3 oppure. AWS CloudTrail Se la richiesta richiede un ACL per l'autorizzazione o se sono presenti richieste PUT che specificano un ACL, la stringa è Yes. Se non è ACLs necessario, se stai impostando un bucket-owner-full-control ACL predefinito o se le richieste sono consentite dalla tua policy bucket, la stringa di aclRequired valore è "-" nei log di accesso al server di Amazon S3 ed è assente in. CloudTrail Per ulteriori informazioni sui valori aclRequired attesi, consulta Valori aclRequired per le richieste di Amazon S3.

Se PutBucketAcl disponi di PutObjectAcl richieste con intestazioni che concedono autorizzazioni basate sull'ACL, ad eccezione dell'ACL predefinito, devi rimuovere tali intestazioni prima di bucket-owner-full-control poterle disabilitare. ACLs In caso contrario, le tue richieste non avranno esito positivo.

Per tutte le altre richieste che richiedevano un ACL per l'autorizzazione, migra tali autorizzazioni ACL alle policy dei bucket. Quindi, rimuovi qualsiasi bucket ACLs prima di abilitare l'impostazione applicata dal proprietario del bucket.

Nota

Non rimuovere oggetti. ACLs In caso contrario, le applicazioni che si basano sull'oggetto ACLs per le autorizzazioni perderanno l'accesso.

Se vedi che nessuna richiesta richiede un ACL per l'autorizzazione, puoi procedere alla disattivazione. ACLs Per ulteriori informazioni sull'identificazione delle richieste, vedere Utilizzo dei log degli accessi al server Amazon S3 per identificare le richieste eIdentificazione delle richieste Amazon S3 tramite CloudTrail.

Esamina e aggiorna le policy del bucket che utilizzano chiavi di condizione relative all'ACL

Dopo aver applicato la disattivazione dell'impostazione forzata del proprietario del bucket ACLs, i nuovi oggetti possono essere caricati nel bucket solo se la richiesta utilizza il controllo completo del proprietario del bucket ACLs o non specifica un ACL. Prima di disabilitarli ACLs, consulta la politica del bucket per le chiavi di condizione relative all'ACL.

Se la policy del bucket utilizza una chiave di condizione relativa all'ACL per richiedere l'ACL predefinita bucket-owner-full-control (ad esempio s3:x-amz-acl), non è necessario aggiornare la policy del bucket. La seguente policy di bucket utilizza il codice s3:x-amz-acl per richiedere l'ACL predefinita bucket-owner-full-control per le richieste PutObject di S3. Questa policy richiede ancora all'object writer di specificare l'ACL predefinita bucket-owner-full-control. Tuttavia, i bucket ACLs disattivati accettano ancora questo ACL, quindi le richieste continuano ad avere esito positivo senza che siano necessarie modifiche sul lato client.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Only allow writes to my bucket with bucket owner full control", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:user/ExampleUser" ] }, "Action": [ "s3:PutObject" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control" } } } ] }

Tuttavia, se la policy di bucket utilizza una chiave di condizione relativa all'ACL che richiede un'ACL diversa, è necessario rimuovere questa chiave di condizione. Questo esempio di bucket policy richiede l'public-readACL per le PutObject richieste S3 e pertanto deve essere aggiornata prima della disabilitazione. ACLs

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Only allow writes to my bucket with public read access", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:user/ExampleUser" ] }, "Action": [ "s3:PutObject" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "public-read" } } } ] }

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.

Disabilitazione per tutti i nuovi bucket ACLs

Per impostazione predefinita, tutti i nuovi bucket vengono creati con l'impostazione imposta dal proprietario del Bucket applicata e sono disabilitati. ACLs Ti consigliamo di mantenerlo disabilitato. ACLs Come regola generale, consigliamo di utilizzare le policy basate sulle risorse S3 (bucket policy e access point policy) o le policy IAM per il controllo degli accessi anziché. ACLs 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 utilizzi la replica S3 e i bucket di origine e di destinazione sono di proprietà di diversi Account AWS, puoi disabilitarli ACLs (con l'impostazione imposta dal proprietario del bucket per Object Ownership) per modificare la proprietà della replica con quella che possiede il bucket di destinazione. Account AWS 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 proprietà dell'oggetto utilizzando la console Amazon S3, AWS CLI AWS SDKs, l'API REST di Amazon S3 oppure. AWS CloudFormation Le seguenti API REST e AWS CLI i seguenti comandi supportano la proprietà degli oggetti:

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.