A tabela seguinte indica as autorizações da gestão de identidade e 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:
Usar comandos adicionais que se aplicam apenas a contentores com o acesso uniforme ao nível do contentor desativado
Usar a flag
-upara especificar projetos para faturaçãoUsar a flag
-mpara executar operações em paralelo
| 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.getstorage.objects.createstorage.objects.delete1 | |
config | Nenhum | |
cors | get | storage.buckets.get |
cors | set | storage.buckets.update |
cp | storage.objects.list2storage.objects.getstorage.objects.createstorage.objects.delete3 | |
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.getstorage.buckets.getIamPolicy |
iam | set ou ch | storage.buckets.getstorage.buckets.getIamPolicystorage.buckets.setIamPolicystorage.buckets.update |
kms | authorize | resourceManager.projects.getiam.serviceAccounts.create4cloudkms.cryptoKeys.setIamPolicy |
kms | encryption | storage.buckets.get |
kms | encryption -d | storage.buckets.getstorage.buckets.update |
kms | encryption -k | storage.buckets.getstorage.buckets.updateresourceManager.projects.get5cloudkms.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.liststorage.buckets.getIamPolicy6 | |
ls (objetos de fichas) | storage.objects.liststorage.objects.getIamPolicy7 | |
ls -b | storage.buckets.getstorage.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.updatepubsub.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.getstorage.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.getstorage.buckets.updatestorage.buckets.setIamPolicy |
perfdiag | storage.buckets.getstorage.objects.createstorage.objects.deletestorage.objects.liststorage.objects.get | |
rb | storage.buckets.delete | |
requesterpays | get | storage.buckets.get |
requesterpays | set on | storage.buckets.update |
requesterpays | set off | storage.buckets.updateresourcemanager.projects.createBillingAssignment9 |
retention | clear, event-default, lock ou set | storage.buckets.update |
retention | event ou temp | storage.objects.getstorage.objects.liststorage.objects.update |
retention | get | storage.buckets.get |
rewrite -k | storage.objects.liststorage.objects.getstorage.objects.createstorage.objects.delete | |
rewrite -s | storage.objects.liststorage.objects.getstorage.objects.createstorage.objects.deletestorage.objects.update | |
rm | storage.objects.delete | |
rm -a | storage.objects.deletestorage.objects.list | |
rm -r (eliminar um contentor) | storage.buckets.deletestorage.objects.deletestorage.objects.list | |
rpo | get | storage.buckets.get |
rpo | set | storage.buckets.getstorage.buckets.update |
rsync | storage.objects.getstorage.objects.createstorage.objects.delete11storage.objects.list | |
rsync -n | storage.objects.list (para os contentores de origem e destino) | |
setmeta | storage.objects.getstorage.objects.liststorage.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.getstorage.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 de 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.getstorage.buckets.getIamPolicy |
acl | set ou ch | Contentores | storage.buckets.getstorage.buckets.getIamPolicystorage.buckets.setIamPolicystorage.buckets.update |
acl | get | Objetos | storage.objects.getstorage.objects.getIamPolicy |
acl | set ou ch | Objetos | storage.objects.getstorage.objects.getIamPolicystorage.objects.setIamPolicystorage.objects.update |
cp -a ou cp -p | Objetos | storage.objects.listastorage.objects.getstorage.objects.createstorage.objects.deletebstorage.objects.getIamPolicystorage.objects.setIamPolicy | |
defacl | get | Contentores | storage.buckets.getstorage.buckets.getIamPolicy |
defacl | set ou ch | Contentores | storage.buckets.getstorage.buckets.getIamPolicystorage.buckets.setIamPolicystorage.buckets.update |
iam | get | Objetos | storage.objects.getstorage.objects.getIamPolicy |
iam | set ou ch | Objetos | storage.objects.getstorage.objects.getIamPolicystorage.objects.setIamPolicystorage.objects.update |
mv -a ou mv -p | Objetos | storage.objects.listastorage.objects.getstorage.objects.createstorage.objects.deletestorage.objects.deletebstorage.objects.getIamPolicystorage.objects.setIamPolicy | |
rsync -arsync -p | Objetos | storage.objects.getstorage.objects.createstorage.objects.deletecstorage.objects.liststorage.objects.getIamPolicystorage.objects.setIamPolicy |
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?
- Atribua funções do IAM ao nível do projeto e do contentor.
- Reveja as funções de IAM que contêm autorizações do Cloud Storage.