Set Container ACL

A operação Set Container ACL define as permissões para o contêiner especificado. As permissões indicam se os blobs de um contêiner podem ser acessados publicamente.

A partir da versão 2009-09-19, as permissões de contêiner fornecem as seguintes opções para gerenciar o acesso ao contêiner:

  • Acesso de leitura público completo: o contêiner e os dados blob podem ser lidos por meio de solicitação anônima. Os clientes podem enumerar os blobs no contêiner por meio de uma solicitação anônima, mas não podem enumerar os contêineres em uma conta de armazenamento.

  • Somente acesso de leitura público para blobs: os dados blob nesse contêiner podem ser lidos por meio de solicitação anônima, mas os dados do contêiner não estão disponíveis. Os clientes não podem enumerar os blobs no contêiner por meio de uma solicitação anônima.

  • Sem acesso de leitura público: o contêiner e os dados blob podem ser lidos somente pelo proprietário da conta.

Set Container ACL também define uma política de acesso armazenada para uso com assinaturas de acesso compartilhado. Para obter mais informações, consulte Definir uma política de acesso armazenado.

Todo o acesso público ao contêiner é anônimo, assim como o acesso por uma assinatura de acesso compartilhado.

Solicitação

A solicitação Set Container ACL pode ser criada da seguinte maneira. HTTPS é recomendado. Substitua myaccount pelo nome da sua conta de armazenamento:

Método URI da solicitação Versão de HTTP
PUT https://myaccount.blob.core.windows.net/mycontainer?restype=container&comp=acl HTTP/1.1

URI de serviço de armazenamento emulado

Ao fazer uma solicitação no serviço de armazenamento emulado, especifique o nome de host do emulador e a porta do serviço Blob como 127.0.0.1:10000, seguido pelo nome da conta de armazenamento emulado:

Método URI da solicitação Versão de HTTP
PUT http://127.0.0.1:10000/devstoreaccount1/mycontainer?restype=container&comp=acl HTTP/1.1

Para obter mais informações, consulte Como usar o Armazenamento Emulator do Azure para desenvolvimento e teste.

Parâmetros de URI

Os seguintes parâmetros adicionais podem ser especificados no URI de solicitação.

Parâmetro Descrição
timeout Opcional. O parâmetro timeout é expresso em segundos. Para obter mais informações, consulte Configurando tempos limite para operações de serviço de blob.

Cabeçalhos de solicitação

A tabela a seguir descreve os cabeçalhos de solicitação obrigatórios e opcionais.

Cabeçalho da solicitação Descrição
Authorization Obrigatórios. Especifica o esquema de autorização, o nome da conta e a assinatura. Para obter mais informações, consulte Autorizar solicitações para o Azure Armazenamento.
Date ou x-ms-date Obrigatórios. Especifica o UTC (Tempo Universal Coordenado) para a solicitação. Para obter mais informações, consulte Autorizar solicitações para o Azure Armazenamento.
x-ms-version Opcional. Especifica a versão da operação a ser usada para esta solicitação. Para obter mais informações, consulte Controle de versão para os Serviços de Armazenamento do Azure.
x-ms-blob-public-access Opcional. Especifica se os dados no contêiner podem ser acessados publicamente e o nível de acesso. Os valores possíveis incluem:

- container: especifica o acesso de leitura público completo para dados de contêiner e blob. Os clientes podem enumerar os blobs no contêiner por meio de uma solicitação anônima, mas não podem enumerar os contêineres em uma conta de armazenamento.
- blob: Especifica o acesso de leitura público para blobs. Os dados do blob nesse contêiner podem ser lidos por meio de solicitação anônima, mas os dados do contêiner não estão disponíveis. Os clientes não podem enumerar os blobs no contêiner por meio de uma solicitação anônima.

Se esse cabeçalho não for incluído na solicitação, os dados do contêiner serão privados do proprietário da conta.

Observe que não é permitido definir o acesso público para um contêiner em uma conta de Armazenamento Premium do Azure.
x-ms-lease-id: <ID> Opcional, versão 2012-02-12 e mais recente. Se especificado, Set Container ACL só terá êxito se a concessão do contêiner estiver ativa e corresponder a essa ID. Se não houver nenhuma concessão ativa ou a ID não corresponder, o código 412 (Falha na Pré-condição) será retornado.
x-ms-client-request-id Opcional. Fornece um valor opaco gerado pelo cliente com um limite de caracteres de 1 KiB que é registrado nos logs de análise quando o log de análise de armazenamento está habilitado. O uso desse cabeçalho é altamente recomendável para correlacionar as atividades do lado do cliente com as solicitações recebidas pelo servidor. Para obter mais informações, consulte Sobre Análise de Armazenamento registro em log e registro em log do Azure: usando logs para rastrear solicitações de Armazenamento.

