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.
Para saber mais sobre outras maneiras de controlar o acesso a buckets e objetos, leia este documento de visão geral.
Antes de começar
Você precisa usar ACLs?
Na maioria dos casos, o gerenciamento de identidade e acesso (IAM, na sigla em inglês) é o método recomendado para controlar o acesso a recursos, porque oferece controle de acesso de nível empresarial em todo o Google Cloud. Ele possibilita que as permissões concedidas a recursos pai, como projetos, sejam herdadas por recursos filhos, como buckets e objetos. Veja guias sobre como trabalhar com o IAM no Cloud Storage em Como utilizar permissões do IAM.
As ACLs podem ser usadas para personalizar o acesso a objetos individuais de um bucket, porque as permissões do IAM são válidas para todos os objetos de um bucket. No entanto, ainda é necessário usar o IAM para qualquer acesso comum a todos os objetos de um bucket, porque isso reduz a necessidade de microgerenciamento.
Você precisa definir uma ACL?
Dependendo da permissão que você quer que um bucket ou objeto tenha, talvez não seja necessário definir uma ACL. Os buckets e objetos são criados com ACLs padrão que podem conter a permissão que você quer que o bucket ou objeto tenha.
Use as orientações a seguir para decidir se você precisa definir uma ACL.
Em buckets:
Console
buckets novos são criados com a ACL predefinida project-private
.
Se seu bucket precisar de uma permissão diferente, defina uma ACL.
gsutil
Blocos novos são adicionados como project-private
. Se seu bucket precisar de uma permissão diferente, defina uma ACL.
API JSON
Por padrão, buckets novos são adicionados como project-private
. Se seu bucket precisar de uma permissão diferente, defina uma ACL.
API XML
Blocos novos são adicionados como project-private
. Se seu bucket precisar de uma permissão diferente, defina uma ACL.
Conforme dito acima, cada bucket tem uma ACL padrão de objetos, e essa ACL é aplicada a todos os objetos desse bucket que não tenham uma ACL predefinida ou (se estiver usando a API JSON) uma ACL especificada na solicitação. Saiba mais em ACLs de objeto padrão.
Em objetos:
Console
No momento do upload, os objetos recebem as mesmas ACLs que o objeto do bucket, e a pessoa que fez o upload é adicionada à ACL como proprietário. Se o objeto precisar de uma permissão diferente, defina uma ACL.
gsutil
Objetos novos são adicionados com a ACL padrão de objetos do bucket. Ao copiar um objeto já armazenado na nuvem, é possível modificar esse comportamento com a opção -p
.
API JSON
Por padrão, objetos novos são adicionados com a ACL padrão de objetos do bucket.
API XML
Objetos novos são adicionados com a ACL padrão de objetos do bucket.
Qual interface usar?
A seguir há exemplos de como configurar o controle de acesso usando o Console do Google Cloud, a ferramenta de linha de comando gsutil, as bibliotecas de cliente do Cloud Storage e as APIs XML e JSON. Use estas diretrizes para escolher qual usar:
Se você não tem familiaridade com o controle de acesso e quer apenas modificar ACLs para objetos individuais, use o Console do Cloud.
A ferramenta gsutil é adequada para quem não tem muita experiência com controle de acesso e quer modificar ACLs para buckets e objetos.
Quem já tiver experiência com bibliotecas de cliente do Cloud Storage pode usá-las para gerenciar as ACLs.
Para especificar ACLs usando uma API, é necessário ter experiência prévia com solicitações HTTP. É possível usar sua ferramenta ou aplicativo favorito para enviar as solicitações HTTP. Nos exemplos, usamos a ferramenta cURL (em inglês). É possível conseguir tokens de autorização para usar nos exemplos de cURL do OAuth 2.0 Playground (em inglês).
Como definir ACLs
A ferramenta ou API usada para definir e conseguir ACLs determina a sintaxe da ACL usada. As sintaxes de ACL são visualmente diferentes, mas contêm as mesmas informações: entradas que concedem permissões a escopos.
Console
Acesse o navegador do Cloud Storage no Console do Cloud.
Acessar o navegador do Cloud StorageNavegue até o objeto com a ACL que você quer alterar.
Escolha Editar permissões no menu Mais ações (
) associado ao objeto.
Será exibida uma caixa de diálogo de permissões semelhante a esta:
Essa captura de tela mostra uma ACL com quatro entradas:
- Na primeira entrada, todos os proprietários de um projeto específico (com o número de projeto 867489140601) recebem acesso ou permissão de Proprietário para o objeto.
- Na segunda entrada, todos os editores de um projeto específico (com o número de projeto 867489140601) também recebem acesso/permissão de Proprietário para o objeto.
- Na terceira entrada, todos os leitores de um projeto específico (um deles com número de projeto 867489140601) recebem acesso/permissão "Leitor" para esse objeto.
- Na quarta entrada, o usuário que fez o upload do objeto recebe acesso/permissão "Proprietário" para o objeto. Quem faz o upload do objeto é sempre definido como "Proprietário" e não pode ser removido.
Clique em Adicionar item.
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 acesso para ver a lista de valores aceitos em Acesso.
Clique em Save.
Consulte a Solução de problemas para informações detalhadas sobre erros de operações com falha no navegador do Cloud Storage.
gsutil
Use gsutil acl
para especificar ACLs:
Para especificar concessões individuais:
gsutil acl ch -u USER_EMAIL:PERMISSION gs://BUCKET_NAME
Para especificar ACLs pré-configuradas:
gsutil acl set CANNED_ACL_NAME gs://BUCKET_NAME
Para especificar ACLs no formato JSON:
gsutil acl set JSON_FILE gs://BUCKET_NAME
JSON_FILE
contém ACLs especificadas no formato JSON.
Amostras de código
C++
Para mais informações, consulte a documentação de referência da API Cloud Storage para C++.
Na amostra a seguir, uma ACL é adicionada a um bucket:
Na amostra a seguir, uma ACL é adicionada a um objeto:
C#
Para mais informações, consulte a documentação de referência da API Cloud Storage para C#.
Na amostra a seguir, uma ACL é adicionada a um bucket:
Na amostra a seguir, uma ACL é adicionada a um objeto:
Go
Para mais informações, consulte a documentação de referência da API Cloud Storage para Go.
Na amostra a seguir, uma ACL é adicionada a um bucket:
Na amostra a seguir, uma ACL é adicionada a um objeto:
Java
Para mais informações, consulte a documentação de referência da API Cloud Storage para Java.
Na amostra a seguir, uma ACL é adicionada a um bucket:
Na amostra a seguir, uma ACL é adicionada a um objeto:
Node.js
Para mais informações, consulte a documentação de referência da API Cloud Storage para Node.js.
Na amostra a seguir, uma ACL é adicionada a um bucket:
Na amostra a seguir, uma ACL é adicionada a um objeto:
PHP
Para mais informações, consulte a documentação de referência da API Cloud Storage para PHP.
Na amostra a seguir, uma ACL é adicionada a um bucket:
Na amostra a seguir, uma ACL é adicionada a um objeto:
Python
Para mais informações, consulte a documentação de referência da API Cloud Storage para Python.
Na amostra a seguir, uma ACL é adicionada a um bucket:
Na amostra a seguir, uma ACL é adicionada a um objeto:
Ruby
Para mais informações, consulte a documentação de referência da API Cloud Storage para Ruby.
Na amostra a seguir, uma ACL é adicionada a um bucket:
Na amostra a seguir, uma ACL é adicionada a um objeto:
API JSON
Ao criar um bucket, é possível especificar a propriedade acl[]
em uma solicitação insert. Em um bucket atual, especifique a propriedade acl[]
em uma solicitação patch ou solicitação update.
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 definições das propriedades de ACL de bucket e objeto, consulte os recursos BucketAccessControls
e ObjectAccessControls
, respectivamente.
Veja no exemplo a seguir diferentes entradas de ACL de bucket.
"acl": [ { "kind": "storage#bucketAccessControl", "id": "example-bucket/project-owners-123412341234", "selfLink": "https://www.googleapis.com/storage/v1/b/example-bucket/acl/project-owners-123412341234", "bucket": "example-bucket", "entity": "project-owners-123412341234", "role": "OWNER", "projectTeam": { "projectNumber": "123412341234", "team": "owners" }, "etag": "CDk=" }, { "kind": "storage#bucketAccessControl", "id": "example-bucket/project-editors-123412341234", "selfLink": "https://www.googleapis.com/storage/v1/b/example-bucket/acl/project-editors-123412341234", "bucket": "example-bucket", "entity": "project-editors-123412341234", "role": "OWNER", "projectTeam": { "projectNumber": "123412341234", "team": "editors" }, "etag": "CDk=" }, { "kind": "storage#bucketAccessControl", "id": "example-bucket/project-viewers-123412341234", "selfLink": "https://www.googleapis.com/storage/v1/b/example-bucket/acl/project-viewers-123412341234", "bucket": "example-bucket", "entity": "project-viewers-123412341234", "role": "READER", "projectTeam": { "projectNumber": "123412341234", "team": "viewers" }, "etag": "CDk=" }, { "kind": "storage#bucketAccessControl", "id": "example-bucket/group-gs-announce@googlegroups.com", "selfLink": "https://www.googleapis.com/storage/v1/b/example-bucket/acl/group-gs-announce@googlegroups.com", "bucket": "example-bucket", "entity": "group-gs-announce@googlegroups.com", "role": "READER", "email": "gs-announce@googlegroups.com", "etag": "CDk=" }, { "kind": "storage#bucketAccessControl", "id": "example-bucket/user-jane@gmail.com", "selfLink": "https://www.googleapis.com/storage/v1/b/example-bucket/acl/user-jane@gmail.com", "bucket": "example-bucket", "entity": "user-jane@gmail.com", "role": "READER", "email": "jane@gmail.com", "etag": "CDk=" }, { "kind": "storage#bucketAccessControl", "id": "example-bucket/allUsers", "selfLink": "https://www.googleapis.com/storage/v1/b/example-bucket/acl/allUsers", "bucket": "example-bucket", "entity": "allUsers", "role": "READER", "etag": "CDk=" }, { "kind": "storage#bucketAccessControl", "id": "example-bucket/allAuthenticatedUsers", "selfLink": "https://www.googleapis.com/storage/v1/b/example-bucket/acl/allAuthenticatedUsers", "bucket": "example-bucket", "entity": "allAuthenticatedUsers", "role": "READER", "etag": "CDk=" } ]
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
.
Use a sintaxe de ACL a seguir com a API 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 Google Cloud Storage do proprietário do bucket. |
DisplayName |
Não implementado no momento. O valor é sempre uma string vazia. |
Entries |
Contêiner para nenhum ou mais elementos Entry . |
Entry |
Contêiner para elementos Scope e Permission . É necessário que um Entry contenha apenas um elemento Scope e um Permission . |
Scope |
Contêiner para um elemento ID , EmailAddress ou Domain que define o escopo da ACL. É necessário que esse elemento tenha um atributo type que contém 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 de 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="GroupById"> <ID>00b4903a9723...</ID> </Scope> <Permission>FULL_CONTROL</Permission> </Entry> <Entry> <Scope type="GroupById"> <ID>00b4903a9724...</ID> </Scope> <Permission>READ</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>READ</Permission> </Entry> <Entry> <Scope type="AllUsers"/> <Permission>READ</Permission> </Entry> <Entry> <Scope type="AllAuthenticatedUsers"/> <Permission>READ</Permission> </Entry> </Entries> </AccessControlList>
Como 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, como IDs do Google Cloud Storage.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.
Como aplicar uma ACL predefinida
Em vez de especificar toda a ACL uma entrada de cada vez (conforme 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 gsutil, a API JSON ou a API XML.
Em novos objetos
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 Cloud. Use a gsutil.
gsutil
Use a opção -a
com o comando gsutil cp
para aplicar a ACL predefinida:
gsutil cp -a PREDEFINED_ACL OBJECT gs://BUCKET_NAME
Por exemplo, para aplicar a ACL predefinida bucket-owner-read
durante o upload do objeto paris.jpg
para o bucket example-travel-maps
:
gsutil cp -a bucket-owner-read paris.jpg gs://example-travel-maps
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 ya29.AHES6ZRVmB7fkLtd1XTmq6mo0S1wqZZi3-Lh_s-6Uw7p8vtgSwg"
"https://storage.googleapis.com/upload/storage/v1/b/example-travel-maps/o?name=paris.jpg&predefinedAcl=bucketOwnerRead"
A solicitação será semelhante ao exemplo a seguir:
POST /upload/storage/v1/b/example-travel-maps/o?name=paris.jpg&predefinedAcl=bucketOwnerRead HTTP/1.1 Host: www.googleapis.com Content-Type: image/jpeg Authorization: Bearer ya29.AHES6ZRVmB7fkLtd1XTmq6mo0S1wqZZi3-Lh_s-6Uw7p8vtgSwg Content-Length: 12345 Date: Fri, 10 Oct 2014 00:02:38 GMT
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 ya29.AHES6ZRVmB7fkLtd1XTmq6mo0S1wqZZi3-Lh_s-6Uw7p8vtgSwg"
https://storage.googleapis.com/example-travel-maps/paris.jpg
A solicitação será semelhante ao exemplo a seguir:
PUT /paris.jpg HTTP/1.1 Host: example-travel-maps.storage.googleapis.com Date: Thu, 09 Oct 2014 23:06:08 GMT Content-Length: 12345 Content-Type: image/jpg x-goog-acl: bucket-owner-read Authorization: Bearer ya29.AHES6ZRVmB7fkLtd1XTmq6mo0S1wqZZi3-Lh_s-6Uw7p8vtgSwg 12345 bytes in entity body
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 Cloud. Use a gsutil.
gsutil
Use o comando gsutil acl set
para aplicar a ACL predefinida:
gsutil acl set PREDEFINED_ACL gs://BUCKET_NAME/OBJECT_NAME
Por exemplo, para aplicar a ACL predefinida private
ao objeto paris.jpg
no bucket example-travel-maps
:
gsutil acl set private gs://example-travel-maps/paris.jpg
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 ya29.AHES6ZRVmB7fkLtd1XTmq6mo0S1wqZZi3-Lh_s-6Uw7p8vtgSwg"
https://storage.googleapis.com/storage/v1/b/example-travel-maps/o/paris.jpg?predefinedAcl=private
A solicitação será semelhante ao exemplo a seguir:
PATCH /storage/v1/b/example-travel-maps/o/paris.jpg?predefinedAcl=private HTTP/1.1 Host: www.googleapis.com Content-Type: application/json Authorization: Bearer ya29.AHES6ZRVmB7fkLtd1XTmq6mo0S1wqZZi3-Lh_s-6Uw7p8vtgSwg Content-Length: 11 Date: Fri, 10 Oct 2014 18:57:59 GMT
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 ya29.AHES6ZRVmB7fkLtd1XTmq6mo0S1wqZZi3-Lh_s-6Uw7p8vtgSwg"
-H "x-goog-acl: private" https://storage.googleapis.com/example-travel-maps/paris.jpg?acl
A solicitação será semelhante ao exemplo a seguir:
PUT /paris.jpg?acl HTTP/1.1 Host: example-travel-maps.storage.googleapis.com Date: Thu, 09 Oct 2014 23:14:59 GMT Content-Length: 0 x-goog-acl: private Authorization: Bearer ya29.AHES6ZRVmB7fkLtd1XTmq6mo0S1wqZZi3-Lh_s-6Uw7p8vtgSwg empty entity body
Como 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 Cloud. Use a gsutil.
gsutil
Use
gsutil defacl
para recuperar a ACL padrão de objetos:gsutil defacl get gs://BUCKET_NAME
Use
gsutil defacl ch
ougsutil defacl set
para modificar a ACL padrão de objetos.Por exemplo, o comando a seguir adiciona
jane@gmail.com
à ACL padrão de objetos do bucketexample-travel-maps
:gsutil defacl ch -u jane@gmail.com:READER gs://example-travel-maps
Também é possível especificar a ACL padrão de objetos usando um arquivo. Para mais informações, consulte a ajuda de
gsutil defacl
.
Amostras de código
C++
Para mais informações, consulte a documentação de referência da API Cloud Storage para C++.
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 para C#.
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 para Go.
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 para Java.
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 para Node.js.
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 para PHP.
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 para Python.
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 para Ruby.
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:
API JSON
Recupere a ACL padrão de objetos com uma solicitação GET. Exemplo:
curl -X GET -H "Authorization: Bearer OAUTH2_TOKEN"
https://storage.googleapis.com/storage/v1/b/BUCKET_NAME?projection=fullUse 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 OAUTH2_TOKEN"
https://storage.googleapis.com/storage/v1/b/example-travel-mapsUm 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
. Exemplo:curl -X GET -H "Authorization: Bearer OAUTH2_TOKEN"
https://storage.googleapis.com/BUCKET_NAME?defaultObjectAclUse 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 OAUTH2_TOKEN"
http://storage.googleapis.com/BUCKET_NAME?defaultObjectAclUm exemplo de
acls.xml
:<AccessControlList> <Entries> <Entry> <Permission>
FULL_CONTROL
</Permission> <Scope type="GroupByEmail"> <EmailAddress>travel-companions@googlegroups.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 Cloud. Use a gsutil.
gsutil
Use o comando gsutil defacl
com o nome da ACL predefinida.
Por exemplo, para definir a ACL padrão de objetos como project-private
para o bucket example-travel-maps
:
gsutil defacl set project-private gs://example-travel-maps
API JSON
Use uma solicitação PUT e o parâmetro predefinedAcl
.
Por exemplo:
curl -X PUT -H "Content-Length: 0" -H "Authorization: Bearer OAUTH2_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 OAUTH2_TOKEN"
http://storage.googleapis.com/BUCKET_NAME?defaultObjectAcl
ACLs padrão de objetos para um bucket recém-criado:
As ACLs padrão de objetos para um bucket recém-criado são mostradas abaixo. Compare-as com as ACLs padrão de objetos do bucket para ver se as ACLs padrão de objetos do bucket foram modificadas.
Console
Não é possível trabalhar com ACLs padrão de objetos usando o Console do Cloud. Use a gsutil.
gsutil
No exemplo abaixo, o código do projeto é "123412341234". O código do seu projeto será diferente.
[ { "entity": "project-owners-123412341234", "projectTeam": { "projectNumber": "123412341234", "team": "owners" }, "role": "OWNER" }, { "entity": "project-editors-123412341234", "projectTeam": { "projectNumber": "123412341234", "team": "editors" }, "role": "OWNER" }, { "entity": "project-viewers-123412341234", "projectTeam": { "projectNumber": "123412341234", "team": "viewers" }, "role": "READER" } ]
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 IDs de papel do projeto começam com "00b4903a97...". Os IDs 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 a ACL de um bucket ou objeto:
Console
Acesse o navegador do Cloud Storage no Console do Cloud.
Acessar o navegador do Cloud StorageNavegue até o objeto com a ACL que você quer visualizar.
Selecione Editar permissões no menu suspenso do objeto.
Será exibida uma caixa de diálogo com as permissões do objeto.
Consulte a Solução de problemas para informações detalhadas sobre erros de operações com falha no navegador do Cloud Storage.
gsutil
Use gsutil acl get
para retornar a ACL de um objeto.
Por exemplo, para retornar a ACL do objeto paris.jpg
no bucket example-travel-maps
:
gsutil acl get gs://example-travel-maps/paris.jpg
Exemplo de resposta:
[ { "entity": "project-owners-123412341234", "projectTeam": { "projectNumber": "123412341234", "team": "owners" }, "role": "OWNER" }, { "entity": "project-editors-123412341234", "projectTeam": { "projectNumber": "123412341234", "team": "editors" }, "role": "OWNER" }, { "entity": "project-viewers-123412341234", "projectTeam": { "projectNumber": "123412341234", "team": "viewers" }, "role": "READER" }, { "email": "gs-announce@googlegroups.com", "entity": "group-gs-announce@googlegroups.com", "role": "READER" }, { "email": "jane@gmail.com", "entity": "user-jane@gmail.com", "role": "READER" }, { "entity": "allUsers", "role": "READER" }, { "entity": "allAuthenticatedUsers", "role": "READER" } ]
Para retornar a ACL de um intervalo:
gsutil acl get gs://BUCKET_NAME
Quando a gsutil retorna ACLs de buckets e objetos com gsutil acl get
, elas estão no mesmo formato JSON que pode ser usado para defini-las. As ACLs no formato JSON usam os nomes de propriedade da API JSON, como entity
e role
.
Consulte a sintaxe da API JSON para mais informações sobre como interpretar a saída ou executar gsutil help acls
.
Amostras de código
C++
Para mais informações, consulte a documentação de referência da API Cloud Storage para C++.
Na amostra a seguir, uma ACL de bucket é recebida:
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 para C#.
Na amostra a seguir, uma ACL de bucket é recebida:
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 para Go.
Na amostra a seguir, uma ACL de bucket é recebida:
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 para Java.
Na amostra a seguir, uma ACL de bucket é recebida:
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 para Node.js.
Na amostra a seguir, uma ACL de bucket é recebida:
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 para PHP.
Na amostra a seguir, uma ACL de bucket é recebida:
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 para Python.
Na amostra a seguir, uma ACL de bucket é recebida:
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 para Ruby.
Na amostra a seguir, uma ACL de bucket é recebida:
Na amostra a seguir, uma ACL de objeto é recebida:
API JSON
Verifique se você tem a permissão
OWNER
no bucket ou objeto.Recupere a ACL do bucket ou 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 ya29.AHES6ZRVmB7fkLtd1XTmq6mo0S1wqZZi3-Lh_s-6Uw7p8vtgSwg"
https://storage.googleapis.com/storage/v1/b/example-travel-maps/o/paris.jpg?projection=full
Você verá uma resposta semelhante a esta:
{ "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 ya29.AHES6ZRVmB7fkLtd1XTmq6mo0S1wqZZi3-Lh_s-6Uw7p8vtgSwg"
https://storage.googleapis.com/example-travel-maps/paris.jpg?acl
Você verá uma resposta semelhante a esta:
<?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.
Como alterar ACLs
Para alterar a ACL de um objeto ou bucket:
Console
Acesse o navegador do Cloud Storage no Console do Cloud.
Acessar o navegador do Cloud StorageNavegue até o objeto com a ACL que você quer alterar.
Selecione Editar permissões no menu suspenso do objeto.
Será exibida uma caixa de diálogo com as permissões do objeto.
Veja no exemplo a seguir mostra como conceder a permissão OWNER
à usuária jane@gmail.com
e a permissão READER
aos membros do grupo gs-announce
no objeto paris.jpg
:
Consulte a Solução de problemas para informações detalhadas sobre erros de operações com falha no navegador do Cloud Storage.
gsutil
Defina as ACLs em um arquivo.
Transmita o arquivo de ACLs para
gsutil acl set
e especifique para que objeto as ACLs serão definidas.
Por exemplo, para aplicar as ACLs do arquivo acls.txt
em um objeto chamado paris.jpg
no bucket example-travel-maps
:
gsutil acl set acl.txt gs://example-travel-maps/paris.jpg
O conteúdo de acl.txt
é 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" } ]
Além disso, é possível definir a mesma ACL desse objeto para conceder permissões individuais.
Por exemplo, para conceder à usuária jane@gmail.com
o acesso READER
, use:
gsutil acl ch -u jane@gmail.com:READ gs://example-travel-maps/paris.jpg.
Amostras de código
C++
Para mais informações, consulte a documentação de referência da API Cloud Storage para C++.
Na amostra a seguir, uma ACL é removida de um bucket:
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 para C#.
Na amostra a seguir, uma ACL é removida de um bucket:
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 para Go.
Na amostra a seguir, uma ACL é removida de um bucket:
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 para Java.
Na amostra a seguir, uma ACL é removida de um bucket:
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 para Node.js.
Na amostra a seguir, uma ACL é removida de um bucket:
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 para PHP.
Na amostra a seguir, uma ACL é removida de um bucket:
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 para Python.
Na amostra a seguir, uma ACL é removida de um bucket:
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 para Ruby.
Na amostra a seguir, uma ACL é removida de um bucket:
Na amostra a seguir, uma ACL é removida de um objeto:
API JSON
Defina as ACLs de um arquivo JSON.
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 ya29.AHES6ZRVmB7fkLtd1XTmq6mo0S1wqZZi3-Lh_s-6Uw7p8vtgSwg"
https://storage.googleapis.com/storage/v1/b/example-travel-maps/o/paris.jpg
Se a ACL conceder aos proprietários do projeto 867489160491
e à usuária jane@gmail.com
a permissão OWNER
, além de conceder aos membros do grupo gs-announce
a permissão READER
, a solicitação será semelhante ao exemplo a seguir:
PATCH /storage/v1/b/example-travel-maps/o/paris.jpg HTTP/1.1 Host: www.googleapis.com Content-Type: application/json Authorization: Bearer ya29.AHES6ZRVmB7fkLtd1XTmq6mo0S1wqZZi3-Lh_s-6Uw7p8vtgSwg Content-Length: 597 Date: Wed, 08 Oct 2014 22:37:58 GMT { "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" } ] }
API XML
Defina as ACLs em um documento XML.
Envie uma solicitação
PUT Object
usando o parâmetro de string de consultaacl
e o documento XML correspondente.
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 ya29.AHES6ZRVmB7fkLtd1XTmq6mo0S1wqZZi3-Lh_s-6Uw7p8vtgSwg"
https://storage.googleapis.com/example-travel-maps/paris.jpg?acl
Se a ACL conceder ao usuário jane@gmail.com
a permissão FULL_CONTROL
e
aos membros do grupo gs-announce
a permissão READ
, a solicitação será semelhante ao exemplo a seguir:
PUT /paris.jpg?acl HTTP/1.1 Host: example-travel-maps.storage.googleapis.com Date: Sat, 20 Feb 2010 08:31:08 GMT Content-Length: 589 Content-Type=application/xml Authorization: Bearer ya29.AHES6ZRVmB7fkLtd1XTmq6mo0S1wqZZi3-Lh_s-6Uw7p8vtgSwg <?xml version='1.0' encoding='utf-8'?> <AccessControlList> <Owner> <ID>84fac329bceSAMPLE777d5d22b8SAMPLE77d85ac2SAMPLE2dfcf7c4adf34da46</ID> </Owner> <Entries> <Entry> <Permission>FULL_CONTROL
</Permission> <Scope type="UserById"> <ID>84fac329bceSAMPLE777d5d22b8SAMPLE77d85ac2SAMPLE2dfcf7c4adf34da46</ID> </Scope> </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>
A seguir
- Saiba mais sobre as listas de controle de acesso (ACLs).
- Veja como simplificar seu controle de acesso com o acesso uniforme no nível do bucket.