Como gerar um SAS token para um blob no Azure com a CLI
Um SAS token (Shared Access Signature) dá acesso temporário a um ficheiro guardado no Azure Storage sem partilhar a chave da conta nem tornar o blob público. Com a Azure CLI consegues gerar um SAS token para um blob em poucos segundos, escolhendo as permissões e a data de expiração. É a maneira mais segura de partilhar um relatório, uma imagem ou um backup por tempo limitado, e a seguir vais aprender a fazê-lo passo a passo.
Pré-requisitos
- Acesso ao Azure Cloud Shell (Bash) no portal — não precisa de instalação — ou a Azure CLI instalada localmente.
- Uma conta de armazenamento (Storage Account) com um contentor e um blob (ficheiro) já carregado.
- A função Storage Blob Data Reader (ou Contributor) atribuída à tua conta, para gerar o SAS sem usar a chave da conta.
Passo 1: Abrir o Cloud Shell e confirmar o blob
No portal do Azure, abre o Cloud Shell e escolhe o ambiente Bash. Uma grande vantagem do Cloud Shell é que já estás autenticado, por isso não precisas de correr az login. Lista os ficheiros do contentor para confirmar o nome exato do blob que queres partilhar:
az storage blob list \
--account-name aminhaconta \
--container-name documentos \
--auth-mode login \
--output tableSe o teu ficheiro aparecer na tabela, estás pronto para continuar. Guarda o nome exato, porque vais precisar dele já a seguir.
Passo 2: Guardar os nomes em variáveis
Para o comando final ficar mais limpo e fácil de reutilizar, guarda o nome da conta, do contentor e do blob em variáveis. Substitui os valores de exemplo pelos teus:
conta="aminhaconta"
contentor="documentos"
blob="relatorio-2026.pdf"Assim, se mais tarde quiseres gerar outro SAS token, só precisas de mudar estes três valores e repetir o comando final.
Passo 3: Definir a data de expiração
Um bom SAS token tem sempre um prazo curto: quanto menor a janela de tempo, menor o risco. Podes indicar uma data fixa no formato ISO 8601 em UTC (por exemplo 2026-07-12T18:00Z) ou calculá-la automaticamente. O comando abaixo cria uma expiração daqui a duas horas e mostra-te o valor:
expiry=$(date -u -d "+2 hours" '+%Y-%m-%dT%H:%MZ')
echo "$expiry"Confirma no ecrã que a data faz sentido antes de avançar. Lembra-te de que uma user delegation SAS pode ter, no máximo, 7 dias de validade.
Passo 4: Gerar o SAS token
Chegámos ao passo principal: gerar o SAS token para o blob. O método recomendado usa a tua identidade do Microsoft Entra através de --auth-mode login --as-user, por isso não expõe a chave da conta:
az storage blob generate-sas \
--account-name "$conta" \
--container-name "$contentor" \
--name "$blob" \
--permissions r \
--expiry "$expiry" \
--auth-mode login \
--as-user \
--full-uri \
--output tsvVale a pena perceber cada opção: --permissions r concede apenas leitura (podias usar w para escrita ou d para apagar); --as-user cria uma user delegation SAS, assinada pela tua identidade e não pela chave da conta; e --full-uri devolve logo o URL completo, já pronto a usar. O resultado aparece no terminal graças a --output tsv.
Verificar o resultado
O comando devolve um endereço parecido com este (aqui encurtado):
https://aminhaconta.blob.core.windows.net/documentos/relatorio-2026.pdf?sv=2024-11-04&se=2026-07-12T18:00Z&sr=b&sp=r&sig=...Abre esse URL numa janela anónima do browser ou testa-o com curl para confirmar que o download funciona:
curl -o teste.pdf "COLA_AQUI_O_URL_COM_SAS"Depois de passar a data de expiração, o mesmo URL deixa de funcionar e devolve um erro de autenticação. Esse comportamento é exatamente o esperado e prova que o acesso é mesmo temporário.
Conclusão
Com um SAS token passas a controlar exatamente quem acede a um ficheiro e durante quanto tempo, sem revelar segredos nem tornar nada público. A partir daqui podes explorar outras permissões, gerar um SAS ao nível do contentor para partilhar vários ficheiros de uma vez, ou automatizar este comando dentro de um script. Qual vai ser o primeiro ficheiro que vais partilhar de forma segura com um SAS token?