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.

Nas seções abaixo da tabela, veja outros comandos que se aplicam somente a buckets com o acesso uniforme no nível do bucket desativado, bem como observações sobre o uso de caracteres curinga, sinalização -r, sinalização -u e sinalização -m.

Comando Subcomando Recurso afetado Permissões de IAM obrigatórias
cat Objetos storage.objects.get
compose Objetos storage.objects.get
storage.objects.create
storage.objects.delete1
config Nenhum
cors get buckets storage.buckets.get
cors set Buckets storage.buckets.update
cp Objetos 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 Buckets storage.buckets.get
defstorageclass set Buckets storage.buckets.update
du Objetos storage.objects.get
hash Objetos storage.objects.get
help Nenhum
hmacKeys create Chaves HMAC storage.hmacKeys.create
hmacKeys delete Chaves HMAC storage.hmacKeys.delete
hmacKeys get Chaves HMAC storage.hmacKeys.get
hmacKeys list Chaves HMAC storage.hmacKeys.list
hmacKeys update Chaves HMAC storage.hmacKeys.update
iam get buckets storage.buckets.get
storage.buckets.getIamPolicy
iam set ou ch Buckets storage.buckets.get
storage.buckets.getIamPolicy
storage.buckets.setIamPolicy
storage.buckets.update
kms authorize Projetos resourceManager.projects.get
iam.serviceAccounts.create4
cloudkms.cryptoKey.setIamPolicy (para a chave do Cloud KMS sendo autorizada)
kms encryption Buckets storage.buckets.get
kms encryption -d buckets storage.buckets.get
storage.buckets.update
kms encryption -k Buckets, projetos7 storage.buckets.get
storage.buckets.update
resourceManager.projects.get7
cloudkms.cryptoKey.setIamPolicy7
kms serviceaccount Projetos resourceManager.projects.get
label get buckets storage.buckets.get
label set/ch buckets storage.buckets.update
lifecycle get buckets storage.buckets.get
lifecycle set/ch buckets storage.buckets.update
logging get buckets storage.buckets.get
logging set buckets storage.buckets.update
ls Projetos storage.buckets.list
storage.buckets.get5
storage.buckets.getIamPolicy6
ls Buckets, objetos storage.objects.list
storage.objects.get5
storage.objects.getIamPolicy10
ls -b Buckets storage.buckets.get
storage.buckets.getIamPolicy6
mb Buckets storage.buckets.create
mv Objetos 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 Buckets 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 Buckets storage.buckets.update
notification delete buckets storage.buckets.update
notification list buckets storage.buckets.get
notification watchbucket buckets storage.buckets.update
notification stopchannel buckets storage.buckets.update
perfdiag buckets storage.buckets.get
storage.objects.create
storage.objects.delete
storage.objects.list
storage.objects.get
rb buckets storage.buckets.delete
requesterpays get buckets storage.buckets.get
requesterpays set on buckets storage.buckets.get
storage.buckets.update
requesterpays set off Buckets storage.buckets.get
storage.buckets.update
resourcemanager.projects.createBillingAssignment9
retention clear, event-default, lock ou set buckets storage.buckets.update
retention event ou temp Objetos storage.objects.get
storage.objects.list
storage.objects.update
retention get Buckets storage.buckets.get
rewrite -k Objetos storage.objects.list
storage.objects.get
storage.objects.create
storage.objects.delete
rewrite -s Objetos storage.objects.list
storage.objects.get
storage.objects.create
storage.objects.delete
storage.objects.update
rm Buckets storage.buckets.delete
storage.objects.delete
storage.objects.list
rm Objetos storage.objects.delete
storage.objects.get
rsync Objetos 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 Objetos storage.objects.list (para os buckets de origem e destino)
setmeta Objetos storage.objects.get
storage.objects.list
storage.objects.update
signurl Nenhum, no entanto, a conta de serviço afiliada à solicitação precisa ter storage.objects.get.
stat Objetos storage.objects.get
test Nenhum
ubla set buckets storage.buckets.get
storage.buckets.update
ubla get Buckets storage.buckets.get
update Nenhum
version Nenhum
versioning get buckets storage.buckets.get
versioning set buckets storage.buckets.update
web get buckets storage.buckets.get
web set Buckets 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ê não usar a sinalização -n e inserir um objeto com 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.

5Essa permissão é obrigatória somente quando as sinalizações -L ou -l são usadas no comando.

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

7Se 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.

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 é 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.

11Essa permissão é obrigatória somente se você não usar a sinalização -d e inserir um objeto com o mesmo nome de 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ê não usar a sinalização -n e inserir um objeto com o mesmo nome de um objeto que já existe no bucket.

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

Sinalização de nível superior -u

Se você usar a sinalização de nível superior -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 sinalização -u é usada, por exemplo, ao acessar um bucket com pagamentos do solicitante ativados.

Caracteres curinga e sinalizações recursivas

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 sinalização de nível superior -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