Explorar políticas de acesso armazenadas
Uma política de acesso armazenada fornece um nível de controle adicional sobre as SAS (assinaturas de acesso compartilhado) no nível de serviço no lado do servidor. O estabelecimento de uma política de acesso armazenada agrupa as SAS e fornece restrições adicionais para assinaturas que são associadas pela política. Você pode usar uma política de acesso armazenada para alterar a hora de início, a hora de expiração, as permissões de uma assinatura ou para revogá-la depois que ela for emitida.
Os seguintes recursos de armazenamento oferecem suporte às políticas de acesso armazenadas:
- Contêineres de blobs
- Compartilhamentos de arquivo
- Filas
- Tabelas
Criar uma política de acesso armazenada
A política de acesso para uma SAS consiste na hora de início, no tempo de expiração e nas permissões para a assinatura. Você pode especificar todos esses parâmetros no URI da assinatura e nenhum na política de acesso armazenado; tudo na política de acesso armazenada e nenhum no URI; ou uma combinação dos dois. Porém, 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 (confira Definir ACL de Contêiner, Definir ACL de Fila, Definir ACL de Tabela ou Definir ACL de Compartilhamento) com um corpo de solicitação que especifica os termos da política de acesso. O corpo da solicitação inclui um identificador assinado exclusivo de sua preferência, de até 64 caracteres de comprimento, e os parâmetros opcionais da política de acesso, da seguinte maneira:
Observação
Quando você estabelece uma política de acesso armazenada em um contêiner, tabela, fila ou compartilhamento, ela levar até 30 segundos para ter efeito. Durante esse tempo, as solicitações em relação a uma SAS associada à política de acesso armazenada podem falhar com o código de status 403 (Proibido), até que a política de acesso se torne ativa. As restrições do intervalo de entidades da tabela (startpk
, startrk
, endpk
e endrk
) não podem ser especificadas em uma política de acesso armazenada.
Veja a seguir exemplos de como criar uma política de acesso armazenada usando C# .NET 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> \
Modificar ou revogar a política de acesso armazenada
Para modificar os parâmetros da política de acesso armazenada, você pode chamar a operação de lista de controle de acesso do tipo de recurso para substituir a política existente. Por exemplo, se a política existente conceder permissões de leitura e gravação a um recurso, será possível modificá-la para conceder permissões somente de leitura em todas as solicitações futuras.
Para revogar uma política de acesso armazenada, você pode excluí-la, renomeá-la alterando o identificador assinado ou alterar a hora de expiração para um valor no passado. A alteração do identificador assinado interrompe as associações entre todas as assinaturas existentes e a política de acesso armazenada. A alteração da hora de expiração para um valor no passado faz com que todas as assinaturas associadas expirem. Excluir ou modificar a política de acesso armazenada afeta imediatamente todas as SAS associadas a ela.
Para remover uma única política de acesso, chame a operação Set ACL
do recurso, passando o conjunto de identificadores assinados que você deseja manter no contêiner. Para remover todas as políticas de acesso dos recursos, chame a operação Set ACL
com um corpo de solicitação vazio.