Descubra assinaturas de acesso compartilhado
Uma assinatura de acesso compartilhado (SAS) é um URI assinado que aponta para um ou mais recursos de armazenamento e inclui um token que contém um conjunto especial de parâmetros de consulta. O token indica como os recursos podem ser acessados pelo cliente. Um dos parâmetros de consulta, a assinatura, é construído a partir dos parâmetros SAS e assinado com a chave que foi usada para criar o SAS. Essa assinatura é usada pelo Armazenamento do Azure para autorizar o acesso ao recurso de armazenamento.
Tipos de assinaturas de acesso partilhado
O Armazenamento do Azure dá suporte a três tipos de assinaturas de acesso compartilhado:
SAS de delegação de usuário: uma SAS de delegação de usuário é protegida com credenciais do Microsoft Entra e também pelas permissões especificadas para a SAS. Uma SAS de delegação de usuário aplica-se somente ao armazenamento de Blob.
SAS de serviço: uma SAS de serviço é protegida com a chave da conta de armazenamento. Uma SAS de serviço delega acesso a um recurso nos seguintes serviços de Armazenamento do Azure: Armazenamento de Blob, Armazenamento de filas, Armazenamento de tabelas ou Arquivos do Azure.
SAS de conta: uma SAS de conta é protegida com a chave de conta de armazenamento. Uma conta SAS delega o acesso aos recursos em um ou mais dos serviços de armazenamento. Todas as operações disponíveis através de um SAS de serviço ou delegação de usuário também estão disponíveis através de uma conta SAS.
Nota
A Microsoft recomenda que você use as credenciais do Microsoft Entra quando possível como uma prática recomendada de segurança, em vez de usar a chave da conta, que pode ser comprometida mais facilmente. Quando o design do aplicativo exigir assinaturas de acesso compartilhado para acesso ao armazenamento de Blob, use as credenciais do Microsoft Entra para criar uma SAS de delegação de usuário quando possível para segurança superior
Como funcionam as assinaturas de acesso partilhado
Quando utiliza uma SAS para aceder a dados armazenados no Armazenamento do Azure, precisa de dois componentes. O primeiro é um URI para o recurso ao qual pretende aceder. O segundo componente é um token de SAS que criou para autorizar o acesso a esse recurso.
Num único URI, como https://medicalrecords.blob.core.windows.net/patient-images/patient-116139-nq8z7f.jpg?sp=r&st=2020-01-20T11:42:32Z&se=2020-01-20T19:42:32Z&spr=https&sv=2019-02-02&sr=b&sig=SrW1HZ5Nb6MbRzTbXCaPm%2BJiSEn15tC91Y4umMPwVZs%3D
, pode separar o URI do token de SAS da seguinte forma:
- URI:
https://medicalrecords.blob.core.windows.net/patient-images/patient-116139-nq8z7f.jpg?
- Token SAS:
sp=r&st=2020-01-20T11:42:32Z&se=2020-01-20T19:42:32Z&spr=https&sv=2019-02-02&sr=b&sig=SrW1HZ5Nb6MbRzTbXCaPm%2BJiSEn15tC91Y4umMPwVZs%3D
O próprio token de SAS é composto por vários componentes.
Componente | Description |
---|---|
sp=r |
Controla os direitos de acesso. Os valores podem ser a para adicionar, c para criar, d para excluir, l para lista, r para leitura ou w para gravação. Este exemplo é só de leitura. O exemplo sp=acdlrw concede todos os direitos disponíveis. |
st=2020-01-20T11:42:32Z |
A data e hora em que o acesso é iniciado. |
se=2020-01-20T19:42:32Z |
A data e hora em que o acesso é terminado. Este exemplo concede oito horas de acesso. |
sv=2019-02-02 |
A versão da API de armazenamento a utilizar. |
sr=b |
O tipo de armazenamento a ser acedido. Neste exemplo, "b" refere-se a blob. |
sig=SrW1HZ5Nb6MbRzTbXCaPm%2BJiSEn15tC91Y4umMPwVZs%3D |
A assinatura criptográfica. |
Melhores práticas
Para reduzir potenciais riscos da utilização de uma SAS, a Microsoft fornece alguma orientação:
- Para distribuir de forma segura uma SAS e impedir ataques "man-in-the-middle", utilize sempre HTTPS.
- A SAS mais segura é uma SAS de delegação de utilizadores. Utilize-a sempre que possível, pois remove a necessidade de armazenar a chave da conta de armazenamento em código. Você deve usar o Microsoft Entra ID para gerenciar credenciais. Esta opção poderá não ser possível para a sua solução.
- Experimente definir a hora de expiração para o valor útil mais baixo. Se uma chave de SAS for comprometida, poderá ser explorada apenas durante um curto espaço de tempo.
- Aplique a regra de privilégios mínimos necessários. Conceda apenas o acesso que é necessário. Por exemplo, na sua aplicação, o acesso só de leitura é suficiente.
- Existem algumas situações onde uma SAS não é a solução correta. Quando existir um risco inaceitável na utilização de uma SAS, crie um serviço de camada intermediária para gerir os utilizadores e o respetivo acesso ao armazenamento.