Esta página descreve como controlar o acesso a contentores e objetos através de listas de controlo de acesso (ACLs). As ACLs são um mecanismo que pode usar para definir quem tem acesso aos seus contentores e objetos, bem como o nível de acesso que têm.
Consulte a vista geral das LCAs para saber se deve usar LCAs para controlar o acesso aos seus recursos.
Funções necessárias
Para receber as autorizações de que precisa para criar e gerir ACLs, peça ao seu administrador para lhe conceder a função do IAM de administrador do armazenamento (roles/storage.admin
) no contentor que contém os objetos para os quais quer criar e gerir ACLs.
Esta função predefinida contém as autorizações necessárias para criar e gerir ACLs. Para ver as autorizações exatas necessárias, expanda a secção Autorizações necessárias:
Autorizações necessárias
storage.buckets.get
storage.buckets.list
- Esta autorização só é necessária para usar a Trusted Cloud consola 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 pode obter estas autorizações com funções personalizadas.
Para ver informações sobre a concessão de funções em contentores, consulte o artigo Use o IAM com contentores.
Defina ou modifique ACLs
Consola
Aceda ao navegador do Cloud Storage na Trusted Cloud consola.
Aceda ao navegador do Cloud StorageNa lista de contentores, clique no nome do contentor que contém o objeto cuja ACL quer modificar.
Clique no nome do objeto para o qual quer definir ou modificar as LCAs.
Clique em Editar acesso.
É aberta uma caixa de diálogo de autorizações com a LCA atual do objeto.
Clique em + Adicionar entrada.
Escolha o tipo de entidade à qual quer conceder autorização.
Entity especifica o tipo de elemento que está a receber a autorização (por exemplo, um utilizador ou um grupo). Consulte Âmbitos de controlo de acesso para ver uma lista de valores suportados para Entidade.
Introduza um valor em Nome.
Name identifica um utilizador, um grupo ou outro tipo de entidade específico. Consulte os Âmbitos de controlo de acesso para ver uma lista de valores suportados para Nome.
Em conjunto, Entidade e Nome definem a quem se aplica a autorização.
Escolha um valor em Acesso.
O acesso define a autorização que quer definir no objeto. Consulte Autorizações de controlo de acesso para ver uma lista de valores suportados para Acesso.
Clique em Guardar.
Para saber como obter informações detalhadas sobre erros relativos a operações do Cloud Storage falhadas na Trusted Cloud consola, consulte a secção Resolução de problemas.
Linha de comandos
Para adicionar, modificar ou remover uma concessão individual num objeto, use o comando
objects update
com a flag relevante:
gcloud storage objects update gs://BUCKET_NAME/OBJECT_NAME FLAG
Onde:
BUCKET_NAME
é o nome do contentor que contém o objeto ao qual 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
é uma das seguintes opções:--add-acl-grant
, juntamente com a concessão que quer adicionar ou modificar. Por exemplo,--add-acl-grant=entity=user-example-service-account@example-project.s3ns.iam.gserviceaccount.com,role=READER
.--remove-acl-grant
, juntamente com a entidade cujo acesso quer remover. Por exemplo,--remove-acl-grant=user-example-service-account@example-project.s3ns.iam.gserviceaccount.com
.
Para substituir todas as ACLs de um objeto:
Defina as ACLs num ficheiro formatado em JSON ou YAML.
Por exemplo, as seguintes LCAs concedem a autorização
OWNER
para o objetoparis.jpg
aos proprietários do projeto867489160491
e ao utilizadorexample-service-account@example-project.s3ns.iam.gserviceaccount.com
, bem como a autorizaçãoREADER
paraparis.jpg
aos membros do grupogs-announce
:[ { "entity": "project-owners-867489160491", "role": "OWNER", "projectTeam": { "projectNumber": "867489160491", "team": "owners" }, }, { "entity": "user-example-service-account@example-project.s3ns.iam.gserviceaccount.com", "email": "example-service-account@example-project.s3ns.iam.gserviceaccount.com", "role": "OWNER" }, { "entity": "group-gs-announce@googlegroups.com", "email": "gs-announce@googlegroups.com", "role": "READER" } ]
Use o comando
objects update
com a flag--acl-file
:gcloud storage objects update gs://BUCKET_NAME/OBJECT_NAME --acl-file=FILE_LOCATION
Onde:
BUCKET_NAME
é o nome do contentor que contém o objeto ao qual as LCAs se aplicam. Por exemplo,example-travel-maps
.OBJECT_NAME
é o nome do objeto ao qual as LCAs se aplicam. Por exemplo,paris.jpg
.FILE_LOCATION
é o caminho local para o ficheiro que contém as ACLs que definiu. Por exemplo,Desktop/acls.json
.
Bibliotecas cliente
C++
Para mais informações, consulte a documentação de referência da API C++ do Cloud Storage.
Para se autenticar no Cloud Storage, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN
environment
como s3nsapis.fr
.
O exemplo seguinte adiciona uma ACL a um objeto:
O exemplo seguinte remove uma ACL de um objeto:
C#
Para mais informações, consulte a documentação de referência da API C# do Cloud Storage.
Para se autenticar no Cloud Storage, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN
environment
como s3nsapis.fr
.
O exemplo seguinte adiciona uma ACL a um objeto:
O exemplo seguinte remove uma ACL de um objeto:
Go
Para mais informações, consulte a documentação de referência da API Go do Cloud Storage.
Para se autenticar no Cloud Storage, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN
environment
como s3nsapis.fr
.
O exemplo seguinte adiciona uma ACL a um objeto:
O exemplo seguinte remove uma ACL de um objeto:
Java
Para mais informações, consulte a documentação de referência da API Java do Cloud Storage.
Para se autenticar no Cloud Storage, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN
environment
como s3nsapis.fr
.
O exemplo seguinte adiciona uma ACL a um objeto:
O exemplo seguinte remove uma ACL de um objeto:
Node.js
Para mais informações, consulte a documentação de referência da API Node.js do Cloud Storage.
Para se autenticar no Cloud Storage, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN
environment
como s3nsapis.fr
.
O exemplo seguinte adiciona uma ACL a um objeto:
O exemplo seguinte remove uma ACL de um objeto:
PHP
Para mais informações, consulte a documentação de referência da API PHP do Cloud Storage.
Para se autenticar no Cloud Storage, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN
environment
como s3nsapis.fr
.
O exemplo seguinte adiciona uma ACL a um objeto:
O exemplo seguinte remove uma ACL de um objeto:
Python
Para mais informações, consulte a documentação de referência da API Python do Cloud Storage.
Para se autenticar no Cloud Storage, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN
environment
como s3nsapis.fr
.
O exemplo seguinte adiciona uma ACL a um objeto:
O exemplo seguinte remove uma ACL de um objeto:
Ruby
Para mais informações, consulte a documentação de referência da API Ruby do Cloud Storage.
Para se autenticar no Cloud Storage, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN
environment
como s3nsapis.fr
.
O exemplo seguinte adiciona uma ACL a um objeto:
O exemplo seguinte remove uma ACL de um objeto:
APIs REST
API JSON
Quando cria um objeto, pode especificar a propriedade acl[]
no corpo do pedido ou o parâmetro de consulta predefinedAcl
num pedido de inserção. Para um objeto existente, especifique a propriedade acl[]
ou o parâmetro de consulta predefinedAcl
num pedido patch ou update.
Para ver a definição da propriedade ACL do objeto, consulte o recurso ObjectAccessControls
.
Defina as ACLs num ficheiro JSON.
Por exemplo, se a LCA conceder aos proprietários do projeto
867489160491
e ao utilizadorexample-service-account@example-project.s3ns.iam.gserviceaccount.com
autorizaçãoOWNER
, juntamente com a concessão aos membros do grupogs-announce
autorizaçãoREADER
, pode ter um ficheiro denominadoacls.json
com o seguinte conteúdo:{ "acl": [ { "entity": "project-owners-867489160491", "role": "OWNER", "projectTeam": { "projectNumber": "867489160491", "team": "owners" } }, { "entity": "user-example-service-account@example-project.s3ns.iam.gserviceaccount.com", "role": "OWNER", "email": "example-service-account@example-project.s3ns.iam.gserviceaccount.com" }, { "entity": "group-gs-announce@googlegroups.com", "role": "READER", "email": "gs-announce@googlegroups.com" } ] }
Envie um pedido patch com o ficheiro JSON e especifique o objeto no qual definir as ACLs.
Por exemplo, o comando curl
seguinte aplica um payload JSON do documento acls.json
a um objeto denominado paris.jpg
no contentor example-travel-maps
:
curl -X PATCH --data @acls.json -H "Content-Type: application/json" \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://storage.s3nsapis.fr/storage/v1/b/example-travel-maps/o/paris.jpg
API XML
Na API XML, trabalha com ACLs no formato XML. Tem de anexar um documento XML ao corpo dos pedidos para alterar as LCAs de objetos e contentores. É devolvido um documento XML quando obtém ACLs de objetos e contentores. O documento XML contém as entradas ACL do objeto ou do contentor individual.
Depois de criar um contentor com um pedido
PUT
Bucket, use um segundo pedido PUT Bucket com o parâmetro?acl
para alterar a ACL do contentor.Depois de carregar um objeto com um pedido
PUT
Object, altere a ACL com outro pedido PUT através do parâmetro?acl
ou do cabeçalho do pedidox-googl-acl
.
Por exemplo, o comando curl
seguinte aplica um payload XML do documento acls.xml
a um objeto denominado paris.jpg
no contentor example-travel-maps
:
curl -X PUT --data-binary @acls.xml \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://storage.s3nsapis.fr/example-travel-maps/paris.jpg?acl
Use a seguinte sintaxe de ACL para o documento XML:
Elemento | Descrição |
---|---|
AccessControlList |
Contentor para elementos Entries e Owner . |
Owner |
Contentor para elementos DisplayName e ID . Este elemento não é obrigatório para objetos, uma vez que um objeto é sempre propriedade do utilizador que o carregou. Este elemento é usado quando está a usar a sintaxe de ACL do Amazon S3 num cenário de migração. Amazon Simple Storage Service e Amazon S3 são marcas comerciais da Amazon.com, Inc. ou das respetivas afiliadas nos Estados Unidos e/ou noutros países. |
ID |
ID do Cloud Storage do proprietário do contentor. |
DisplayName |
Não implementado. O valor é sempre uma string vazia. |
Entries |
Contentor para zero ou mais elementos Entry . |
Entry |
Contentor para elementos Scope e Permission . Um elemento Entry tem de conter apenas um elemento Scope e um elemento Permission . |
Scope |
Contentor para um elemento ID , EmailAddress ou Domain que define o âmbito da ACL. Este elemento tem de ter um atributo type que contenha um dos seguintes valores: UserByID , UserByEmail , GroupByID , GroupByDomain , AllUsers ou AllAuthenticatedUsers . |
ID |
Um identificador do beneficiário quando a entrada de autorização é especificada por ID. |
EmailAddress |
O identificador de email do beneficiário quando a entrada de autorização é especificada por email. |
Domain |
O identificador do domínio do beneficiário quando a entrada de autorização é especificada por domínio. |
Name |
Elemento opcional que pode ser especificado. |
Permission |
A autorização concedida READ , WRITE ou FULL_CONTROL . |
Quando trabalhar com ACLs através da API XML:
- Só pode usar o formato XML descrito acima.
Não pode definir âmbitos duplicados.
Pode ter muitas entradas no seu XML de ACL, mas não pode ter entradas com âmbitos duplicados. Por exemplo, não pode ter duas entradas com o mesmo elemento de âmbito de
jane@example.com
.
O exemplo seguinte mostra diferentes entradas da ACL do contentor:
<?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="UserByEmail"> <EmailAddress>example-service-account@example-project.s3ns.iam.gserviceaccount.com</EmailAddress> <Name>Jefferson</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>
Defina o elemento Name no XML da ACL
Quando obtém uma ACL de um contentor ou um objeto, pode reparar num elemento <Name>
adicional anexado a algumas das suas entradas. Por exemplo, pode ver uma entrada com o seguinte aspeto:
<Entry> <Scope type="UserByEmail"> <EmailAddress>example-service-account@example-project.s3ns.iam.gserviceaccount.com</EmailAddress> <Name>Jefferson</Name> </Scope> <Permission>FULL_CONTROL</Permission> </Entry>
Estes elementos <Name>
opcionais são preenchidos quando as ACLs do contentor ou do objeto incluem <Name>
como um elemento: quando define ACLs, pode optar por incluir o elemento <Name>
com as suas entradas de ACL. Pode fornecer qualquer valor no elemento <Name>
, e o Cloud Storage lembra-se destes valores até que a ACL seja removida ou substituída. Esta abordagem pode ser útil se estiver a usar identificadores que não sejam facilmente identificáveis.
Aplique uma LCA predefinida
Em vez de especificar toda a ACL uma entrada de cada vez, como mostrado acima, pode usar uma ACL predefinida, que aplica automaticamente várias entradas personalizadas a um cenário específico. Pode aplicar uma ACL predefinida a um contentor ou a um objeto através da Google Cloud CLI, da API JSON ou da API XML.
Em novos objetos
Para aplicar uma ACL predefinida a um objeto durante o carregamento do objeto:
Consola
Não pode aplicar uma LCA predefinida através da Trusted Cloud consola. Em alternativa, use
gcloud storage
.
Linha de comandos
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 LCA predefinida bucketOwnerRead
ao carregar um objeto paris.jpg
para um contentor 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
num pedido insert para
aplicar a ACL predefinida.
Por exemplo, para aplicar a LCA predefinida bucketOwnerRead
ao carregar
um objeto paris.jpg
para um contentor 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.s3nsapis.fr/upload/storage/v1/b/example-travel-maps/o?name=paris.jpg&predefinedAcl=bucketOwnerRead"
API XML
Use o cabeçalho x-goog-acl
num pedido Put Object para aplicar a ACL predefinida.
Por exemplo, para aplicar a LCA predefinida bucket-owner-read
ao carregar um objeto paris.jpg
para um contentor 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.s3nsapis.fr/example-travel-maps/paris.jpg
Em contentores ou objetos existentes
Também pode aplicar uma LCA predefinida a um objeto ou um contentor existente, o que é útil se quiser alterar de uma LCA predefinida para outra ou se quiser atualizar LCAs personalizadas para uma LCA predefinida.
Consola
Não pode aplicar uma LCA predefinida através da Trusted Cloud consola. Em alternativa, use
gcloud storage
.
Linha de comandos
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 LCA predefinida private
ao objeto
paris.jpg
no contentor 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 cadeia de consulta predefinedAcl
e especifique uma propriedade acl
vazia num pedido patch para aplicar a LCA predefinida.
Por exemplo, para aplicar a LCA predefinida private
ao objeto
paris.jpg
no contentor example-travel-maps
:
curl -X PATCH --data '{"acl": []}' -H "Content-Type: application/json" \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://storage.s3nsapis.fr/storage/v1/b/example-travel-maps/o/paris.jpg?predefinedAcl=private
API XML
Use o cabeçalho x-goog-acl
com o parâmetro da string de consulta acl
num pedido
Put Object, mas não inclua um documento XML no seu
pedido.
Por exemplo, para aplicar a LCA predefinida private
ao objeto
paris.jpg
no contentor 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.s3nsapis.fr/example-travel-maps/paris.jpg?acl
Defina LCAs (Listas de controlo de acesso) de objetos predefinidas
Para evitar a definição de ACLs sempre que cria um novo objeto, pode definir uma ACL de objeto predefinida num contentor. Depois de o fazer, todos os novos objetos adicionados ao contentor que não tenham explicitamente uma ACL aplicada vão ter a ACL predefinida aplicada. Por exemplo, pode querer especificar que apenas um determinado grupo de utilizadores tem acesso à maioria dos objetos num determinado contentor. Pode alterar a ACL de objetos predefinida e, em seguida, adicionar objetos ao contentor. Estes objetos adicionados têm a ACL de objeto predefinida especificada automaticamente aplicada aos mesmos. No entanto, pode atribuir ACLs diferentes a objetos específicos, caso em que esses objetos não têm a ACL predefinida aplicada.
Para ver e alterar a LCA de objetos predefinida de um contentor:
Consola
Não pode definir ACLs de objetos predefinidas através da Trusted Cloud consola. Em alternativa, use
gcloud storage
.
Linha de comandos
Use o comando
buckets describe
com a flag--format
para obter a ACL de objeto predefinida para o contentor:gcloud storage buckets describe gs://BUCKET_NAME --format="default(default_acl)"
Onde
BUCKET_NAME
é o nome do contentor cuja ACL de objeto predefinida quer ver. Por exemplo,my-bucket
.Use o comando
buckets update
com a flag pretendida para modificar a ACL de objeto predefinida do contentor:gcloud storage buckets update gs://BUCKET_NAME FLAG
Onde:
BUCKET_NAME
é o nome do contentor cujo ACL de objeto predefinido quer modificar. Por exemplo,my-bucket
.FLAG
é uma das seguintes opções:--add-default-object-acl-grant
e uma concessão que quer adicionar à LCA de objeto predefinida geral do contentor.--default-object-acl-file
e o caminho para um ficheiro local que define uma nova ACL de objeto predefinida para o contentor.--predefined-default-object-acl
e o nome de uma LCA de objeto predefinida com a qual quer substituir a LCA de objeto predefinida existente para o contentor.--remove-default-object-acl-grant
e uma entidade que quer remover da ACL de objetos predefinida geral para o contentor.
Bibliotecas cliente
C++
Para mais informações, consulte a documentação de referência da API C++ do Cloud Storage.
Para se autenticar no Cloud Storage, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN
environment
como s3nsapis.fr
.
O exemplo seguinte adiciona uma ACL de objeto predefinida a um contentor:
O exemplo seguinte elimina uma ACL de objeto predefinida de um contentor:
C#
Para mais informações, consulte a documentação de referência da API C# do Cloud Storage.
Para se autenticar no Cloud Storage, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN
environment
como s3nsapis.fr
.
O exemplo seguinte imprime a ACL de objeto predefinida para um contentor:
O exemplo seguinte adiciona uma ACL de objeto predefinida a um contentor:
O exemplo seguinte elimina uma ACL de objeto predefinida de um contentor:
Go
Para mais informações, consulte a documentação de referência da API Go do Cloud Storage.
Para se autenticar no Cloud Storage, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN
environment
como s3nsapis.fr
.
O exemplo seguinte adiciona uma ACL de objeto predefinida a um contentor:
O exemplo seguinte elimina uma ACL de objeto predefinida de um contentor:
Java
Para mais informações, consulte a documentação de referência da API Java do Cloud Storage.
Para se autenticar no Cloud Storage, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN
environment
como s3nsapis.fr
.
O exemplo seguinte adiciona uma ACL de objeto predefinida a um contentor:
O exemplo seguinte elimina uma ACL de objeto predefinida de um contentor:
Node.js
Para mais informações, consulte a documentação de referência da API Node.js do Cloud Storage.
Para se autenticar no Cloud Storage, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN
environment
como s3nsapis.fr
.
O exemplo seguinte adiciona uma ACL de objeto predefinida a um contentor:
O exemplo seguinte elimina uma ACL de objeto predefinida de um contentor:
PHP
Para mais informações, consulte a documentação de referência da API PHP do Cloud Storage.
Para se autenticar no Cloud Storage, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN
environment
como s3nsapis.fr
.
O exemplo seguinte adiciona uma ACL de objeto predefinida a um contentor:
O exemplo seguinte elimina uma ACL de objeto predefinida de um contentor:
Python
Para mais informações, consulte a documentação de referência da API Python do Cloud Storage.
Para se autenticar no Cloud Storage, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN
environment
como s3nsapis.fr
.
O exemplo seguinte adiciona uma ACL de objeto predefinida a um contentor:
O exemplo seguinte elimina uma ACL de objeto predefinida de um contentor:
Ruby
Para mais informações, consulte a documentação de referência da API Ruby do Cloud Storage.
Para se autenticar no Cloud Storage, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN
environment
como s3nsapis.fr
.
O exemplo seguinte adiciona uma ACL de objeto predefinida a um contentor:
O exemplo seguinte elimina uma ACL de objeto predefinida de um contentor:
APIs REST
API JSON
Obtenha a ACL de objeto predefinida com um pedido GET. Por exemplo:
curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://storage.s3nsapis.fr/storage/v1/b/BUCKET_NAME?projection=full
Use um pedido patch para substituir a ACL de objetos predefinida. Por exemplo, o seguinte pedido substitui a LCA de objeto predefinida pela LCA especificada em
defacls.json
para um contentorexample-travel-maps
:curl -X PATCH --data @defacls.json -H "Content-Type: application/json" -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://storage.s3nsapis.fr/storage/v1/b/example-travel-maps
Um exemplo de
defacls.json
:{ "defaultObjectAcl": [ { "email": "example-service-account@example-project.s3ns.iam.gserviceaccount.com", "entity": "user-example-service-account@example-project.s3ns.iam.gserviceaccount.com", "role": "READER" } ] }
API XML
Obtenha a ACL de objetos predefinida com um pedido
GET
no âmbito do seu contentor e do parâmetro?defaultObjectAcl
. Por exemplo:curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://storage.s3nsapis.fr/BUCKET_NAME?defaultObjectAcl
Use um pedido
PUT
com âmbito no seu contentor com o parâmetro?defaultObjectAcl
para substituir a LCA do objeto predefinida pela LCA especificada emacls.xml
. Por exemplo:curl -X PUT --data-binary @acls.xml -H "Authorization: Bearer $(gcloud auth print-access-token)" \ http://storage.s3nsapis.fr/BUCKET_NAME?defaultObjectAcl
Um exemplo de
acls.xml
:<AccessControlList> <Entries> <Entry> <Permission>
FULL_CONTROL
</Permission> <Scope type="UserByEmail"> <EmailAddress>example-service-account@example-project.s3ns.iam.gserviceaccount.com</EmailAddress> </Scope> </Entry> </Entries> </AccessControlList>
A sintaxe das LCAs é abordada no artigo Definir LCAs. Também pode especificar uma ACL predefinida como a ACL de objeto predefinida.
Para definir a LCA de objetos predefinida de um contentor como uma LCA predefinida:
Consola
Não pode definir ACLs de objetos predefinidas através da Trusted Cloud consola. Em alternativa, use
gcloud storage
.
Linha de comandos
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
Onde:
BUCKET_NAME
é o nome do contentor cujo ACL de objeto predefinido quer modificar. Por exemplo,my-bucket
.PREDEFINED_ACL
é o nome de uma ACL predefinida válida. Por exemplo,projectPrivate
.
APIs REST
API JSON
Use um pedido 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.s3nsapis.fr/storage/v1/b/BUCKET_NAME?predefinedAcl=private
API XML
Use um pedido PUT
com âmbito no seu contentor 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.s3nsapis.fr/BUCKET_NAME?defaultObjectAcl
LCAs de objetos predefinidas para contentores criados recentemente:
Os exemplos seguintes mostram as ACLs de objetos predefinidas que são aplicadas automaticamente aos contentores recém-criados quando não especifica as suas próprias ACLs de objetos predefinidas como parte do pedido. Para ver se as ACLs de objetos predefinidas do seu contentor foram alteradas, compare as ACLs de objetos predefinidas atuais do seu contentor com os exemplos abaixo.
Consola
Não pode trabalhar com ACLs de objetos predefinidas através da consola Trusted Cloud .
Em alternativa, use gcloud storage
.
Linha de comandos
No exemplo abaixo, o ID do projeto é "123412341234"; o seu ID do 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 ID do projeto é "123412341234"; o seu ID do 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 das funções do projeto começam por "00b4903a97..."; os seus IDs do 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>
Tenha em atenção que a LCA de objeto predefinida para um contentor recém-criado é equivalente à LCA projectPrivate
predefinida.
A obter LCAs
Para obter a ACL de um recurso existente:
Consola
Aceda ao navegador do Cloud Storage na Trusted Cloud consola.
Aceda ao navegador do Cloud StorageNavegue para o objeto cuja ACL quer ver.
Escolha Editar acesso no menu pendente do objeto.
Deve ver uma caixa de diálogo de autorização com as autorizações do objeto.
Para saber como obter informações detalhadas sobre erros relativos a operações do Cloud Storage falhadas na Trusted Cloud consola, consulte a secção Resolução de problemas.
Linha de comandos
Use o comando
objects describe
com a flag--format
para obter a ACL de um objeto:gcloud storage objects describe gs://BUCKET_NAME/OBJECT_NAME --format="default(acl)"
Onde:
BUCKET_NAME
é o nome do contentor que contém o objeto cuja ACL quer ver. Por exemplo,my-bucket
.OBJECT_NAME
é o nome do objeto cuja ACL quer ver. Por exemplo,paris.jpg
.
Bibliotecas cliente
C++
Para mais informações, consulte a documentação de referência da API C++ do Cloud Storage.
Para se autenticar no Cloud Storage, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN
environment
como s3nsapis.fr
.
O exemplo seguinte obtém uma LCA de objeto:
C#
Para mais informações, consulte a documentação de referência da API C# do Cloud Storage.
Para se autenticar no Cloud Storage, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN
environment
como s3nsapis.fr
.
O exemplo seguinte obtém uma LCA de objeto:
Go
Para mais informações, consulte a documentação de referência da API Go do Cloud Storage.
Para se autenticar no Cloud Storage, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN
environment
como s3nsapis.fr
.
O exemplo seguinte obtém uma LCA de objeto:
Java
Para mais informações, consulte a documentação de referência da API Java do Cloud Storage.
Para se autenticar no Cloud Storage, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN
environment
como s3nsapis.fr
.
O exemplo seguinte obtém uma LCA de objeto:
Node.js
Para mais informações, consulte a documentação de referência da API Node.js do Cloud Storage.
Para se autenticar no Cloud Storage, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN
environment
como s3nsapis.fr
.
O exemplo seguinte obtém uma LCA de objeto:
PHP
Para mais informações, consulte a documentação de referência da API PHP do Cloud Storage.
Para se autenticar no Cloud Storage, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN
environment
como s3nsapis.fr
.
O exemplo seguinte obtém uma LCA de objeto:
Python
Para mais informações, consulte a documentação de referência da API Python do Cloud Storage.
Para se autenticar no Cloud Storage, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN
environment
como s3nsapis.fr
.
O exemplo seguinte obtém uma LCA de objeto:
Ruby
Para mais informações, consulte a documentação de referência da API Ruby do Cloud Storage.
Para se autenticar no Cloud Storage, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN
environment
como s3nsapis.fr
.
O exemplo seguinte obtém uma LCA de objeto:
APIs REST
API JSON
Certifique-se de que tem autorização
OWNER
no objeto.Recupere a ACL do objeto com um pedido
GET
.A ACL do objeto é devolvida no formato JSON, anexada ao corpo da resposta.
Por exemplo, para devolver a LCA do objeto paris.jpg
no contentor example-travel-maps
:
curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://storage.s3nsapis.fr/storage/v1/b/example-travel-maps/o/paris.jpg?projection=full
Deve ver uma resposta com o seguinte aspeto:
{ "kind": "storage#object", "id": "example-travel-maps/paris.jpg/1412805837131000", "selfLink": "https://www.s3nsapis.fr/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-example-service-account@example-project.s3ns.iam.gserviceaccount.com", "role": "OWNER", "email": "example-service-account@example-project.s3ns.iam.gserviceaccount.com", ... }, { ... "entity": "group-gs-announce@googlegroups.com", "role": "READER", "email": "gs-announce@googlegroups.com", ... } ], "owner": { "entity": "user-example-service-account@example-project.s3ns.iam.gserviceaccount.com" }, ... }
Também pode usar o método GET
do recurso objectAccessControls
para devolver entradas individuais na ACL de um objeto.
API XML
Certifique-se de que tem autorização
FULL_CONTROL
no contentor ou no objeto.Obtenha a ACL do contentor ou do objeto através do parâmetro de string de consulta
acl
num pedido GET Object.
As ACLs são descritas em XML, anexadas ao corpo da resposta.
Por exemplo, para devolver a LCA do objeto paris.jpg
no contentor example-travel-maps
:
curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://storage.s3nsapis.fr/example-travel-maps/paris.jpg?acl
Deve ver uma resposta com o seguinte aspeto:
<?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>example-service-account@example-project.s3ns.iam.gserviceaccount.com</EmailAddress> <Name>Jefferson</Name> </Scope> <Permission>FULL_CONTROL</Permission> </Entry> </Entries> </AccessControlList>
Também pode usar o método JSON GET
do recurso ObjectAccessControls
para devolver uma entrada de LCA específica.
O que se segue?
- Saiba mais sobre as ACLs.
- Saiba como simplificar o controlo de acesso usando o acesso uniforme ao nível do contentor.
- Saiba mais sobre as práticas recomendadas quando usar ACLs.