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:
Usar comandos adicionais que se aplicam apenas a contentores com o acesso uniforme ao nível do contentor desativado
Usar a flag
-u
para especificar projetos para faturaçãoUsar a flag
-m
para 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.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 (contentores de fichas) |
storage.buckets.list storage.buckets.getIamPolicy 6 |
|
ls (objetos de fichas) |
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 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.delete 3 (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.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 (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 storage.objects.create storage.objects.delete 11storage.objects.list |
|
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.list astorage.objects.get storage.objects.create storage.objects.delete bstorage.objects.getIamPolicy storage.objects.setIamPolicy |
|
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.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 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?
- Atribuir 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.