Explorar políticas de acesso armazenadas

Concluído

Uma política de acesso armazenado fornece um nível extra de controle sobre SAS (assinaturas de acesso compartilhado) no nível do serviço no lado do servidor. Estabelecer uma política de acesso armazenada organiza SAS e impõe mais restrições às assinaturas vinculadas pela política. Você pode usar uma política de acesso armazenada para alterar a hora de início, a hora de expiração ou as permissões para uma assinatura ou para revogá-la depois que ela for emitida.

Os seguintes recursos de armazenamento dão suporte a políticas de acesso armazenado:

  • Contêineres de blob
  • Compartilhamentos de arquivos
  • Filas
  • Tabelas

Criando uma política de acesso armazenado

A política de acesso para uma SAS consiste na hora de início, hora de expiração e permissões para a assinatura. Você pode especificar todos esses parâmetros no URI de assinatura e nenhum dentro da política de acesso armazenada; todos na política de acesso armazenado e nenhum no URI; ou alguma combinação dos dois. No entanto, você não pode especificar um determinado parâmetro no token SAS e na política de acesso armazenada.

Para criar ou modificar uma política de acesso armazenada, chame a operação Set ACL para o recurso (consulte Definir ACL do Contêiner, Definir ACL da Fila, Definir ACL da Tabelaou Definir ACL do Compartilhamento) incluindo um corpo de solicitação que especifique os termos da política de acesso. O corpo da solicitação inclui um identificador assinado exclusivo de sua escolha, até 64 caracteres de comprimento e os parâmetros opcionais da política de acesso, da seguinte maneira:

Nota

Quando você estabelece uma política de acesso armazenada em um contêiner, tabela, fila ou compartilhamento, pode levar até 30 segundos para entrar em vigor. Durante esse tempo, as solicitações contra uma SAS associada à política de acesso armazenada podem falhar com o código de status HTTP 403 (Proibido), até que a política de acesso fique ativa. As restrições de intervalo de entidade de tabela (startpk, startrk, endpke endrk) não podem ser especificadas em uma política de acesso armazenada.

A seguir estão exemplos de criação de uma política de acesso armazenado usando o .NET do C# e a CLI do Azure.

BlobSignedIdentifier identifier = new BlobSignedIdentifier
{
    Id = "stored access policy identifier",
    AccessPolicy = new BlobAccessPolicy
    {
        ExpiresOn = DateTimeOffset.UtcNow.AddHours(1),
        Permissions = "rw"
    }
};

blobContainer.SetAccessPolicy(permissions: new BlobSignedIdentifier[] { identifier });
az storage container policy create \
    --name <stored access policy identifier> \
    --container-name <container name> \
    --start <start time UTC datetime> \
    --expiry <expiry time UTC datetime> \
    --permissions <(a)dd, (c)reate, (d)elete, (l)ist, (r)ead, or (w)rite> \
    --account-key <storage account key> \
    --account-name <storage account name> \

Modificando ou revogando uma política de acesso armazenado

Para modificar os parâmetros da política de acesso armazenado, você pode chamar a operação de lista de controle de acesso para o tipo de recurso para substituir a política existente. Por exemplo, se sua política existente conceder permissões de leitura e gravação a um recurso, você poderá modificá-la para conceder apenas permissões de leitura para todas as solicitações futuras.

Para revogar uma política de acesso armazenada, você pode excluí-la, renomeá-la alterando o identificador assinado ou alterando o tempo de expiração para um valor no passado. Alterar o identificador assinado interrompe as associações entre as assinaturas existentes e a política de acesso armazenada. Alterar o tempo de expiração para um valor no passado faz com que as assinaturas associadas expirem. Excluir ou modificar a política de acesso armazenada impacta imediatamente todas as SASs associadas a ela.

Para remover uma única política de acesso, chame a operação Set ACL do recurso, passando o conjunto dos identificadores assinados que você deseja manter no contêiner. Para remover todas as políticas de acesso do recurso, chame a operação Set ACL com um corpo de solicitação vazio.