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:
Uso de comandos adicionais que só se aplicam a buckets com acesso uniforme no nível do bucket desativado
Uso da flag
-u
para especificar projetos para faturamento.Como usar a flag
-m
para executar operações em paralelo
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.delete 1 |
|
config |
Nenhum | |
cors |
get |
storage.buckets.get |
cors |
set |
storage.buckets.update |
cp |
storage.objects.list 2storage.objects.get storage.objects.create storage.objects.delete 3 |
|
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.create 4cloudkms.cryptoKeys.setIamPolicy |
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.get 5cloudkms.cryptoKeys.setIamPolicy 5 |
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.getIamPolicy 6 |
|
ls (listagem de objetos) |
storage.objects.list storage.objects.getIamPolicy 7 |
|
ls -b |
storage.buckets.get storage.buckets.getIamPolicy 6 |
|
mb |
storage.buckets.create |
|
mv |
storage.objects.list 2 (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.delete 3 (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.create 8 (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.setIamPolicy 8 (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.setIamPolicy |
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.createBillingAssignment 9 |
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 storage.objects.create storage.objects.delete 11storage.objects.list |
|
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.list astorage.objects.get storage.objects.create storage.objects.delete bstorage.objects.getIamPolicy storage.objects.setIamPolicy |
|
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.list astorage.objects.get storage.objects.create storage.objects.delete storage.objects.delete bstorage.objects.getIamPolicy storage.objects.setIamPolicy |
|
rsync -a rsync -p |
Objetos | storage.objects.get storage.objects.create storage.objects.delete cstorage.objects.list storage.objects.getIamPolicy storage.objects.setIamPolicy |
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
- Atribua papéis do IAM no nível do projeto e do bucket.
- Consulte os papéis do IAM que contêm permissões do Cloud Storage.