Autorizações de IAM para comandos gsutil

A tabela seguinte indica as autorizações da gestão de identidade e de acesso (IAM) necessárias para executar cada comando gsutil do Cloud Storage num determinado recurso. As autorizações de IAM são agrupadas para criar funções. Conceda funções a utilizadores e grupos.

Nesta página, também pode encontrar informações sobre o seguinte:

Comando Subcomando Autorizações de IAM necessárias
autoclass get storage.buckets.get
autoclass set storage.buckets.update
cat storage.objects.get
compose storage.objects.get
storage.objects.create
storage.objects.delete1
config Nenhum
cors get storage.buckets.get
cors set storage.buckets.update
cp storage.objects.list2 (para o contentor de destino)
storage.objects.get (para os objetos de origem)
storage.objects.create (para o contentor de destino)
storage.objects.delete3 (para o contentor de destino)
defstorageclass get storage.buckets.get
defstorageclass set storage.buckets.update
du storage.objects.get
hash storage.objects.get
help Nenhum
hmacKeys create storage.hmacKeys.create
hmacKeys delete storage.hmacKeys.delete
hmacKeys get storage.hmacKeys.get
hmacKeys list storage.hmacKeys.list
hmacKeys update storage.hmacKeys.update
iam get storage.buckets.get
storage.buckets.getIamPolicy
iam set ou ch storage.buckets.get
storage.buckets.getIamPolicy
storage.buckets.setIamPolicy
storage.buckets.update
kms authorize resourceManager.projects.get
iam.serviceAccounts.create4
cloudkms.cryptoKeys.setIamPolicy (para a chave do Cloud KMS que está a ser autorizada)
kms encryption storage.buckets.get
kms encryption -d storage.buckets.get
storage.buckets.update
kms encryption -k storage.buckets.get
storage.buckets.update
resourceManager.projects.get5
cloudkms.cryptoKeys.setIamPolicy5
kms serviceaccount resourceManager.projects.get
label get storage.buckets.get
label set/ch storage.buckets.update
lifecycle get storage.buckets.get
lifecycle set/ch storage.buckets.update
logging get storage.buckets.get
logging set storage.buckets.update
ls (contentores de fichas) storage.buckets.list
storage.buckets.getIamPolicy6
ls (objetos de fichas) storage.objects.list
storage.objects.getIamPolicy7
ls -b storage.buckets.get
storage.buckets.getIamPolicy6
mb storage.buckets.create
mv storage.objects.list2 (para o contentor de destino)
storage.objects.get (para os objetos de origem)
storage.objects.create (para o contentor de destino)
storage.objects.delete (para o contentor de origem)
storage.objects.delete3 (para o contentor de destino)
notification create storage.buckets.update
pubsub.topics.get (para o projeto que contém o tópico do Pub/Sub)
pubsub.topics.create8 (para o projeto que contém o tópico do Pub/Sub)
pubsub.topics.getIamPolicy (para o tópico do Pub/Sub que recebe notificações)
pubsub.topics.setIamPolicy8 (para o tópico do Pub/Sub que recebe notificações)
notification create -s storage.buckets.update
notification delete storage.buckets.get
storage.buckets.update
notification list storage.buckets.get
notification watchbucket storage.buckets.update
notification stopchannel storage.buckets.update
pap get storage.buckets.get
pap set storage.buckets.get
storage.buckets.update
storage.buckets.setIamPolicy10
perfdiag storage.buckets.get
storage.objects.create
storage.objects.delete
storage.objects.list
storage.objects.get
rb storage.buckets.delete
requesterpays get storage.buckets.get
requesterpays set on storage.buckets.update
requesterpays set off storage.buckets.update
resourcemanager.projects.createBillingAssignment9
retention clear, event-default, lock ou set storage.buckets.update
retention event ou temp storage.objects.get
storage.objects.list
storage.objects.update
retention get storage.buckets.get
rewrite -k storage.objects.list
storage.objects.get
storage.objects.create
storage.objects.delete
rewrite -s storage.objects.list
storage.objects.get
storage.objects.create
storage.objects.delete
storage.objects.update
rm storage.objects.delete
rm -a storage.objects.delete
storage.objects.list
rm -r (eliminar um contentor) storage.buckets.delete
storage.objects.delete
storage.objects.list
rpo get storage.buckets.get
rpo set storage.buckets.get
storage.buckets.update
rsync storage.objects.get (para os objetos de origem e o contentor de destino)
storage.objects.create (para o contentor de destino)
storage.objects.delete11 (para o contentor de destino)
storage.objects.list (para os contentores de origem e de destino)
rsync -n storage.objects.list (para os contentores de origem e destino)
setmeta storage.objects.get
storage.objects.list
storage.objects.update
signurl Nenhuma; no entanto, a conta de serviço cuja chave é usada como parte deste comando tem de ter autorização para executar o pedido que está a ser codificado no URL assinado.
stat storage.objects.get
test Nenhum
ubla set storage.buckets.get
storage.buckets.update
ubla get storage.buckets.get
update Nenhum
version Nenhum
versioning get storage.buckets.get
versioning set storage.buckets.update
web get storage.buckets.get
web set storage.buckets.update

1Esta autorização só é necessária se o objeto composto tiver o mesmo nome que um objeto que já existe no contentor.

2 Esta autorização só é necessária quando o destino no comando contém um caminho de objeto.

3Esta autorização só é necessária se usar carregamentos compostos paralelos ou se não usar a flag -n, mas inserir um objeto com o mesmo nome de um objeto que já existe no contentor.

