Permissões de IAM para comandos gsutil

Esta tabela contém a lista de permissões do gerenciamento de identidade e acesso (IAM, na sigla em inglês) necessárias para executar cada comando gsutil do Cloud Storage em um recurso específico. As permissões do IAM são agrupadas para criar papéis. Você concede papéis a usuários e grupos.

Nessa página, você também encontra informações sobre:

Comando Subcomando Permissões de IAM obrigató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 bucket de destino)
storage.objects.get (para os objetos de origem)
storage.objects.create (para o bucket de destino)
storage.objects.delete3 (para o bucket 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 sendo 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 (listagem de buckets) storage.buckets.list
storage.buckets.getIamPolicy6
ls (listagem de objetos) storage.objects.list
storage.objects.getIamPolicy7
ls -b storage.buckets.get
storage.buckets.getIamPolicy6
mb storage.buckets.create
mv storage.objects.list2 (para o bucket de destino)
storage.objects.get (para os objetos de origem)
storage.objects.create (para o bucket de destino)
storage.objects.delete (para o bucket de origem)
storage.objects.delete3 (para o bucket 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 (exclusão de um bucket) 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 bucket de destino)
storage.objects.create (para o bucket de destino)
storage.objects.delete11 (para o bucket de destino)
storage.objects.list (para os buckets de origem e destino)
rsync -n storage.objects.list (para os buckets de origem e destino)
setmeta storage.objects.get
storage.objects.list
storage.objects.update
signurl Nenhum. No entanto, a conta de serviço cuja chave é usada como parte deste comando precisa ter permissão para executar a solicitação codificada 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

1Essa permissão só é obrigatória se o objeto composto tiver o mesmo nome que um objeto atual no bucket.

2 Essa permissão é obrigatória somente quando o destino no comando contém um caminho de objeto.

3Essa permissão é obrigatória somente se você usa uploads compostos paralelos ou se não usa a sinalização -n, mas insere um objeto que tem o mesmo nome de um objeto que já existe no bucket.

4Essa permissão é obrigatória somente se você não tem uma conta de serviço do Cloud Storage associada ao projeto.

5Se você usa gsutil kms encryption -k e a conta de serviço do projeto não tem permissão para acessar a chave do Cloud KMS solicitada, a gsutil executará gsutil kms authorize para conceder à conta de serviço a permissão necessária.

6Essa permissão é obrigatória somente se você quiser incluir as políticas de IAM nos detalhes.

7Essa permissão é obrigatória somente se você quiser incluir as políticas de IAM nos detalhes e não se aplica a buckets com o acesso uniforme no nível do bucket ativado.

8Essas permissões não são obrigatórias se o tópico já existe e a conta de serviço relevante tem acesso a ele.

9Essa permissão só será obrigatória se você não incluir um projeto de faturamento na solicitação. Consulte Requisitos de uso e acesso dos pagamentos do solicitante para mais informações.

10Essa permissão não será necessária se o comando não alterar a configuração do bucket.

11Essa permissão é obrigatória somente se você usar a sinalização -d ou se inserir um objeto com o mesmo nome de dados diferentes que Um objeto que já existe no bucket.

Métodos relacionados à ACL

A tabela a seguir lista as permissões de IAM necessárias para executar comandos gsutil que se aplicam especificamente ao gerenciamento de ACLs. Estes comandos se aplicam apenas a buckets com o acesso uniforme no nível do bucket desativado.

Comando Subcomando Recurso afetado Permissões de IAM obrigatórias
acl get Buckets storage.buckets.get
storage.buckets.getIamPolicy
acl set ou ch Buckets 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 bucket de destino)
storage.objects.get (para os objetos de origem)
storage.objects.create (para o bucket de destino)
storage.objects.deleteb (para o bucket de destino)
storage.objects.getIamPolicy (para os objetos de origem)
storage.objects.setIamPolicy (para o bucket de destino)
defacl get Buckets storage.buckets.get
storage.buckets.getIamPolicy
defacl set ou ch Buckets 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 bucket de destino)
storage.objects.get (para os objetos de origem)
storage.objects.create (para o bucket de destino)
storage.objects.delete (para o bucket de origem)
storage.objects.deleteb (para o bucket de destino)
storage.objects.getIamPolicy (para os objetos de origem)
storage.objects.setIamPolicy (para o bucket de destino)
rsync -a ou rsync -p Objetos storage.objects.get (para os objetos de origem e o bucket de destino)
storage.objects.create (para o bucket de destino)
storage.objects.deletec (para o bucket de destino)
storage.objects.list (para os buckets de origem e destino)
storage.objects.getIamPolicy (para os objetos de origem)
storage.objects.setIamPolicy (para o bucket de destino)

a Essa permissão é obrigatória somente quando o destino no comando contém um caminho de objeto.

bEssa permissão é obrigatória somente se você usa uploads compostos paralelos ou se não usa a sinalização -n, mas insere um objeto que tem o mesmo nome de um objeto que já existe no bucket.

cEssa permissão é obrigatória somente se você usar a sinalização -d ou se inserir um objeto com o mesmo nome de dados diferentes, Um objeto que já existe no bucket.

Sinalização de nível superior -u

Se você usar a flag global -u para especificar um projeto que deverá ser faturado na solicitação, será necessário ter a permissão serviceusage.services.use no projeto especificado. A flag -u é usada, por exemplo, ao acessar um bucket com a opção pagamentos do solicitante ativada.

Caracteres curinga e sinalizadores recursivos

Se você usar caracteres curinga de URI para selecionar vários objetos em um comando, será necessário ter a permissão storage.objects.list para o bucket que contém os objetos. Da mesma forma, se usar caracteres curinga de URI para selecionar vários buckets em um comando, será necessário ter a permissão storage.buckets.list nos projetos que contêm os buckets.

Se você usar as sinalizações recursivas (-r e -R), será necessário ter a permissão storage.objects.list no bucket pertinente, além das permissões obrigatórias do comando específico usado.

Sinalização de nível superior -m

Normalmente, ao executar um comando gsutil que afeta vários objetos ou buckets, esse comando falha no primeiro erro. No entanto, quando você usa a flag global -m, a gsutil registra todos os erros encontrados e continua a operação.

Por exemplo, você tenta executar um comando acl set em uma série de objetos, mas só tem permissão para fazer isso em alguns dos objetos. Se você não usar a sinalização -m, a gsutil aplicará as ACLs até alcançar um objeto sem permissão de aplicação de ACL. Nesse momento, a gsutil falhará. Se você usar a sinalização -m, a gsutil registrará os erros que surgirem quando tentar aplicar uma ACL a um objeto sem permissão, mas continuará a operação.

A seguir