Questa pagina descrive come controllare l'accesso a bucket e oggetti utilizzando gli elenchi di controllo dell'accesso (ACL). Gli ACL sono un meccanismo che puoi utilizzare per definire chi ha accesso ai tuoi bucket e ai tuoi oggetti, nonché il livello di accesso.
Consulta la panoramica degli ACL per scoprire di più su se devi utilizzare gli ACL per controllare l'accesso alle tue risorse.
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per creare e gestire gli elenchi di controllo degli accessi, chiedi all'amministratore di concederti il ruolo IAM Amministratore storage (roles/storage.admin
) sul bucket che contiene gli oggetti per i quali vuoi creare e gestire gli elenchi di controllo degli accessi.
Questo ruolo predefinito contiene le autorizzazioni necessarie per creare e gestire elenchi di controllo degli accessi. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:
Autorizzazioni obbligatorie
storage.buckets.get
storage.buckets.list
- Questa autorizzazione è necessaria solo per utilizzare la console Google Cloud per eseguire le attività in questa pagina.
storage.buckets.setIamPolicy
storage.buckets.update
storage.objects.get
storage.objects.getIamPolicy
storage.objects.setIamPolicy
storage.objects.update
Puoi anche ottenere queste autorizzazioni con ruoli personalizzati.
Per informazioni sulla concessione dei ruoli sui bucket, consulta Utilizzare IAM con i bucket.
Impostare o modificare gli ACL
Console
Vai al browser Cloud Storage nella console Google Cloud .
Vai al browser Cloud StorageNell'elenco dei bucket, fai clic sul nome del bucket contenente l'oggetto di cui vuoi modificare l'ACL.
Fai clic sul nome dell'oggetto per cui vuoi impostare o modificare gli ACL.
Fai clic su Modifica accesso.
Si apre una finestra di dialogo delle autorizzazioni con l'ACL corrente dell'oggetto.
Fai clic su + Aggiungi voce.
Scegli il tipo di entità a cui concedere l'autorizzazione.
Entità specifica il tipo di elemento a cui viene concessa l'autorizzazione (ad esempio un utente o un gruppo). Consulta Ambiti del controllo dell'accesso per un elenco dei valori supportati per Entity.
Inserisci un valore in Nome.
Nome identifica un utente, un gruppo o un altro tipo di entità specifico. Consulta Ambiti di controllo dell'accesso per un elenco dei valori supportati per Nome.
Entità e Nome definiscono a chi si applica l'autorizzazione.
Scegli un valore in Accesso.
Access definisce l'autorizzazione che vuoi impostare sull'oggetto. Consulta Autorizzazioni di controllo dell'accesso per un elenco dei valori supportati per Access.
Fai clic su Salva.
Per scoprire come ottenere informazioni dettagliate sugli errori relativi alle operazioni di Cloud Storage non riuscite nella console Google Cloud , consulta la sezione Risoluzione dei problemi.
Riga di comando
Per aggiungere, modificare o rimuovere una singola concessione su un oggetto, utilizza il
comando objects update
con il flag pertinente:
gcloud storage objects update gs://BUCKET_NAME/OBJECT_NAME FLAG
Dove:
BUCKET_NAME
è il nome del bucket che contiene l'oggetto a cui si applica la modifica. Ad esempio,example-travel-maps
.OBJECT_NAME
è il nome dell'oggetto a cui si applica la modifica. Ad esempio,paris.jpg
.FLAG
è uno dei seguenti:--add-acl-grant
, insieme alla concessione che vuoi aggiungere o modificare. Ad esempio:--add-acl-grant=entity=user-jeffersonloveshiking@gmail.com,role=READER
.--remove-acl-grant
, insieme all'entità di cui vuoi rimuovere l'accesso. Ad esempio:--remove-acl-grant=user-jeffersonloveshiking@gmail.com
.
Per sostituire tutti gli ACL per un oggetto:
Definisci gli ACL in un file in formato JSON o YAML.
Ad esempio, i seguenti ACL concedono l'autorizzazione
OWNER
per l'oggettoparis.jpg
ai proprietari del progetto867489160491
e all'utentejeffersonloveshiking@gmail.com
, nonché l'autorizzazioneREADER
perparis.jpg
ai membri del gruppogs-announce
:[ { "entity": "project-owners-867489160491", "role": "OWNER", "projectTeam": { "projectNumber": "867489160491", "team": "owners" }, }, { "entity": "user-jeffersonloveshiking@gmail.com", "email": "jeffersonloveshiking@gmail.com", "role": "OWNER" }, { "entity": "group-gs-announce@googlegroups.com", "email": "gs-announce@googlegroups.com", "role": "READER" } ]
Utilizza il comando
objects update
con il flag--acl-file
:gcloud storage objects update gs://BUCKET_NAME/OBJECT_NAME --acl-file=FILE_LOCATION
Dove:
BUCKET_NAME
è il nome del bucket che contiene l'oggetto a cui si applicano gli ACL. Ad esempio,example-travel-maps
.OBJECT_NAME
è il nome dell'oggetto a cui si applicano gli ACL. Ad esempio,paris.jpg
.FILE_LOCATION
è il percorso locale del file che contiene gli ACL definiti. Ad esempio,Desktop/acls.json
.
Librerie client
C++
Per saperne di più, consulta la documentazione di riferimento dell'API Cloud Storage per C++.
Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
L'esempio seguente aggiunge un ACL a un oggetto:
L'esempio seguente rimuove un ACL da un oggetto:
C#
Per saperne di più, consulta la documentazione di riferimento dell'API Cloud Storage per C#.
Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
L'esempio seguente aggiunge un ACL a un oggetto:
L'esempio seguente rimuove un ACL da un oggetto:
Go
Per saperne di più, consulta la documentazione di riferimento dell'API Cloud Storage per Go.
Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
L'esempio seguente aggiunge un ACL a un oggetto:
L'esempio seguente rimuove un ACL da un oggetto:
Java
Per saperne di più, consulta la documentazione di riferimento dell'API Cloud Storage per Java.
Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
L'esempio seguente aggiunge un ACL a un oggetto:
L'esempio seguente rimuove un ACL da un oggetto:
Node.js
Per saperne di più, consulta la documentazione di riferimento dell'API Cloud Storage per Node.js.
Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
L'esempio seguente aggiunge un ACL a un oggetto:
L'esempio seguente rimuove un ACL da un oggetto:
PHP
Per saperne di più, consulta la documentazione di riferimento dell'API Cloud Storage per PHP.
Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
L'esempio seguente aggiunge un ACL a un oggetto:
L'esempio seguente rimuove un ACL da un oggetto:
Python
Per saperne di più, consulta la documentazione di riferimento dell'API Cloud Storage per Python.
Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
L'esempio seguente aggiunge un ACL a un oggetto:
L'esempio seguente rimuove un ACL da un oggetto:
Ruby
Per saperne di più, consulta la documentazione di riferimento dell'API Cloud Storage per Ruby.
Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
L'esempio seguente aggiunge un ACL a un oggetto:
L'esempio seguente rimuove un ACL da un oggetto:
API REST
API JSON
Quando crei un oggetto, puoi specificare la proprietà acl[]
nel corpo della richiesta o il parametro di query predefinedAcl
in una richiesta insert. Per un oggetto esistente, specifica la proprietà acl[]
o il parametro di query predefinedAcl
in una richiesta patch o update.
Per la definizione della proprietà ACL dell'oggetto, consulta la risorsa
ObjectAccessControls
.
Definisci gli ACL in un file JSON.
Ad esempio, se la lista di controllo degli accessi concede l'autorizzazione
OWNER
ai proprietari del progetto867489160491
e all'utentejeffersonloveshiking@gmail.com
, oltre a concedere l'autorizzazioneREADER
ai membri del gruppogs-announce
, potresti avere un file denominatoacls.json
con i seguenti contenuti:{ "acl": [ { "entity": "project-owners-867489160491", "role": "OWNER", "projectTeam": { "projectNumber": "867489160491", "team": "owners" } }, { "entity": "user-jeffersonloveshiking@gmail.com", "role": "OWNER", "email": "jeffersonloveshiking@gmail.com" }, { "entity": "group-gs-announce@googlegroups.com", "role": "READER", "email": "gs-announce@googlegroups.com" } ] }
Invia una richiesta patch con il file JSON e specifica l'oggetto su cui impostare le ACL.
Ad esempio, il seguente comando curl
applica un payload JSON dal documento acls.json
a un oggetto denominato paris.jpg
nel bucket example-travel-maps
:
curl -X PATCH --data @acls.json -H "Content-Type: application/json" \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://storage.googleapis.com/storage/v1/b/example-travel-maps/o/paris.jpg
API XML
Nell'API XML, lavori con gli ACL in formato XML. Devi allegare un documento XML al corpo delle richieste di modifica delle ACL bucket e oggetti. Quando recuperi gli ACL di bucket e oggetti, viene restituito un documento XML. Il documento XML contiene le singole voci ACL del bucket o dell'oggetto.
Dopo aver creato un bucket con una richiesta
PUT
Bucket, utilizza una seconda richiesta PUT Bucket con il parametro?acl
per modificare l'ACL del bucket.Dopo aver caricato un oggetto con una richiesta
PUT
Object, modifica l'ACL con un'altra richiesta PUT utilizzando il parametro?acl
o l'intestazione della richiestax-googl-acl
.
Ad esempio, il seguente comando curl
applica un payload XML dal documento acls.xml
a un oggetto denominato paris.jpg
nel bucket example-travel-maps
:
curl -X PUT --data-binary @acls.xml \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://storage.googleapis.com/example-travel-maps/paris.jpg?acl
Utilizza la seguente sintassi ACL per il documento XML:
Elemento | Descrizione |
---|---|
AccessControlList |
Contenitore per gli elementi Entries e Owner . |
Owner |
Contenitore per gli elementi DisplayName e ID . Questo elemento non è obbligatorio per gli oggetti, in quanto un oggetto è sempre di proprietà dell'utente che lo ha caricato. Questo elemento viene utilizzato quando utilizzi la sintassi ACL Amazon S3 in uno scenario di migrazione. Amazon Simple Storage Service™ e Amazon S3™ sono marchi di Amazon.com, Inc. o delle sue affiliate negli Stati Uniti e/o in altri paesi. |
ID |
ID Cloud Storage del proprietario del bucket. |
DisplayName |
Non implementata. Il valore è sempre una stringa vuota. |
Entries |
Contenitore di zero o più elementi Entry . |
Entry |
Contenitore per gli elementi Scope e Permission . Un elemento Entry deve contenere solo un elemento Scope e un elemento Permission . |
Scope |
Contenitore di un elemento ID , EmailAddress o Domain che definisce l'ambito ACL. Questo elemento deve avere un attributo type che contenga uno dei seguenti valori: UserByID , UserByEmail , GroupByID , GroupByEmail , GroupByDomain , AllUsers o AllAuthenticatedUsers . |
ID |
Un identificatore per il beneficiario quando la voce di autorizzazione è specificata per ID. |
EmailAddress |
L'identificatore email del beneficiario quando la voce di autorizzazione è specificata tramite email. |
Domain |
L'identificatore del dominio del beneficiario quando la voce di autorizzazione è specificata per dominio. |
Name |
Elemento facoltativo che può essere specificato o aggiunto automaticamente se l'ambito è UserByEmail o GroupByEmail . |
Permission |
L'autorizzazione concessa READ , WRITE o FULL_CONTROL . |
Quando lavori con gli ACL utilizzando l'API XML:
- Puoi utilizzare solo il formato XML descritto sopra.
Non puoi impostare ambiti duplicati.
Puoi avere molte voci nel file XML ACL, ma non puoi avere voci con ambiti duplicati. Ad esempio, non puoi avere due voci con lo stesso elemento di ambito
jane@example.com
.
L'esempio seguente mostra diverse voci ACL del bucket:
<?xml version="1.0" encoding="UTF-8"?> <AccessControlList> <Owner> <ID>00b4903a9721...</ID> </Owner> <Entries> <Entry> <Scope type="GroupById"> <ID>00b4903a9722...</ID> </Scope> <Permission>FULL_CONTROL</Permission> </Entry> <Entry> <Scope type="GroupByDomain"> <Domain>example.com</Domain> </Scope> <Permission>READ</Permission> </Entry> <Entry> <Scope type="GroupByEmail"> <EmailAddress>gs-announce@googlegroups.com</EmailAddress> </Scope> <Permission>READ</Permission> </Entry> <Entry> <Scope type="UserByEmail"> <EmailAddress>jeffersonloveshiking@gmail.com</EmailAddress> <Name>Jefferson</Name> </Scope> <Permission>FULL_CONTROL</Permission> </Entry> <Entry> <Scope type="AllUsers"/> <Permission>READ</Permission> </Entry> <Entry> <Scope type="AllAuthenticatedUsers"/> <Permission>READ</Permission> </Entry> </Entries> </AccessControlList>
Imposta l'elemento Name in ACL XML
Quando recuperi un ACL da un bucket o un oggetto, potresti notare un
elemento <Name>
aggiuntivo aggiunto ad alcune delle tue voci. Ad esempio, potresti vedere una voce simile alla seguente:
<Entry> <Scope type="UserByEmail"> <EmailAddress>jeffersonloveshiking@gmail.com</EmailAddress> <Name>Jefferson</Name> </Scope> <Permission>FULL_CONTROL</Permission> </Entry>
Questi elementi <Name>
facoltativi vengono compilati in due circostanze:
Quando gli ACL del bucket o dell'oggetto includono
<Name>
come elemento.Quando imposti gli ACL, puoi scegliere di includere l'elemento
<Name>
con le voci ACL. Puoi fornire qualsiasi valore nell'elemento<Name>
e Cloud Storage ricorda questi valori finché l'ACL non viene rimosso o sostituito. Questo approccio può essere utile se utilizzi identificatori non facilmente identificabili.Quando un ambito
UserByEmail
oGroupByEmail
contiene un profilo Google pubblico.Se utilizzi uno di questi ambiti, ma non fornisci un elemento
<Name>
, Cloud Storage verifica se l'utente o il gruppo Google associato all'indirizzo email ha un profilo Google pubblico con un nome pubblico. In questo caso, Cloud Storage compila automaticamente l'elemento<Name>
con il nome pubblico.
Applica un ACL predefinito
Anziché specificare l'intera ACL una voce alla volta come mostrato sopra, puoi utilizzare un'ACL predefinita, che applicherà automaticamente una serie di voci personalizzate per uno scenario specifico. Puoi applicare un ACL predefinito a un bucket o a un oggetto utilizzando Google Cloud CLI, l'API JSON o l'API XML.
Sui nuovi oggetti
Per applicare un ACL predefinito a un oggetto durante il caricamento:
Console
Non puoi applicare un ACL predefinito utilizzando la console Google Cloud . Utilizza
gcloud storage
.
Riga di comando
Utilizza il comando gcloud storage cp
con il flag --predefined-acl
:
gcloud storage cp OBJECT gs://BUCKET_NAME --predefined-acl=PREDEFINED_ACL
Ad esempio, per applicare l'ACL predefinito bucketOwnerRead
durante
il caricamento di un oggetto paris.jpg
in un bucket example-travel-maps
:
gcloud storage cp paris.jpg gs://example-travel-maps --predefined-acl=bucketOwnerRead
API REST
API JSON
Utilizza il parametro della stringa di query predefinedAcl
in una richiesta insert per
applicare l'ACL predefinito.
Ad esempio, per applicare l'ACL predefinito bucketOwnerRead
durante il caricamento
di un oggetto paris.jpg
in un bucket example-travel-maps
:
curl -X POST --data-binary @paris.jpg -H "Content-Type: image/jpeg" \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/upload/storage/v1/b/example-travel-maps/o?name=paris.jpg&predefinedAcl=bucketOwnerRead"
API XML
Utilizza l'intestazione x-goog-acl
in una richiesta Put Object per applicare l'ACL predefinito.
Ad esempio, per applicare l'ACL predefinito bucket-owner-read
durante
il caricamento di un oggetto paris.jpg
in un bucket example-travel-maps
:
curl -X PUT --upload-file paris.jpg -H "x-goog-acl: bucket-owner-read" \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://storage.googleapis.com/example-travel-maps/paris.jpg
Su bucket o oggetti esistenti
Puoi anche applicare un ACL predefinito a un bucket o un oggetto esistente, il che è utile se vuoi passare da un ACL predefinito a un altro o se vuoi aggiornare gli ACL personalizzati a un ACL predefinito.
Console
Non puoi applicare un ACL predefinito utilizzando la console Google Cloud . Utilizza
gcloud storage
.
Riga di comando
Utilizza il comando objects update
con il flag --predefined-acl
:
gcloud storage objects update gs://BUCKET_NAME/OBJECT_NAME --predefined-acl=PREDEFINED_ACL_NAME
Ad esempio, per applicare l'ACL predefinito private
all'oggetto
paris.jpg
nel bucket example-travel-maps
:
gcloud storage objects update gs://example-travel-maps/paris.jpg --predefined-acl=private
API REST
API JSON
Utilizza il parametro della stringa di query predefinedAcl
e specifica una proprietà acl
vuota in una richiesta patch per applicare l'ACL predefinita.
Ad esempio, per applicare l'ACL predefinito private
all'oggetto
paris.jpg
nel bucket example-travel-maps
:
curl -X PATCH --data '{"acl": []}' -H "Content-Type: application/json" \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://storage.googleapis.com/storage/v1/b/example-travel-maps/o/paris.jpg?predefinedAcl=private
API XML
Utilizza l'intestazione x-goog-acl
con il parametro della stringa di query acl
in una
richiesta Put Object, ma non includere un documento XML nella
richiesta.
Ad esempio, per applicare l'ACL predefinito private
all'oggetto
paris.jpg
nel bucket example-travel-maps
:
curl -X PUT -H "Content-Length: 0" \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "x-goog-acl: private" \ https://storage.googleapis.com/example-travel-maps/paris.jpg?acl
Impostare gli ACL oggetto predefiniti
Per evitare di impostare gli ACL ogni volta che crei un nuovo oggetto, puoi impostare un ACL oggetto predefinito su un bucket. Dopo averlo fatto, a ogni nuovo oggetto aggiunto al bucket a cui non è applicata esplicitamente una ACL verrà applicata quella predefinita. Ad esempio, potresti voler specificare che solo un determinato gruppo di utenti abbia accesso alla maggior parte degli oggetti di un bucket specifico. Puoi modificare l'ACL oggetto predefinita e poi aggiungere oggetti al bucket. A questi oggetti aggiunti viene applicato automaticamente l'ACL oggetto predefinito che hai specificato; tuttavia, puoi assegnare ACL diversi a oggetti specifici, nel qual caso a questi oggetti non viene applicato l'ACL predefinito.
Per visualizzare e modificare l'ACL oggetto predefinito per un bucket:
Console
Non puoi impostare gli ACL degli oggetti predefiniti utilizzando la console Google Cloud . Utilizza
gcloud storage
.
Riga di comando
Utilizza il comando
buckets describe
con il flag--format
per recuperare l'ACL oggetto predefinito per il bucket:gcloud storage buckets describe gs://BUCKET_NAME --format="default(default_acl)"
dove
BUCKET_NAME
è il nome del bucket di cui vuoi visualizzare la ACL oggetto predefinita. Ad esempio,my-bucket
.Utilizza il comando
buckets update
con il flag desiderato per modificare l'ACL oggetto predefinito per il bucket:gcloud storage buckets update gs://BUCKET_NAME FLAG
Dove:
BUCKET_NAME
è il nome del bucket di cui vuoi modificare l'ACL oggetto predefinito. Ad esempio,my-bucket
.FLAG
è uno dei seguenti:--add-default-object-acl-grant
e una concessione che vuoi aggiungere all'ACL oggetto predefinito complessivo per il bucket.--default-object-acl-file
e il percorso di un file locale che definisce un nuovo ACL oggetto predefinito per il bucket.--predefined-default-object-acl
e il nome di un ACL oggetto predefinito con cui vuoi sostituire l'ACL oggetto predefinito esistente per il bucket.--remove-default-object-acl-grant
e un'entità che vuoi rimuovere dall'ACL oggetto predefinito complessivo per il bucket.
Librerie client
C++
Per saperne di più, consulta la documentazione di riferimento dell'API Cloud Storage per C++.
Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Il seguente esempio aggiunge un elenco di controllo degli accessi (ACL) predefinito a un bucket:
L'esempio seguente elimina un ACL oggetto predefinito da un bucket:
C#
Per saperne di più, consulta la documentazione di riferimento dell'API Cloud Storage per C#.
Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
L'esempio seguente stampa l'ACL oggetto predefinita per un bucket:
Il seguente esempio aggiunge un elenco di controllo degli accessi (ACL) predefinito a un bucket:
L'esempio seguente elimina un ACL oggetto predefinito da un bucket:
Go
Per saperne di più, consulta la documentazione di riferimento dell'API Cloud Storage per Go.
Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Il seguente esempio aggiunge un elenco di controllo degli accessi predefinito a un bucket:
L'esempio seguente elimina un ACL oggetto predefinito da un bucket:
Java
Per saperne di più, consulta la documentazione di riferimento dell'API Cloud Storage per Java.
Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Il seguente esempio aggiunge un elenco di controllo degli accessi (ACL) predefinito a un bucket:
L'esempio seguente elimina un ACL oggetto predefinito da un bucket:
Node.js
Per saperne di più, consulta la documentazione di riferimento dell'API Cloud Storage per Node.js.
Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Il seguente esempio aggiunge un elenco di controllo degli accessi (ACL) predefinito a un bucket:
L'esempio seguente elimina un ACL oggetto predefinito da un bucket:
PHP
Per saperne di più, consulta la documentazione di riferimento dell'API Cloud Storage per PHP.
Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Il seguente esempio aggiunge un elenco di controllo degli accessi (ACL) predefinito a un bucket:
L'esempio seguente elimina un ACL oggetto predefinito da un bucket:
Python
Per saperne di più, consulta la documentazione di riferimento dell'API Cloud Storage per Python.
Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Il seguente esempio aggiunge un elenco di controllo degli accessi predefinito a un bucket:
L'esempio seguente elimina un ACL oggetto predefinito da un bucket:
Ruby
Per saperne di più, consulta la documentazione di riferimento dell'API Cloud Storage per Ruby.
Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Il seguente esempio aggiunge un elenco di controllo degli accessi (ACL) predefinito a un bucket:
L'esempio seguente elimina un ACL oggetto predefinito da un bucket:
API REST
API JSON
Recupera l'ACL oggetto predefinito con una richiesta GET. Ad esempio:
curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://storage.googleapis.com/storage/v1/b/BUCKET_NAME?projection=full
Utilizza una richiesta patch per sostituire l'ACL dell'oggetto predefinito. Ad esempio, la seguente richiesta sostituisce l'ACL oggetto predefinita con l'ACL specificata in
defacls.json
per un bucketexample-travel-maps
:curl -X PATCH --data @defacls.json -H "Content-Type: application/json" -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://storage.googleapis.com/storage/v1/b/example-travel-maps
Un esempio di
defacls.json
:{ "defaultObjectAcl": [ { "email": "jeffersonloveshiking@gmail.com", "entity": "user-jeffersonloveshiking@gmail.com", "role": "READER" } ] }
API XML
Recupera l'ACL oggetto predefinito con una richiesta
GET
con ambito il tuo bucket e il parametro?defaultObjectAcl
. Ad esempio:curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://storage.googleapis.com/BUCKET_NAME?defaultObjectAcl
Utilizza una richiesta
PUT
con ambito limitato al tuo bucket con il parametro?defaultObjectAcl
per sostituire l'ACL dell'oggetto predefinito con l'ACL specificato inacls.xml
. Ad esempio:curl -X PUT --data-binary @acls.xml -H "Authorization: Bearer $(gcloud auth print-access-token)" \ http://storage.googleapis.com/BUCKET_NAME?defaultObjectAcl
Un esempio di
acls.xml
:<AccessControlList> <Entries> <Entry> <Permission>
FULL_CONTROL
</Permission> <Scope type="UserByEmail"> <EmailAddress>jeffersonloveshiking@gmail.com</EmailAddress> </Scope> </Entry> </Entries> </AccessControlList>
La sintassi degli ACL è descritta in Impostazione degli ACL. Puoi anche specificare un ACL predefinito come ACL oggetto predefinito.
Per impostare l'ACL oggetto predefinito per un bucket su un ACL predefinito:
Console
Non puoi impostare gli ACL degli oggetti predefiniti utilizzando la console Google Cloud . Utilizza
gcloud storage
.
Riga di comando
Utilizza il comando buckets update
con il flag --predefined-default-object-acl
:
gcloud storage buckets update gs://BUCKET_NAME --predefined-default-object-acl=PREDEFINED_ACL
Dove:
BUCKET_NAME
è il nome del bucket di cui vuoi modificare l'ACL oggetto predefinito. Ad esempio,my-bucket
.PREDEFINED_ACL
è il nome di un ACL predefinito valido. Ad esempio,projectPrivate
.
API REST
API JSON
Utilizza una richiesta PUT e il parametro predefinedAcl
.
Ad esempio:
curl -X PUT -H "Content-Length: 0" -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://storage.googleapis.com/storage/v1/b/BUCKET_NAME?predefinedAcl=private
API XML
Utilizza una richiesta PUT
con ambito limitato al tuo bucket con il parametro ?defaultObjectAcl
e l'intestazione x-goog-acl
.
Ad esempio:
curl -X PUT -H "x-goog-acl: project-private" -H "Content-Length: 0" -H "Authorization: Bearer $(gcloud auth print-access-token)" \ http://storage.googleapis.com/BUCKET_NAME?defaultObjectAcl
ACL oggetto predefiniti per i bucket appena creati:
Gli esempi seguenti mostrano le ACL oggetto predefinite che vengono applicate automaticamente ai bucket appena creati quando non specifichi le tue ACL oggetto predefinite nell'ambito della richiesta. Per verificare se gli ACL degli oggetti predefiniti del bucket sono stati modificati, confronta gli ACL degli oggetti predefiniti correnti del bucket con gli esempi riportati di seguito.
Console
Non puoi utilizzare gli ACL degli oggetti predefiniti utilizzando la Google Cloud console.
Utilizza invece gcloud storage
.
Riga di comando
Nell'esempio riportato di seguito, l'ID progetto è "123412341234"; il tuo ID progetto sarà diverso.
defaultObjectAcl: – entity: project-owners-123412341234 etag: CAE= kind: storage#objectAccessControl projectTeam: projectNumber: '123412341234' team: owners role: OWNER – entity: project-editors-123412341234 etag: CAE= kind: storage#objectAccessControl projectTeam: projectNumber: '123412341234' team: editors role: OWNER – entity: project-viewers-123412341234 etag: CAE= kind: storage#objectAccessControl projectTeam: projectNumber: '123412341234' team: viewers role: READER
API REST
API JSON
Nell'esempio riportato di seguito, l'ID progetto è "123412341234"; il tuo ID progetto sarà diverso.
"defaultObjectAcl": [ { "kind": "storage#objectAccessControl", "entity": "project-owners-123412341234", "role": "OWNER", "projectTeam": { "projectNumber": "123412341234", "team": "owners" } }, { "kind": "storage#objectAccessControl", "entity": "project-editors-123412341234", "role": "OWNER", "projectTeam": { "projectNumber": "123412341234", "team": "editors" } }, { "kind": "storage#objectAccessControl", "entity": "project-viewers-123412341234", "role": "READER", "projectTeam": { "projectNumber": "123412341234", "team": "viewers" } } ]
API XML
Nell'esempio riportato di seguito, gli ID ruolo del progetto iniziano con "00b4903a97..."; i tuoi ID progetto saranno diversi.
<?xml version='1.0' encoding='UTF-8'?> <AccessControlList> <Entries> <Entry> <Scope type='GroupById'> <ID>00b4903a9721...</ID> </Scope> <Permission>FULL_CONTROL</Permission> </Entry> <Entry> <Scope type='GroupById'> <ID>00b4903a9722...</ID> </Scope> <Permission>FULL_CONTROL</Permission> </Entry> <Entry> <Scope type='GroupById'> <ID>00b4903a9723...</ID> </Scope> <Permission>READ</Permission> </Entry> </Entries> </AccessControlList>
Tieni presente che l'ACL oggetto predefinito per un bucket appena creato è equivalente all'ACL projectPrivate
predefinito.
Recupero degli ACL
Per ottenere la lista di controllo degli accessi di una risorsa esistente:
Console
Vai al browser Cloud Storage nella console Google Cloud .
Vai al browser Cloud StorageVai all'oggetto di cui vuoi visualizzare l'elenco di controllo degli accessi.
Scegli Modifica accesso dal menu a discesa dell'oggetto.
Dovresti visualizzare una finestra di dialogo con le autorizzazioni dell'oggetto.
Per scoprire come ottenere informazioni dettagliate sugli errori relativi alle operazioni di Cloud Storage non riuscite nella console Google Cloud , consulta la sezione Risoluzione dei problemi.
Riga di comando
Utilizza il comando
objects describe
con il flag--format
per recuperare l'ACL di un oggetto:gcloud storage objects describe gs://BUCKET_NAME/OBJECT_NAME --format="default(acl)"
Dove:
BUCKET_NAME
è il nome del bucket che contiene l'oggetto di cui vuoi visualizzare la lista di controllo degli accessi. Ad esempio,my-bucket
.OBJECT_NAME
è il nome dell'oggetto di cui vuoi visualizzare l'elenco di controllo degli accessi. Ad esempio,paris.jpg
.
Librerie client
C++
Per saperne di più, consulta la documentazione di riferimento dell'API Cloud Storage per C++.
Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
L'esempio seguente recupera un ACL oggetto:
C#
Per saperne di più, consulta la documentazione di riferimento dell'API Cloud Storage per C#.
Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
L'esempio seguente recupera un ACL oggetto:
Go
Per saperne di più, consulta la documentazione di riferimento dell'API Cloud Storage per Go.
Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
L'esempio seguente recupera un ACL oggetto:
Java
Per saperne di più, consulta la documentazione di riferimento dell'API Cloud Storage per Java.
Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
L'esempio seguente recupera un ACL oggetto:
Node.js
Per saperne di più, consulta la documentazione di riferimento dell'API Cloud Storage per Node.js.
Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
L'esempio seguente recupera un ACL oggetto:
PHP
Per saperne di più, consulta la documentazione di riferimento dell'API Cloud Storage per PHP.
Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
L'esempio seguente recupera un ACL oggetto:
Python
Per saperne di più, consulta la documentazione di riferimento dell'API Cloud Storage per Python.
Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
L'esempio seguente recupera un ACL oggetto:
Ruby
Per saperne di più, consulta la documentazione di riferimento dell'API Cloud Storage per Ruby.
Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
L'esempio seguente recupera un ACL oggetto:
API REST
API JSON
Assicurati di disporre dell'autorizzazione
OWNER
per l'oggetto.Recupera l'ACL dell'oggetto con una richiesta
GET
.L'ACL dell'oggetto viene restituita in formato JSON, allegata al corpo della risposta.
Ad esempio, per restituire l'ACL per l'oggetto paris.jpg
nel bucket
example-travel-maps
:
curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://storage.googleapis.com/storage/v1/b/example-travel-maps/o/paris.jpg?projection=full
Dovresti visualizzare una risposta simile alla seguente:
{ "kind": "storage#object", "id": "example-travel-maps/paris.jpg/1412805837131000", "selfLink": "https://www.googleapis.com/storage/v1/b/example-travel-maps/o/paris.jpg", "name": "paris.jpg", "bucket": "example-travel-maps", ... "acl": [ { ... "entity": "project-owners-867489160491", "role": "OWNER", "projectTeam": { "projectNumber": "867489160491", "team": "owners" }, ... }, { ... "entity": "user-jeffersonloveshiking@gmail.com", "role": "OWNER", "email": "jeffersonloveshiking@gmail.com", ... }, { ... "entity": "group-gs-announce@googlegroups.com", "role": "READER", "email": "gs-announce@googlegroups.com", ... } ], "owner": { "entity": "user-jeffersonloveshiking@gmail.com" }, ... }
Puoi anche utilizzare il metodo GET
della risorsa objectAccessControls
per restituire singole voci nell'ACL di un oggetto.
API XML
Assicurati di disporre dell'autorizzazione
FULL_CONTROL
per il bucket o l'oggetto.Recupera l'ACL del bucket o dell'oggetto utilizzando il parametro della stringa di query
acl
in una richiesta GET Object.
Gli ACL sono descritti in XML, allegati al corpo della risposta.
Ad esempio, per restituire l'ACL per l'oggetto paris.jpg
nel bucket
example-travel-maps
:
curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://storage.googleapis.com/example-travel-maps/paris.jpg?acl
Dovresti visualizzare una risposta simile alla seguente:
<?xml version="1.0" encoding="UTF-8"?> <AccessControlList> <Owner> <ID>84fac329bceSAMPLE777d5d22b8SAMPLE77d85ac2SAMPLE2dfcf7c4adf34da46</ID> <Name>Owner Name</Name> </Owner> <Entries> <Entry> <Scope type="UserById"> <ID>84fac329bceSAMPLE777d5d22b8SAMPLE77d85ac2SAMPLE2dfcf7c4adf34da46</ID> <Name>Name</Name> </Scope> <Permission>FULL_CONTROL</Permission> </Entry> <Entry> <Scope type="UserByEmail"> <EmailAddress>jeffersonloveshiking@gmail.com</EmailAddress> <Name>Jefferson</Name> </Scope> <Permission>FULL_CONTROL</Permission> </Entry> <Entry> <Scope type="GroupByEmail"> <EmailAddress>gs-announce@googlegroups.com</EmailAddress> </Scope> <Permission>READ</Permission> </Entry> </Entries> </AccessControlList>
Puoi anche utilizzare il metodo JSON GET
della risorsa ObjectAccessControls
per restituire una voce ACL specifica.
Passaggi successivi
- Scopri di più sugli ACL.
- Scopri come semplificare il controllo dell'accesso utilizzando l'accesso uniforme a livello di bucket.
- Scopri di più sulle best practice per l'utilizzo delle ACL.