Passa al contenuto principale

Ownership Controls

Intro

Ownership Controls (detto anche Object Ownership) è un'impostazione a livello di bucket che determina il proprietario degli oggetti in un bucket. Per impostazione predefinita, l'utente che carica l'oggetto è il proprietario dell'oggetto, ma Ownership Controls ti permette di modificare questo comportamento.

Il controllo della proprietà è strettamente correlato alle ACL (Access Control List) poiché esse sono usate per determinare chi ha accesso agli oggetti nel bucket. In questo articolo esploreremo le diverse impostazioni di Ownership Controls e il loro impatto su ACL e sui caricamenti.

Impostazioni

Ci sono tre possibili impostazioni per Ownership Controls.

BucketOwnerEnforced

BucketOwnerEnforced rende il proprietario del bucket il proprietario dell'oggetto indipendentemente da chi ha caricato l'oggetto. Questa impostazione assicura che il proprietario del bucket abbia la proprietà dell'oggetto, disabilitando le ACL e rimuovendo il loro effetto sui permessi di accesso al bucket.

I tentativi di modificare le ACL falliranno

Le richieste di aggiornamento delle ACL o qualsiasi upload che tenti di specificare una ACL (diversa dalla canned ACL bucket-owner-full-control) falliranno, riportando l'errore AccessControlListNotSupported. Tuttavia, le richieste di lettura delle ACL sono ancora supportate.

BucketOwnerPreferred

Con BucketOwnerPreferred, l'uploader originale è ancora il proprietario dell'oggetto, ma anche il proprietario del bucket può diventarlo, se necessario, specificando la canned ACL bucket-owner-full-control. Questa impostazione può essere utile per ambienti in cui il caricatore originale potrebbe non essere conosciuto o non essere il proprietario appropriato. Le ACL e i caricamenti funzionano come di consueto.

ObjectWriter (default)

Con ObjectWriter, l'uploader originale rimane il proprietario dell'oggetto e il proprietario del bucket non ha diritti di proprietà speciali. Le ACL e i caricamenti funzionano come di consueto.

Questa impostazione è il valore predefinito per Cubbit.

Disabilitare gli ACL

Per disabilitare le ACL di un bucket, imposta i controlli di proprietà su BucketOwnerEnforced.

Se si è concesso l'accesso in lettura o in scrittura a un account diverso dal proprio tramite le ACL del bucket, è necessario prima rimuovere questi permessi, altrimenti il tentativo fallirà, riportando l'errore InvalidBucketAclWithObjectOwnership.

How to

Di seguito sono riportati alcuni esempi di come si può lavorare con i controlli di proprietà con la CLI s3api.

Impostare Ownership Controls durante la creazione di un bucket

Nella consueta API CreateBucket, specifica anche --object-ownership con il valore BucketOwnerEnforced, BucketOwnerPreferred o ObjectWriter:

aws s3api create-bucket --endpoint https://s3.cubbit.eu --bucket my-cubbit-bucket --object-ownership BucketOwnerEnforced

Impostare Ownership Controls su un bucket già esistente

È possibile utilizzare l'API PutOwnershipControls con i valori BucketOwnerEnforced, BucketOwnerPreferred o ObjectWriter:

aws s3api put-ownership-controls --endpoint https://s3.cubbit.eu --bucket my-cubbit-bucket --ownership-controls BucketOwnerEnforced

Ottieni Ownership Controls di un bucket

È possibile utilizzare l'API GetOwnershipControls per leggere le impostazioni correnti di un bucket:

aws s3api get-ownership-controls --endpoint https://s3.cubbit.eu --bucket my-cubbit-bucket

Cancellare Ownership Controls di un bucket

È possibile utilizzare l'API DeleteOwnershipControls per eliminare qualsiasi impostazione di un bucket (con lo stesso effetto dell'applicazione del valore predefinito di ObjectWriter):

aws s3api delete-ownership-controls --endpoint https://s3.cubbit.eu --bucket my-cubbit-bucket