4Esta autorização só é necessária se não tiver uma conta de serviço do Cloud Storage associada ao projeto.

5Se usar o gsutil kms encryption -k e a conta de serviço do seu projeto não tiver autorização para aceder à chave do Cloud KMS pedida, o gsutil executa o gsutil kms authorize para conceder à sua conta de serviço a autorização necessária.

6Esta autorização só é necessária se quiser que as políticas do IAM sejam incluídas nos detalhes.

7Esta autorização só é necessária se quiser que as políticas de IAM sejam incluídas nos detalhes e não se aplica a contentores com o acesso uniforme ao nível do contentor ativado.

8Estas autorizações não são necessárias se o tópico já existir e a conta de serviço relevante tiver acesso ao mesmo.

9Esta autorização só é necessária se não incluir um projeto de faturação no seu pedido. Consulte os requisitos de utilização e acesso do Requester Pays para mais informações.

10Esta autorização não é necessária se o comando não alterar a definição do contentor.

11Esta autorização só é necessária se usar a flag -d ou se inserir um objeto com o mesmo nome, mas dados diferentes, de um objeto que já existe no contentor.

Métodos relacionados com a LCA

A tabela seguinte lista as autorizações de IAM necessárias para executar comandos gsutil que se aplicam especificamente à gestão de ACLs. Estes comandos aplicam-se apenas a contentores que tenham o acesso uniforme ao nível do contentor desativado.

Comando Subcomando Recurso sobre o qual foi realizada uma ação Autorizações de IAM necessárias
acl get Contentores storage.buckets.get
storage.buckets.getIamPolicy
acl set ou ch Contentores storage.buckets.get
storage.buckets.getIamPolicy
storage.buckets.setIamPolicy
storage.buckets.update
acl get Objetos storage.objects.get
storage.objects.getIamPolicy
acl set ou ch Objetos storage.objects.get
storage.objects.getIamPolicy
storage.objects.setIamPolicy
storage.objects.update
cp -a ou cp -p Objetos storage.objects.lista (para o contentor de destino)
storage.objects.get (para os objetos de origem)
storage.objects.create (para o contentor de destino)
storage.objects.deleteb (para o contentor de destino)
storage.objects.getIamPolicy (para os objetos de origem)
storage.objects.setIamPolicy (para o contentor de destino)
defacl get Contentores storage.buckets.get
storage.buckets.getIamPolicy
defacl set ou ch Contentores storage.buckets.get
storage.buckets.getIamPolicy
storage.buckets.setIamPolicy
storage.buckets.update
iam get Objetos storage.objects.get
storage.objects.getIamPolicy
iam set ou ch Objetos storage.objects.get
storage.objects.getIamPolicy
storage.objects.setIamPolicy
storage.objects.update
mv -a ou mv -p Objetos storage.objects.lista (para o contentor de destino)
storage.objects.get (para os objetos de origem)
storage.objects.create (para o contentor de destino)
storage.objects.delete (para o contentor de origem)
storage.objects.deleteb (para o contentor de destino)
storage.objects.getIamPolicy (para os objetos de origem)
storage.objects.setIamPolicy (para o contentor de destino)
rsync -a ou rsync -p Objetos storage.objects.get (para os objetos de origem e o contentor de destino)
storage.objects.create (para o contentor de destino)
storage.objects.deletec (para o contentor de destino)
storage.objects.list (para os contentores de origem e de destino)
storage.objects.getIamPolicy (para os objetos de origem)
storage.objects.setIamPolicy (para o contentor de destino)

a Esta autorização só é necessária quando o destino no comando contém um caminho de objeto.

bEsta autorização só é necessária se usar carregamentos compostos paralelos ou se não usar a flag -n, mas inserir um objeto com o mesmo nome de um objeto que já existe no contentor.

cEsta autorização só é necessária se usar a flag -d ou se inserir um objeto com o mesmo nome, mas dados diferentes, de um objeto que já existe no contentor.

A bandeira de nível superior -u

Se usar a flag -u global para especificar um projeto que deve ser faturado pelo seu pedido, tem de ter autorização serviceusage.services.use para o projeto que especificar. A flag -u é usada, por exemplo, quando acede a um contentor com a opção Requester Pays ativada.

Carateres universais e flags recursivas

Se usar carateres universais de URI para selecionar vários objetos num comando, tem de ter autorização storage.objects.list para o contentor que contém os objetos. Da mesma forma, se usar carateres universais URI para selecionar vários contentores num comando, tem de ter a autorização storage.buckets.list para os projetos que contêm os contentores.

Se usar as flags recursivas (-r e -R), tem de ter autorização storage.objects.list para o contentor relevante, além das autorizações necessárias para o comando específico que está a usar.

A bandeira de nível superior -m

Normalmente, se usar um comando gsutil que atue sobre vários objetos ou contentores, o comando falha no primeiro erro. No entanto, quando usa a flag -m global, o gsutil regista todos os erros que encontra e continua com a operação.

Por exemplo, suponhamos que tenta executar um comando acl set numa série de objetos, mas só tem autorização para o fazer em alguns dos objetos. Se não usar a flag -m, o gsutil aplica as LCAs com êxito até atingir um objeto para o qual não tem autorização para aplicar uma LCA. Nessa altura, o gsutil falha. Se usar a flag -m, o gsutil regista os erros que surgem quando tenta aplicar uma LCA a um objeto para o qual não tem autorização, mas, caso contrário, continua com a operação.

O que se segue?