Descobrir assinaturas de acesso compartilhado
Uma SAS (assinatura de acesso compartilhado) é 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 desses parâmetros de consulta, a assinatura, é construído a partir dos parâmetros da SAS e assinado com a chave de conta. Esta assinatura é usada pelo armazenamento do Azure para autorizar o acesso ao recurso de armazenamento.
Tipos de assinaturas de acesso compartilhado
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 do usuário se aplica somente ao armazenamento de blobs.
SAS de serviço: uma SAS de serviço é protegida usando uma chave de conta de armazenamento. Uma SAS de serviço delega acesso a um recurso nos seguintes serviços de Armazenamento do Azure: Armazenamento de Blobs, Armazenamento de Filas, Armazenamento de Tabelas ou Arquivos do Azure.
SAS de conta: uma SAS de conta é protegida com uma chave de conta de armazenamento. Uma SAS de conta delega acesso a recursos em um ou mais dos serviços de armazenamento. Todas as operações disponíveis através de uma SAS de serviço ou de delegação do usuário também estão disponíveis por meio de uma SAS de conta.
Observação
A Microsoft recomenda que você use as credenciais do Microsoft Entra sempre que possível como uma melhor prática de segurança, ao invés 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 Blobs, utilize as credenciais do Microsoft Entra para criar uma SAS de delegação de usuário quando possível para obter uma segurança superior
Como as assinaturas de acesso compartilhado funcionam
Ao usar uma SAS para acessar os dados armazenados no Armazenamento do Azure, você precisa de dois componentes. O primeiro é um URI para o recurso que você deseja acessar. A segunda parte é um token SAS que você criou para autorizar o acesso a esse recurso.
Em um ú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
, você pode separar o URI do token SAS da seguinte maneira:
- 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 token SAS em si é composto por vários componentes.
Componente | Descrição |
---|---|
sp=r |
Controla os direitos de acesso. Os valores podem ser a para adicionar, c para criar, d para excluir, l para listar, r para ler ou w para gravar. Este exemplo é somente 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 termina. Este exemplo permite acesso por oito horas. |
sv=2019-02-02 |
A versão da API de armazenamento a ser usada. |
sr=b |
O tipo de armazenamento que está sendo acessado. Neste exemplo, b é para blob. |
sig=SrW1HZ5Nb6MbRzTbXCaPm%2BJiSEn15tC91Y4umMPwVZs%3D |
A assinatura criptográfica. |
Melhores práticas
Para reduzir os riscos potenciais de usar uma SAS, a Microsoft fornece algumas diretrizes de melhores práticas:
- Para distribuir com segurança uma SAS e impedir ataques man-in-the-middle, sempre use HTTPS.
- A SAS mais segura é uma SAS de delegação de usuário. Use-a sempre que possível, pois ela elimina a necessidade de armazenar sua chave de conta de armazenamento no código. Você deve usar o Microsoft Entra ID para gerenciar as credenciais. Essa opção pode não ser possível para sua solução.
- Tente definir o tempo de término para o menor valor útil. Se uma chave SAS for comprometida, ela só poderá ser explorada por um curto período.
- Aplique a regra de privilégios mínimos necessários. Permita somente o acesso necessário. Por exemplo, em seu aplicativo, o acesso somente leitura é suficiente.
- Há algumas situações em que uma SAS não é a solução correta. Quando houver um risco inaceitável de usar uma SAS, crie um serviço de nível intermediário para gerenciar os usuários e acesso deles ao armazenamento.