Nesta página, você verá como controlar o acesso a buckets e objetos usando listas de controle de acesso (ACLs). As ACLs são um mecanismo que pode ser usado para definir quem tem acesso a buckets e objetos, além do nível de acesso dessas pessoas.
Consulte Visão geral da ACL para saber se é necessário usar ACLs para controlar o acesso aos recursos.
Funções exigidas
Para receber as permissões necessárias para criar e gerenciar ACLs, solicite ao administrador o papel do IAM de Administrador do Storage (roles/storage.admin
) no bucket que contém os objetos desejados. para criar e gerenciar ACLs.
Esse papel predefinido contém as permissões necessárias para criar e gerenciar ACLs. Para acessar as permissões exatas necessárias, expanda a seção Permissões necessárias:
Permissões necessárias
storage.buckets.get
storage.buckets.list
- Essa permissão é necessária apenas para usar o console do Google Cloud para realizar as tarefas nesta página.
storage.buckets.setIamPolicy
storage.buckets.update
storage.objects.get
storage.objects.getIamPolicy
storage.objects.setIamPolicy
storage.objects.update
Também é possível receber essas permissões com funções personalizadas.
Para informações sobre como conceder papéis nos buckets, consulte Usar o IAM com buckets.
Definir ou modificar ACLs
Console
Acesse o navegador do Cloud Storage no console do Google Cloud.
Acessar o navegador do Cloud StorageNa lista de buckets, clique no nome do bucket que contém o objeto com a ACL que você quer modificar.
Clique no nome do objeto para que você quer definir ou modificar ACLs.
Clique em Editar acesso.
Uma caixa de diálogo de permissão com a ACL atual do objeto é aberta.
Clique em + Adicionar entrada.
Escolha o tipo de entidade que receberá a permissão.
A Entidade especifica o tipo de coisa que está recebendo a permissão (por exemplo, um usuário ou um grupo). Consulte Escopos de controle de acesso para ver a lista de valores aceitos em Entidade.
Digite um valor em Nome.
O Nome identifica um usuário, grupo ou outro tipo de entidade específico. Consulte Escopos de controle de acesso para ver a lista de valores aceitos em Nome.
Juntos, Entidade e Nome definem quem recebe a permissão.
Selecione um valor para Acesso.
O Acesso especifica a permissão que será definida para o objeto. Consulte Permissões de controle de acessopara ver a lista de valores aceitos em Acesso.
Clique em Salvar.
Para saber como acessar informações detalhadas de erro sobre operações do Cloud Storage com falha no console do Google Cloud, consulte Solução de problemas.
Linha de comando
Para adicionar, modificar ou remover uma concessão individual em um objeto, use o comando objects update
com a flag relevante:
gcloud storage objects update gs://BUCKET_NAME/OBJECT_NAME FLAG
Em que:
BUCKET_NAME
é o nome do bucket que contém o objeto a que a modificação se aplica. Por exemplo,example-travel-maps
.OBJECT_NAME
é o nome do objeto ao qual a modificação se aplica. Por exemplo,paris.jpg
.FLAG
é um destes:--add-acl-grant
, com a concessão que você quer adicionar ou modificar. Por exemplo,--add-acl-grant=entity=user-jane@gmail.com,role=READER
.--remove-acl-grant
, com a entidade cujo acesso você quer remover. Por exemplo,--remove-acl-grant=user-jane@gmail.com
.
Para substituir todas as ACLs de um objeto:
Defina as ACLs em um arquivo no formato JSON ou YAML.
Use o comando
objects update
com a flag--acl-file
:gcloud storage objects update gs://BUCKET_NAME/OBJECT_NAME --acl-file=FILE_LOCATION
Em que:
BUCKET_NAME
é o nome do bucket que contém o objeto a que as ACLs se aplicam. Por exemplo,example-travel-maps
.OBJECT_NAME
é o nome do objeto ao qual as ACLs se aplicam. Por exemplo,paris.jpg
.FILE_LOCATION
é o caminho local para o arquivo que contém as ACLs definidas. Por exemplo,Desktop/acls.json
.
O conteúdo de um exemplo de arquivo ACLs é mostrado abaixo. Essas ACLs concedem aos proprietários do projeto 867489160491
e à usuária jane@gmail.com
a permissão OWNER
no objeto paris.jpg
. Elas também concedem aos membros do grupo gs-announce
a permissão READER
nesse objeto:
[ { "entity": "project-owners-867489160491", "role": "OWNER", "projectTeam": { "projectNumber": "867489160491", "team": "owners" }, }, { "entity": "user-jane@gmail.com", "email": "jane@gmail.com", "role": "OWNER" }, { "entity": "group-gs-announce@googlegroups.com", "email": "gs-announce@googlegroups.com", "role": "READER" } ]
Bibliotecas de cliente
C++
Para mais informações, consulte a documentação de referência da API Cloud Storage C++.
Para autenticar no Cloud Storage, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Na amostra a seguir, uma ACL é adicionada a um objeto:
Na amostra a seguir, uma ACL é removida de um objeto:
C#
Para mais informações, consulte a documentação de referência da API Cloud Storage C#.
Para autenticar no Cloud Storage, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Na amostra a seguir, uma ACL é adicionada a um objeto:
Na amostra a seguir, uma ACL é removida de um objeto:
Go
Para mais informações, consulte a documentação de referência da API Cloud Storage Go.
Para autenticar no Cloud Storage, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Na amostra a seguir, uma ACL é adicionada a um objeto:
Na amostra a seguir, uma ACL é removida de um objeto:
Java
Para mais informações, consulte a documentação de referência da API Cloud Storage Java.
Para autenticar no Cloud Storage, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Na amostra a seguir, uma ACL é adicionada a um objeto:
Na amostra a seguir, uma ACL é removida de um objeto:
Node.js
Para mais informações, consulte a documentação de referência da API Cloud Storage Node.js.
Para autenticar no Cloud Storage, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Na amostra a seguir, uma ACL é adicionada a um objeto:
Na amostra a seguir, uma ACL é removida de um objeto:
PHP
Para mais informações, consulte a documentação de referência da API Cloud Storage PHP.
Para autenticar no Cloud Storage, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Na amostra a seguir, uma ACL é adicionada a um objeto:
Na amostra a seguir, uma ACL é removida de um objeto:
Python
Para mais informações, consulte a documentação de referência da API Cloud Storage Python.
Para autenticar no Cloud Storage, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Na amostra a seguir, uma ACL é adicionada a um objeto:
Na amostra a seguir, uma ACL é removida de um objeto:
Ruby
Para mais informações, consulte a documentação de referência da API Cloud Storage Ruby.
Para autenticar no Cloud Storage, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Na amostra a seguir, uma ACL é adicionada a um objeto:
Na amostra a seguir, uma ACL é removida de um objeto:
APIs REST
API JSON
Ao criar um objeto, é possível especificar a propriedade acl[]
no corpo da solicitação ou o parâmetro de consulta predefinedAcl
em uma solicitação insert. No caso de um objeto atual, especifique a propriedade acl[]
ou o parâmetro de consulta predefinedAcl
em uma solicitação patch ou update.
Para a definição da propriedade da ACL de objeto, consulte o recurso ObjectAccessControls
.
Defina as ACLs de um arquivo JSON.
Por exemplo, se a Access Control List conceder aos proprietários do projeto
867489160491
e ao usuáriojane@gmail.com
a permissãoOWNER
, bem como conceder aos membros do grupogs-announce
a permissãoREADER
, você terá um arquivo chamadoacls.json
com o seguinte conteúdo:{ "acl": [ { "entity": "project-owners-867489160491", "role": "OWNER", "projectTeam": { "projectNumber": "867489160491", "team": "owners" } }, { "entity": "user-jane@gmail.com", "role": "OWNER", "email": "jane@gmail.com" }, { "entity": "group-gs-announce@googlegroups.com", "role": "READER", "email": "gs-announce@googlegroups.com" } ] }
Envie uma solicitação patch com o arquivo JSON e especifique o objeto no qual serão definidas as ACLs.
Por exemplo, o comando cURL a seguir aplica um payload JSON do documento acls.json
a um objeto chamado paris.jpg
no bucket example-travel-maps
:
curl -X PATCH --data @acls.json -H "Content-Type: application/json" \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://storage.googleapis.com/storage/v1/b/example-travel-maps/o/paris.jpg
API XML
Na API XML, as ACLs estão no formato XML. É necessário anexar um documento XML ao corpo das solicitações para alterar ACLs de intervalos e objetos. Quando são obtidas ACLs de intervalos e objetos, é retornado um documento XML. Esse documento contém as entradas individuais da ACL de bucket ou de objeto.
Depois de criar um bucket com uma solicitação
PUT
Bucket, use uma segunda solicitação PUT Bucket com o parâmetro?acl
para alterar a ACL do bucket.Depois de fazer upload de um objeto com uma solicitação
PUT
Object, altere a ACL com outra solicitação PUT usando o parâmetro?acl
ou o cabeçalho de solicitaçãox-googl-acl
.
Por exemplo, o comando cURL a seguir aplica um payload XML do documento acls.xml
a um objeto chamado paris.jpg
no bucket example-travel-maps
:
curl -X PUT --data-binary @acls.xml \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://storage.googleapis.com/example-travel-maps/paris.jpg?acl
Use a sintaxe de ACL a seguir com o documento XML:
Elemento | Descrição |
---|---|
AccessControlList |
Contêiner para elementos Entries e Owner . |
Owner |
Contêiner para elementos DisplayName e ID . Esse elemento não é necessário para objetos, porque um objeto é sempre propriedade do usuário que fez o upload. Esse elemento é usado quando a sintaxe de ACL do Amazon S3 for usada em um cenário de migração. Amazon Simple Storage Service e Amazon S3 são marcas registradas da Amazon.com, Inc. ou de afiliadas nos Estados Unidos e/ou em outros países. |
ID |
ID do Cloud Storage do proprietário do bucket. |
DisplayName |
Não implementado. O valor é sempre uma string vazia. |
Entries |
Contêiner para nenhum ou mais elementos Entry . |
Entry |
Contêiner para elementos Scope e Permission . Um Entry precisa conter apenas um elemento Scope e um Permission . |
Scope |
Contêiner para um elemento ID , EmailAddress ou Domain que define o escopo da ACL. Esse elemento precisa ter um atributo type que contenha um dos seguintes valores: UserByID , UserByEmail , GroupByID , GroupByEmail , GroupByDomain , AllUsers ou AllAuthenticatedUsers . |
ID |
Identificador do beneficiário quando a entrada de permissão é especificada por ID. |
EmailAddress |
Identificador do e-mail do beneficiário quando a entrada de permissão é especificada por e-mail. |
Domain |
Identificador do domínio do beneficiário quando a entrada de permissão é especificada por domínio. |
Name |
Elemento opcional que pode ser especificado ou adicionado automaticamente, se o escopo for UserByEmail ou GroupByEmail . |
Permission |
Permissão concedida: READ , WRITE ou FULL_CONTROL . |
Lembre-se dos pontos a seguir ao trabalhar com ACLs usando a API XML:
- Apenas o formato XML descrito acima pode ser usado.
Não é possível definir escopos duplicados.
É possível ter muitas entradas no XML da ACL, mas não entradas com escopos duplicados. Por exemplo, não é possível ter duas entradas com o mesmo elemento de escopo de
jane@example.com
.
No exemplo a seguir, veja entradas diferentes de ACL do bucket:
<?xml version="1.0" encoding="UTF-8"?> <AccessControlList> <Owner> <ID>00b4903a9721...</ID> </Owner> <Entries> <Entry> <Scope type="GroupById"> <ID>00b4903a9722...</ID> </Scope> <Permission>FULL_CONTROL</Permission> </Entry> <Entry> <Scope type="GroupByDomain"> <Domain>example.com</Domain> </Scope> <Permission>READ</Permission> </Entry> <Entry> <Scope type="GroupByEmail"> <EmailAddress>gs-announce@googlegroups.com</EmailAddress> </Scope> <Permission>READ</Permission> </Entry> <Entry> <Scope type="UserByEmail"> <EmailAddress>jane@gmail.com</EmailAddress> <Name>jane</Name> </Scope> <Permission>FULL_CONTROL</Permission> </Entry> <Entry> <Scope type="AllUsers"/> <Permission>READ</Permission> </Entry> <Entry> <Scope type="AllAuthenticatedUsers"/> <Permission>READ</Permission> </Entry> </Entries> </AccessControlList>
Configurar o elemento Name no XML da ACL
Quando uma ACL é recuperada de um bucket ou objeto, algumas entradas podem ter um elemento <Name>
extra anexado. Por exemplo, talvez haja uma entrada semelhante a esta:
<Entry> <Scope type="UserByEmail"> <EmailAddress>jane@gmail.com</EmailAddress> <Name>Jane</Name> </Scope> <Permission>FULL_CONTROL</Permission> </Entry>
Esses elementos <Name>
opcionais são preenchidos em duas circunstâncias:
Quando as ACLs de bucket ou objeto incluem
<Name>
como um elemento.Ao definir as ACLs, é possível incluir o elemento
<Name>
com as entradas de ACL. É possível fornecer qualquer valor no elemento<Name>
. O Cloud Storage se lembrará desses valores até que a ACL seja removida ou substituída. Isso pode ser útil ao usar identificadores difíceis de serem reconhecidos.Quando um escopo
UserByEmail
ouGroupByEmail
contém um perfil público do Google.Se um desses escopos for usado sem um elemento
<Name>
, o Cloud Storage verificará se o usuário ou o grupo do Google associado ao endereço de e-mail tem um perfil público do Google com um nome público. Nesse caso, o Cloud Storage preencherá automaticamente o elemento<Name>
com o nome público.
Aplicar uma ACL predefinida
Em vez de especificar uma entrada de cada vez em toda a ACL como mostrado acima, é possível usar uma ACL predefinida, que aplicará automaticamente várias entradas personalizadas a um cenário específico. É possível aplicar uma ACL predefinida a um bucket ou a um objeto usando a Google Cloud CLI, a API JSON ou a API XML.
Em objetos novos
Para aplicar uma ACL predefinida a um objeto durante o upload do objeto:
Console
Não é possível aplicar uma ACL predefinida usando o console do Google Cloud. Use
gcloud storage
, em vez disso.
Linha de comando
Use o comando gcloud storage cp
com a flag
--predefined-acl
:
gcloud storage cp OBJECT gs://BUCKET_NAME --predefined-acl=PREDEFINED_ACL
Por exemplo, para aplicar a ACL predefinida bucketOwnerRead
durante o upload do objeto paris.jpg
para o bucket example-travel-maps
:
gcloud storage cp paris.jpg gs://example-travel-maps --predefined-acl=bucketOwnerRead
APIs REST
API JSON
Use o parâmetro de string de consulta predefinedAcl
em uma solicitação insert para aplicar a ACL predefinida.
Por exemplo, para aplicar a ACL predefinida bucketOwnerRead
durante o upload do objeto paris.jpg
para o bucket example-travel-maps
:
curl -X POST --data-binary @paris.jpg -H "Content-Type: image/jpeg" \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/upload/storage/v1/b/example-travel-maps/o?name=paris.jpg&predefinedAcl=bucketOwnerRead"
API XML
Use o cabeçalho x-goog-acl
em uma solicitação Put Object para aplicar a ACL predefinida.
Por exemplo, para aplicar a ACL predefinida bucket-owner-read
durante o upload do objeto paris.jpg
para o bucket example-travel-maps
:
curl -X PUT --upload-file paris.jpg -H "x-goog-acl: bucket-owner-read" \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://storage.googleapis.com/example-travel-maps/paris.jpg
Em buckets ou objetos
Também é possível aplicar uma ACL predefinida a um bucket ou objeto, o que é útil para mudar de uma ACL predefinida para outra ou atualizar as ACLs personalizadas para uma ACL predefinida.
Console
Não é possível aplicar uma ACL predefinida usando o console do Google Cloud. Use
gcloud storage
, em vez disso.
Linha de comando
Use o comando objects update
com a flag --predefined-acl
:
gcloud storage objects update gs://BUCKET_NAME/OBJECT_NAME --predefined-acl=PREDEFINED_ACL_NAME
Por exemplo, para aplicar a ACL predefinida private
ao objeto paris.jpg
no bucket example-travel-maps
:
gcloud storage objects update gs://example-travel-maps/paris.jpg --predefined-acl=private
APIs REST
API JSON
Use o parâmetro de string de consulta predefinedAcl
e especifique uma propriedade acl
vazia em uma solicitação patch para aplicar a ACL predefinida.
Por exemplo, para aplicar a ACL predefinida private
ao objeto paris.jpg
no bucket example-travel-maps
:
curl -X PATCH --data '{"acl": []}' -H "Content-Type: application/json" \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://storage.googleapis.com/storage/v1/b/example-travel-maps/o/paris.jpg?predefinedAcl=private
API XML
Use o cabeçalho x-goog-acl
com o parâmetro de string de consulta acl
em uma solicitação Put Object, mas não inclua um documento XML nela.
Por exemplo, para aplicar a ACL predefinida private
ao objeto paris.jpg
no bucket example-travel-maps
:
curl -X PUT -H "Content-Length: 0" \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "x-goog-acl: private" \ https://storage.googleapis.com/example-travel-maps/paris.jpg?acl
Definir ACLs padrão de objetos
Para que não seja necessário definir as ACLs toda vez que criar um novo objeto, é possível definir uma ACL padrão de objetos em um bucket. Depois disso, cada novo objeto adicionado a esse bucket sem uma ACL aplicada explicitamente passará a usar a ACL padrão. Por exemplo, isso pode ser usado para especificar que apenas um determinado grupo de usuários tenha acesso à maioria dos objetos em um determinado bucket. É possível alterar a ACL padrão de objetos e, em seguida, adicionar objetos ao bucket. A ACL padrão de objetos especificada será automaticamente aplicada a esses objetos adicionados, mas é possível atribuir diferentes ACLs a objetos específicos. Nesse caso, a ACL padrão não será aplicada a esses objetos.
Para visualizar e alterar a ACL padrão de objetos de um bucket:
Console
Não é possível definir ACLs padrão de objetos usando o console do Google Cloud. Use
gcloud storage
, em vez disso.
Linha de comando
Use o comando
buckets describe
com a flag--format
para recuperar a ACL padrão de objetos do bucket:gcloud storage buckets describe gs://BUCKET_NAME --format="default(default_acl)"
Em que
BUCKET_NAME
é o nome do bucket com a ACL de objeto padrão que você quer visualizar. Por exemplo,my-bucket
.Use o comando
buckets update
com a flag desejada para modificar a ACL padrão de objetos do bucket:gcloud storage buckets update gs://BUCKET_NAME FLAG
Em que:
BUCKET_NAME
é o nome do bucket com a ACL de objeto padrão que você quer modificar. Por exemplo,my-bucket
.FLAG
é um destes:--add-default-object-acl-grant
e uma concessão que você quer adicionar à ACL padrão de objetos do bucket.--default-object-acl-file
e o caminho para um arquivo local que define uma nova ACL de objeto padrão para o bucket.--predefined-default-object-acl
e o nome de uma ACL de objeto predefinida pela qual você quer substituir a ACL atual padrão de objetos do bucket.--remove-default-object-acl-grant
e uma entidade que você quer remover da ACL padrão de objetos do bucket.
Bibliotecas de cliente
C++
Para mais informações, consulte a documentação de referência da API Cloud Storage C++.
Para autenticar no Cloud Storage, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Na amostra a seguir, uma ACL padrão do objeto é adicionada a um bucket:
Na amostra a seguir, uma ACL padrão de objetos é excluída de um bucket:
C#
Para mais informações, consulte a documentação de referência da API Cloud Storage C#.
Para autenticar no Cloud Storage, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Na amostra a seguir, a ACL padrão do objeto é impressa em um bucket:
Na amostra a seguir, uma ACL padrão do objeto é adicionada a um bucket:
Na amostra a seguir, uma ACL padrão de objetos é excluída de um bucket:
Go
Para mais informações, consulte a documentação de referência da API Cloud Storage Go.
Para autenticar no Cloud Storage, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Na amostra a seguir, uma ACL padrão do objeto é adicionada a um bucket:
Na amostra a seguir, uma ACL padrão de objetos é excluída de um bucket:
Java
Para mais informações, consulte a documentação de referência da API Cloud Storage Java.
Para autenticar no Cloud Storage, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Na amostra a seguir, uma ACL padrão do objeto é adicionada a um bucket:
Na amostra a seguir, uma ACL padrão de objetos é excluída de um bucket:
Node.js
Para mais informações, consulte a documentação de referência da API Cloud Storage Node.js.
Para autenticar no Cloud Storage, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Na amostra a seguir, uma ACL padrão do objeto é adicionada a um bucket:
Na amostra a seguir, uma ACL padrão de objetos é excluída de um bucket:
PHP
Para mais informações, consulte a documentação de referência da API Cloud Storage PHP.
Para autenticar no Cloud Storage, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Na amostra a seguir, uma ACL padrão do objeto é adicionada a um bucket:
Na amostra a seguir, uma ACL padrão de objetos é excluída de um bucket:
Python
Para mais informações, consulte a documentação de referência da API Cloud Storage Python.
Para autenticar no Cloud Storage, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Na amostra a seguir, uma ACL padrão do objeto é adicionada a um bucket:
Na amostra a seguir, uma ACL padrão de objetos é excluída de um bucket:
Ruby
Para mais informações, consulte a documentação de referência da API Cloud Storage Ruby.
Para autenticar no Cloud Storage, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Na amostra a seguir, uma ACL padrão do objeto é adicionada a um bucket:
Na amostra a seguir, uma ACL padrão de objetos é excluída de um bucket:
APIs REST
API JSON
Recupere a ACL padrão de objetos com uma solicitação GET. Por exemplo:
curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://storage.googleapis.com/storage/v1/b/BUCKET_NAME?projection=full
Use uma solicitação patch para substituir a ACL padrão de objetos. Por exemplo, a solicitação a seguir substitui a ACL padrão de objetos por outra especificada em
defacls.json
no bucketexample-travel-maps
:curl -X PATCH --data @defacls.json -H "Content-Type: application/json" -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://storage.googleapis.com/storage/v1/b/example-travel-maps
Um exemplo de
defacls.json
:{ "defaultObjectAcl": [ { "email": "jane@gmail.com", "entity": "user-jane@gmail.com", "role": "READER" } ] }
API XML
Recupere a ACL padrão de objetos com uma solicitação
GET
no escopo do bucket e do parâmetro?defaultObjectAcl
. Por exemplo:curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://storage.googleapis.com/BUCKET_NAME?defaultObjectAcl
Use uma solicitação
PUT
no escopo do bucket com o parâmetro?defaultObjectAcl
para substituir a ACL padrão de objetos pela especificada emacls.xml
. Por exemplo:curl -X PUT --data-binary @acls.xml -H "Authorization: Bearer $(gcloud auth print-access-token)" \ http://storage.googleapis.com/BUCKET_NAME?defaultObjectAcl
Um exemplo de
acls.xml
:<AccessControlList> <Entries> <Entry> <Permission>
FULL_CONTROL
</Permission> <Scope type="UserByEmail"> <EmailAddress>jane@gmail.com</EmailAddress> </Scope> </Entry> </Entries> </AccessControlList>
A sintaxe das ACLs é discutida em Como definir ACLs. Também é possível especificar uma ACL predefinida como a ACL padrão de objetos.
Para definir uma ACL predefinida como a ACL padrão de objetos em um bucket:
Console
Não é possível definir ACLs padrão de objetos usando o console do Google Cloud. Use
gcloud storage
, em vez disso.
Linha de comando
Use o comando buckets update
com a flag --predefined-default-object-acl
:
gcloud storage buckets update gs://BUCKET_NAME --predefined-default-object-acl=PREDEFINED_ACL
Em que:
BUCKET_NAME
é o nome do bucket com a ACL de objeto padrão que você quer modificar. Por exemplo,my-bucket
.PREDEFINED_ACL
é o nome de uma ACL predefinida válida. Por exemplo,projectPrivate
.
APIs REST
API JSON
Use uma solicitação PUT e o parâmetro predefinedAcl
.
Por exemplo:
curl -X PUT -H "Content-Length: 0" -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://storage.googleapis.com/storage/v1/b/BUCKET_NAME?predefinedAcl=private
API XML
Use uma solicitação PUT
no escopo do bucket com o parâmetro ?defaultObjectAcl
e o cabeçalho x-goog-acl
.
Por exemplo:
curl -X PUT -H "x-goog-acl: project-private" -H "Content-Length: 0" -H "Authorization: Bearer $(gcloud auth print-access-token)" \ http://storage.googleapis.com/BUCKET_NAME?defaultObjectAcl
Access Control Lists de objetos padrão para buckets recém-criados:
Os exemplos a seguir mostram as Access Control Lists de objetos padrão que se aplicam automaticamente aos buckets recém-criados ao especificar as próprias Access Control Lists de objetos padrão como parte da solicitação. Para ver se as Access Control Lists de objetos padrão do bucket foram alteradas, compare as Access Control Lists de objetos padrão atuais do bucket com os exemplos abaixo.
Console
Não é possível trabalhar com ACLs padrão de objetos usando o console do Google Cloud.
Use gcloud storage
.
Linha de comando
No exemplo abaixo, o código do projeto é "123412341234". O código do seu projeto será diferente.
defaultObjectAcl: – entity: project-owners-123412341234 etag: CAE= kind: storage#objectAccessControl projectTeam: projectNumber: '123412341234' team: owners role: OWNER – entity: project-editors-123412341234 etag: CAE= kind: storage#objectAccessControl projectTeam: projectNumber: '123412341234' team: editors role: OWNER – entity: project-viewers-123412341234 etag: CAE= kind: storage#objectAccessControl projectTeam: projectNumber: '123412341234' team: viewers role: READER
APIs REST
API JSON
No exemplo abaixo, o código do projeto é "123412341234". O código do seu projeto será diferente.
"defaultObjectAcl": [ { "kind": "storage#objectAccessControl", "entity": "project-owners-123412341234", "role": "OWNER", "projectTeam": { "projectNumber": "123412341234", "team": "owners" } }, { "kind": "storage#objectAccessControl", "entity": "project-editors-123412341234", "role": "OWNER", "projectTeam": { "projectNumber": "123412341234", "team": "editors" } }, { "kind": "storage#objectAccessControl", "entity": "project-viewers-123412341234", "role": "READER", "projectTeam": { "projectNumber": "123412341234", "team": "viewers" } } ]
API XML
No exemplo abaixo, os códigos de papel do projeto começam com "00b4903a97...". Os códigos do seu projeto serão diferentes.
<?xml version='1.0' encoding='UTF-8'?> <AccessControlList> <Entries> <Entry> <Scope type='GroupById'> <ID>00b4903a9721...</ID> </Scope> <Permission>FULL_CONTROL</Permission> </Entry> <Entry> <Scope type='GroupById'> <ID>00b4903a9722...</ID> </Scope> <Permission>FULL_CONTROL</Permission> </Entry> <Entry> <Scope type='GroupById'> <ID>00b4903a9723...</ID> </Scope> <Permission>READ</Permission> </Entry> </Entries> </AccessControlList>
A ACL padrão de objetos de um bucket recém-criado é equivalente à ACL predefinida projectPrivate
.
Como recuperar ACLs
Para acessar a ACL de um recurso existente:
Console
Acesse o navegador do Cloud Storage no console do Google Cloud.
Acessar o navegador do Cloud StorageNavegue até o objeto com a ACL que você quer visualizar.
Selecione Editar acesso no menu suspenso do objeto.
Será exibida uma caixa de diálogo com as permissões do objeto.
Para saber como acessar informações detalhadas de erro sobre operações do Cloud Storage com falha no console do Google Cloud, consulte Solução de problemas.
Linha de comando
Use o comando
objects describe
com a flag--format
para recuperar a ACL de um objeto:gcloud storage objects describe gs://BUCKET_NAME/OBJECT_NAME --format="default(acl)"
Em que:
BUCKET_NAME
é o nome do bucket que contém o objeto com a ACL que você quer visualizar. Por exemplo,my-bucket
.OBJECT_NAME
é o nome do objeto com a ACL que você quer visualizar. Por exemplo,paris.jpg
.
Bibliotecas de cliente
C++
Para mais informações, consulte a documentação de referência da API Cloud Storage C++.
Para autenticar no Cloud Storage, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Na amostra a seguir, uma ACL de objeto é recebida:
C#
Para mais informações, consulte a documentação de referência da API Cloud Storage C#.
Para autenticar no Cloud Storage, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Na amostra a seguir, uma ACL de objeto é recebida:
Go
Para mais informações, consulte a documentação de referência da API Cloud Storage Go.
Para autenticar no Cloud Storage, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Na amostra a seguir, uma ACL de objeto é recebida:
Java
Para mais informações, consulte a documentação de referência da API Cloud Storage Java.
Para autenticar no Cloud Storage, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Na amostra a seguir, uma ACL de objeto é recebida:
Node.js
Para mais informações, consulte a documentação de referência da API Cloud Storage Node.js.
Para autenticar no Cloud Storage, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Na amostra a seguir, uma ACL de objeto é recebida:
PHP
Para mais informações, consulte a documentação de referência da API Cloud Storage PHP.
Para autenticar no Cloud Storage, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Na amostra a seguir, uma ACL de objeto é recebida:
Python
Para mais informações, consulte a documentação de referência da API Cloud Storage Python.
Para autenticar no Cloud Storage, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Na amostra a seguir, uma ACL de objeto é recebida:
Ruby
Para mais informações, consulte a documentação de referência da API Cloud Storage Ruby.
Para autenticar no Cloud Storage, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Na amostra a seguir, uma ACL de objeto é recebida:
APIs REST
API JSON
Verifique se você tem a permissão
OWNER
no objeto.Recupere a ACL do objeto com uma solicitação
GET
.A ACL de objetos é retornada no formato JSON, anexada ao corpo da resposta.
Por exemplo, para retornar a ACL do objeto paris.jpg
no bucket example-travel-maps
:
curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://storage.googleapis.com/storage/v1/b/example-travel-maps/o/paris.jpg?projection=full
Será exibida uma resposta semelhante a:
{ "kind": "storage#object", "id": "example-travel-maps/paris.jpg/1412805837131000", "selfLink": "https://www.googleapis.com/storage/v1/b/example-travel-maps/o/paris.jpg", "name": "paris.jpg", "bucket": "example-travel-maps", ... "acl": [ { ... "entity": "project-owners-867489160491", "role": "OWNER", "projectTeam": { "projectNumber": "867489160491", "team": "owners" }, ... }, { ... "entity": "user-jane@gmail.com", "role": "OWNER", "email": "jane@gmail.com", ... }, { ... "entity": "group-gs-announce@googlegroups.com", "role": "READER", "email": "gs-announce@googlegroups.com", ... } ], "owner": { "entity": "user-jane@gmail.com" }, ... }
Você também pode usar o método GET
do recurso objectAccessControls
para retornar entradas individuais na ACL de um objeto.
API XML
Verifique se você tem a permissão
FULL_CONTROL
no bucket ou objeto.Recupere a ACL do bucket ou objeto usando o parâmetro de string de consulta
acl
em uma solicitação GET Object.
As ACLs são descritas em XML, anexadas ao corpo da resposta.
Por exemplo, para retornar a ACL do objeto paris.jpg
no bucket example-travel-maps
:
curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://storage.googleapis.com/example-travel-maps/paris.jpg?acl
Será exibida uma resposta semelhante a:
<?xml version="1.0" encoding="UTF-8"?> <AccessControlList> <Owner> <ID>84fac329bceSAMPLE777d5d22b8SAMPLE77d85ac2SAMPLE2dfcf7c4adf34da46</ID> <Name>Owner Name</Name> </Owner> <Entries> <Entry> <Scope type="UserById"> <ID>84fac329bceSAMPLE777d5d22b8SAMPLE77d85ac2SAMPLE2dfcf7c4adf34da46</ID> <Name>Name</Name> </Scope> <Permission>FULL_CONTROL</Permission> </Entry> <Entry> <Scope type="UserByEmail"> <EmailAddress>jane@gmail.com</EmailAddress> <Name>Jane</Name> </Scope> <Permission>FULL_CONTROL</Permission> </Entry> <Entry> <Scope type="GroupByEmail"> <EmailAddress>gs-announce@googlegroups.com</EmailAddress> </Scope> <Permission>READ</Permission> </Entry> </Entries> </AccessControlList>
Também é possível usar o método GET
em JSON do recurso ObjectAccessControls
para retornar uma entrada de ACL específica.
A seguir
- Saiba mais sobre as ACLs.
- Veja como simplificar o controle de acesso com o acesso uniforme no nível do bucket.
- Saiba mais sobre as práticas recomendadas para o uso de ACLs.