Gerar Tokens SAS do Azure com PowerShell e Portal

Existem várias maneiras diferentes de delegar acesso a recursos no Azure. Uma forma é através de um token de Assinatura de Acesso Compartilhado (SAS). Um token SAS é uma forma de controlar granularmente como um cliente pode acessar dados do Azure. Você pode controlar muitas coisas, como quais recursos o cliente pode acessar, quais permissões o cliente possui, por quanto tempo o token é válido e muito mais.

Um uso comum de token SAS é proteger contas de armazenamento do Azure através do uso de um SAS de conta.

Neste artigo, você aprenderá como criar um token SAS do Azure tanto através do portal do Azure quanto via PowerShell. Quando terminar, você terá um token SAS para passar para vários comandos de cliente para autenticar e autorizar o gerenciamento de armazenamento do Azure.

Pré-requisitos

Você aprenderá na prática como realizar algumas tarefas diferentes neste artigo. Se você quiser acompanhar, certifique-se de atender aos seguintes pré-requisitos.

  • Uma assinatura do Azure. Se você ainda não tiver, você pode solicitar uma assinatura de avaliação.
  • Uma Conta de Armazenamento do Azure. Consulte Criar uma conta de armazenamento para saber mais.
  • O módulo Az PowerShell (opcional). Isso é necessário apenas se você for gerar tokens de Assinatura de Acesso Compartilhado usando o PowerShell
  • Windows PowerShell 5.1 ou PowerShell Core 6+ se estiver gerando um token SAS via PowerShell

Gerando um Token SAS usando o Portal do Azure

A maneira mais direta de gerar um token SAS é usando o Portal do Azure. Ao utilizar o portal do Azure, você pode navegar pelas várias opções graficamente.

Para criar um token via portal do Azure, primeiro, navegue até a conta de armazenamento à qual você gostaria de acessar na seção de Configurações e clique em Assinatura de acesso compartilhado. Você pode ver um exemplo de como isso pode parecer abaixo.

Há muitas permissões que você pode conceder aos tokens SAS e horários de início/fim. Para este artigo, você vai atribuir permissões completas e deixar o tempo de expiração padrão de oito horas. Se você gostaria de uma explicação detalhada de cada permissão, confira a documentação da Microsoft.

Deixe todas as caixas de seleção padrão e clique no botão Gerar SAS e string de conexão conforme mostrado abaixo.

Generating SAS Token from the Azure Portal

Assim que o token for gerado, você verá ele listado nas caixas abaixo do botão Gerar SAS e string de conexão conforme mostrado abaixo.

Copying the generated SAS token

Neste ponto, você pode copiar o token SAS e colar seu valor onde precisar usá-lo.

Gerando um Token SAS usando PowerShell

Para evitar ter que fazer login no portal do Azure ou, talvez, se estiver gerando tokens SAS para muitas contas de armazenamento de uma vez, você pode usar o PowerShell. O PowerShell usa a API REST do Azure para fazer chamadas ao Azure e gerar o token.

Para criar um token SAS via PowerShell, primeiro, abra um console do PowerShell e autentique-se com Connect-AzAccount. Uma vez autenticado, então encontre a conta de armazenamento à qual você gostaria de acessar. Abaixo você pode ver um exemplo de consulta a uma conta de armazenamento chamada demo_account no grupo de recursos demo_rg. Usando o valor de $context, você passará isso para o comando de geração de token.

$context = (Get-AzStorageAccount -ResourceGroupName 'demo_rg' -AccountName 'demo_account').context

Assim que o contexto da conta de armazenamento for encontrado, então crie um token SAS usando o comando New-AzStorageAccountSASToken. O exemplo abaixo mostra a geração de um token SAS concedendo permissão total à conta de armazenamento e a todos os subcomponentes.

New-AzStorageAccountSASToken -Context $context -Service Blob,File,Table,Queue -ResourceType Service,Container,Object -Permission racwdlup

Ao criar tokens SAS via New-AzStorageAccountSASToken, o token será válido por uma hora. Se você deseja estender este tempo, pode usar o parâmetro ExpiryTime.

Limitando Permissões do Token SAS

Um motivo para usar um token SAS é dar acesso a outras partes por um tempo e conjunto de permissões limitados. O exemplo anterior gerou um token SAS com permissões de acesso total. Conceder acesso total nem sempre é o melhor cenário.

O parâmetro Serviço define o acesso a um serviço ou serviços. Por exemplo, use blob para permitir acesso apenas ao serviço de Armazenamento de Blobs do Azure Blob Storage. Outros serviços incluem Arquivo, Tabela, e Fila.

O parâmetro TipoRecurso limita o acesso a tipos específicos de recursos. Usar container como valor, por exemplo, permite acesso apenas aos recursos de contêiner. Outros tipos de recursos válidos Serviço e Objeto.

O parâmetro Permissão permite que você defina as permissões permitidas. Especifique uma ou mais permissões conforme necessário. O valor de rwd é igual a conceder permissões de leitura, escrita e exclusão. Outros valores de permissão válidos são (l)istar, (a)dicionar, (a)tualizar, e (p)rocessar.

Usando o Token SAS

Há muitas maneiras de usar o token SAS gerado. Uma das maneiras mais comuns é usá-lo em um contexto de armazenamento. Um contexto de armazenamento é uma maneira de você “empacotar” credenciais para então passá-las para vários comandos.

A common way to use the SAS token is via PowerShell. Using the New-AzStorageContext command that’s part of the Az PowerShell module. You can see an example below using the SAS token to upload a file to an existing storage container.

$StorageAccountName = 'foo'
 $ContainerName = 'bar'
 Create a storage context
 $sasToken = ''
 $StorageContext = New-AzStorageContext $StorageAccountName -SasToken $sasToken
 Upload a file
 $storageContainer = Get-AzStorageContainer -Name $ContainerName -Context $StorageContext
 $storageContainer | Set-AzStorageBlobContent –File 'C:\file.txt' –Blob 'file.txt'

Resumo

Gerar um token SAS pode ser feito de algumas maneiras diferentes. Neste artigo, você aprendeu algumas das maneiras mais comuns. Uma vez criado, um token SAS pode ser utilizado de diversas formas, mas a decisão sobre como usá-lo fica a seu critério.

Source:
https://adamtheautomator.com/azure-sas-token/