Vai 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