Essa operação também oferece suporte ao uso de cabeçalhos condicionais para executar a operação somente se uma determinada condição for atendida. Para obter mais informações, confira Como especificar cabeçalhos condicionais para operações de serviço Blob.

Corpo da solicitação

Para especificar uma política de acesso armazenada, forneça um identificador exclusivo e uma política de acesso no corpo da solicitação da operação Set Container ACL.

O elemento SignedIdentifier inclui o identificador exclusivo, conforme especificado no elemento Id, e os detalhes da política de acesso, conforme especificado no elemento AccessPolicy. O comprimento máximo do identificador exclusivo é 64 caracteres.

Os campos Start e Expiry devem ser expressos como hora UTC e devem atender a um formato ISO 8061 válido. Os formatos ISO 8061 com suporte incluem os seguintes:

  • YYYY-MM-DD

  • YYYY-MM-DDThh:mmTZD

  • YYYY-MM-DDThh:mm:ssTZD

  • YYYY-MM-DDThh:mm:ss.fffffffTZD

Para a parte de data desses formatos, YYYY é uma representação de ano com quatro dígitos, MM é uma representação de mês com dois dígitos e DD é uma representação de dia com dois dígitos. Na parte de hora, hh é a representação de hora na notação de 24 horas, mm é a representação de minuto com dois dígitos, ss é a representação de segundos com dois dígitos e fffffff é a representação de milissegundo com sete dígitos. Um designador de hora T separa as partes de data e hora da cadeia de caracteres, enquanto um designador de fuso horário TZD especifica um fuso horário.

<?xml version="1.0" encoding="utf-8"?>  
<SignedIdentifiers>  
  <SignedIdentifier>   
    <Id>unique-64-character-value</Id>  
    <AccessPolicy>  
      <Start>start-time</Start>  
      <Expiry>expiry-time</Expiry>  
      <Permission>abbreviated-permission-list</Permission>  
    </AccessPolicy>  
  </SignedIdentifier>  
</SignedIdentifiers>  
  

Solicitação de Exemplo

Request Syntax:  
PUT https://myaccount.blob.core.windows.net/mycontainer?restype=container&comp=acl HTTP/1.1  
  
Request Headers:  
x-ms-version: 2011-08-18  
x-ms-date: Sun, 25 Sep 2011 00:42:49 GMT  
x-ms-blob-public-access: container  
Authorization: SharedKey myaccount:V47F2tYLS29MmHPhiR8FyiCny9zO5De3kVSF0RYQHmo=  
  
Request Body:  
<?xml version="1.0" encoding="utf-8"?>  
<SignedIdentifiers>  
  <SignedIdentifier>   
    <Id>MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTI=</Id>  
    <AccessPolicy>  
      <Start>2009-09-28T08:49:37.0000000Z</Start>  
      <Expiry>2009-09-29T08:49:37.0000000Z</Expiry>  
      <Permission>rwd</Permission>  
    </AccessPolicy>  
  </SignedIdentifier>  
</SignedIdentifiers>  
  

Resposta

A resposta inclui um código de status HTTP e um conjunto de cabeçalhos de resposta.

Código de status

Uma operação bem-sucedida retorna o código de status 200 (OK).

Para obter informações sobre códigos de status, consulte Status e Códigos de Erro.

Cabeçalhos de resposta

A resposta para esta operação inclui os cabeçalhos a seguir. A resposta também pode incluir cabeçalhos padrão HTTP adicionais. Todos os cabeçalhos padrão estão em conformidade com a especificação do protocolo HTTP/1.1.

Cabeçalho de resposta Descrição
ETag A ETag do contêiner. Se a versão da solicitação for a 2011-08-18 ou mais recente, o valor de ETag será exibido entre aspas.
Last-Modified Retorna a data e a hora em que o contêiner foi modificado pela última vez. O formato da data segue RFC 1123. Para obter mais informações, consulte Representação de valores de Date-Time em cabeçalhos.

Qualquer operação que modifica o contêiner, suas propriedades ou metadados atualiza a hora da última modificação, inclusive definindo as permissões do contêiner. As operações em blobs não afetam a hora da última modificação do contêiner.
x-ms-request-id Esse cabeçalho identifica a solicitação que foi feita de forma exclusiva e pode ser usado para solucionar problemas na solicitação. Para obter mais informações, consulte solução de problemas de operações de API
x-ms-version Indica a versão do serviço Blob usado para executar a solicitação. Esse cabeçalho é retornado para solicitações feitas na versão 2009-09-19 e mais recente.
Date Um valor de data/hora UTC gerado pelo serviço que indica a hora em que a resposta foi iniciada.
x-ms-client-request-id Esse cabeçalho pode ser usado para solucionar problemas de solicitações e respostas correspondentes. O valor desse cabeçalho é igual ao valor do x-ms-client-request-id cabeçalho se ele estiver presente na solicitação e o valor estiver no máximo 1024 caracteres ASCII visíveis. Se o x-ms-client-request-id cabeçalho não estiver presente na solicitação, esse cabeçalho não estará presente na resposta.

