Criar uma SAS de conta com .NET
Uma SAS (Assinatura de Acesso Compartilhado) permite conceder acesso limitado a contêineres e blobs da conta de armazenamento. Ao criar uma SAS, você especificará suas restrições, inclusive que recursos do Armazenamento do Azure um cliente terá permissão para acessar, que permissões ele terá nesses recursos e por quanto tempo a SAS é válida.
Cada SAS é assinada com uma chave. Você pode assinar uma SAS de uma das duas maneiras:
- Com uma chave criada utilizando as credenciais do Microsoft Entra. Uma SAS assinada com credenciais do Microsoft Entra é uma SAS de delegação de usuário. É necessário atribuir um cliente que cria uma SAS de delegação de usuário a uma função RBAC do Azure que inclua a ação Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey. Para saber mais, consulte Criar uma SAS de delegação de usuário.
- Com uma chave da conta de armazenamento. Tanto uma SAS de serviço quanto uma SAS de conta são assinadas com a chave da conta de armazenamento. É necessário que o cliente que cria uma SAS de serviço tenha acesso direto à chave da conta ou receba a permissão Microsoft.Storage/storageAccounts/listkeys/action. Para saber mais, consulte Criar uma SAS de serviço ou Criar uma SAS de conta.
Observação
Uma SAS de delegação de usuário oferece mais segurança do que uma SAS que é assinada com a chave da conta de armazenamento. A Microsoft recomenda usar uma SAS de delegação de usuário quando possível. Para saber mais, confira Conceder acesso limitado a dados com assinaturas de acesso compartilhado (SAS).
Este artigo mostra como usar a chave de conta de armazenamento para criar uma Assinatura de Acesso Compartilhado de conta com a biblioteca de clientes do Armazenamento do Microsoft Azure para .NET.
Sobre a conta SAS
Uma conta SAS foi criada no nível da conta de armazenamento. Ao criar uma conta SAS, você pode:
- Delegue acesso a operações de nível de serviço que não estão atualmente disponíveis com um SAS específico de serviço, como Obter Propriedades do Serviço de Blob, Definir as Propriedades do Serviço de Blob e Obter as Estatísticas do Serviço de Blob .
- Delegue o acesso a mais de um serviço em uma conta de armazenamento ao mesmo tempo. Por exemplo, você pode delegar o acesso a recursos no Armazenamento de Blobs do Azure e nos Arquivos do Azure usando uma conta SAS.
As políticas de acesso armazenado não são suportadas em uma conta SAS.
Criar uma SAS de conta
Uma Assinatura de Acesso Compartilhado de conta é assinada com a chave de acesso da conta. É possível usar a classe StorageSharedKeyCredential para criar a credencial usada para assinar a SAS.
O exemplo de código a seguir mostra como criar um novo objeto AccountSasBuilder e chamar o método ToSasQueryParameters para obter a cadeia de caracteres de token da SAS de conta.
public static async Task<string> CreateAccountSAS(StorageSharedKeyCredential sharedKey)
{
// Create a SAS token that's valid for one day
AccountSasBuilder sasBuilder = new AccountSasBuilder()
{
Services = AccountSasServices.Blobs | AccountSasServices.Queues,
ResourceTypes = AccountSasResourceTypes.Service,
ExpiresOn = DateTimeOffset.UtcNow.AddDays(1),
Protocol = SasProtocol.Https
};
sasBuilder.SetPermissions(AccountSasPermissions.Read |
AccountSasPermissions.Write);
// Use the key to get the SAS token
string sasToken = sasBuilder.ToSasQueryParameters(sharedKey).ToString();
return sasToken;
}
Usar uma Assinatura de Acesso Compartilhado de conta de um cliente
Para usar a SAS de conta e acessar as APIs de nível de serviço para o serviço Blob, crie um objeto BlobServiceClient usando a SAS de conta e o ponto de extremidade do Armazenamento de Blobs para sua conta de armazenamento.
string accountName = "<storage-account-name>";
string accountKey = "<storage-account-key>";
StorageSharedKeyCredential storageSharedKeyCredential =
new(accountName, accountKey);
// Create a BlobServiceClient object with the account SAS appended
string blobServiceURI = $"https://{accountName}.blob.core.windows.net";
string sasToken = await CreateAccountSAS(storageSharedKeyCredential);
BlobServiceClient blobServiceClientAccountSAS = new BlobServiceClient(
new Uri($"{blobServiceURI}?{sasToken}"));
Recursos
Para saber mais sobre como criar uma SAS de conta usando a biblioteca de clientes do Armazenamento de Blobs do Azure para .NET, consulte os recursos a seguir.
Recursos da biblioteca de clientes
- Documentação de referência da biblioteca de clientes
- Código-fonte da biblioteca de clientes
- Pacote (NuGet)
Confira também
- Conceder acesso limitado aos recursos de Armazenamento do Azure usando as SAS (assinaturas de acesso compartilhado)
- Criar uma SAS de conta
- Para obter exemplos de código relacionados usando SDKs preteridos do .NET versão 11.x, confira os Exemplos de código usando o .NET versão 11.x.