Exemplo de Resposta

Response Status:  
HTTP/1.1 200 OK  
  
Response Headers:  
Transfer-Encoding: chunked  
Date: Sun, 25 Sep 2011 22:42:55 GMT  
ETag: "0x8CB171613397EAB"  
Last-Modified: Sun, 25 Sep 2011 22:42:55 GMT  
x-ms-version: 2011-08-18  
Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0  

Autorização

Somente o proprietário da conta pode chamar essa operação.

Comentários

Somente o proprietário da conta pode acessar recursos em um contêiner específico, a menos que o proprietário tenha especificado que os recursos do contêiner estejam disponíveis para acesso público definindo as permissões no contêiner, ou que tenha emitido uma assinatura de acesso compartilhado para um recurso dentro do contêiner.

Quando você define permissões para um contêiner, as permissões existentes são substituídas. Para atualizar as permissões do contêiner, chame Obter ACL de Contêiner para buscar todas as políticas de acesso associadas ao contêiner, modificar a política de acesso que você deseja alterar e, em seguida, chamar Set Container ACL com o conjunto completo de dados para executar a atualização.

Habilitando o acesso público anônimo em dados do contêiner

Para habilitar o acesso de leitura público anônimo em dados do contêiner, chame Set Container ACL com o cabeçalho x-ms-blob-public-access definido como container ou blob. Para desabilitar o acesso anônimo, chame Set Container ACL sem especificar o cabeçalho x-ms-blob-public-access.

Se você definir x-ms-blob-public-access como blob, os clientes poderão chamar as seguintes operações anonimamente:

Se você definir x-ms-blob-public-access como container, os clientes poderão chamar as seguintes operações anonimamente:

Estabelecendo políticas de acesso no nível do contêiner

Uma política de acesso armazenada pode especificar a hora de início, a hora de expiração e as permissões para as assinaturas de acesso compartilhado às quais ela está associada. Dependendo de como você deseja controlar o acesso ao contêiner ou recurso de blob, você pode especificar todos esses parâmetros na política de acesso armazenada e omiti-los da URL da assinatura de acesso compartilhado. Fazer isso permite modificar o comportamento da assinatura associada a qualquer momento, bem como revogá-la. Ou você pode especificar um ou mais dos parâmetros de política de acesso na política de acesso armazenada e os outros na URL. Por fim, você pode especificar todos os parâmetros na URL. Nesse caso, é possível usar a política de acesso armazenada para revogar a assinatura, mas não para modificar seu comportamento. Para obter mais informações, consulte Definir uma política de acesso armazenado.

Juntos, a assinatura de acesso compartilhado e a política de acesso armazenado devem incluir todos os campos necessários para autorizar a assinatura. Se qualquer campo obrigatório estiver ausente, a solicitação falhará. Da mesma forma, se um campo for especificado na URL da assinatura de acesso compartilhado e na política de acesso armazenada, ocorrerá uma falha na solicitação com o código de status 400 (Solicitação Incorreta).

No máximo, cinco políticas de acesso separadas podem ser definidas para um contêiner específico a qualquer momento. Se mais de cinco políticas de acesso forem transmitidas no corpo da solicitação, o serviço retornará o código de status 400 (Solicitação Incorreta).

Uma assinatura de acesso compartilhado pode ser emitida em um contêiner ou um blob, independentemente de os dados do contêiner estarem disponíveis ou não para acesso de leitura anônimo. Uma assinatura de acesso compartilhado proporciona uma medida maior de controle de como, quando e para quem recurso se torna acessível.

Observação

O estabelecimento de uma política de acesso armazenada em um contêiner pode levar até 30 segundos para ter efeito. Durante esse intervalo, uma assinatura de acesso compartilhado que esteja associada à política de acesso armazenada falhará com o código de status 403 (Proibido) até que a política de acesso se torne ativa.

Consulte Também

Restringir o acesso a contêineres e blobs
Delegar acesso com uma assinatura de acesso compartilhado
Criação e uso de uma assinatura de acesso compartilhado
Definir uma política de acesso armazenada
Get Container ACL
Autorizar solicitações ao Azure Armazenamento
Status e códigos de erro
Códigos de erro do serviço Blob