Criar uma conta SAS com .NET
Uma assinatura de acesso compartilhado (SAS) permite que você conceda acesso limitado a contêineres e blobs em sua conta de armazenamento. Ao criar uma SAS, você especifica suas restrições, incluindo quais recursos do Armazenamento do Azure um cliente tem permissão para acessar, quais permissões eles têm nesses recursos e por quanto tempo a SAS é válida.
Cada SAS é assinado com uma chave. Você pode assinar uma SAS de duas maneiras:
- Com uma chave criada usando credenciais do Microsoft Entra. Uma SAS assinada com credenciais do Microsoft Entra é uma SAS de delegação de usuário. Um cliente que cria uma SAS de delegação de usuário deve receber 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 a 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. O cliente que cria uma SAS de serviço deve ter acesso direto à chave da conta ou receber a permissão Microsoft.Storage/storageAccounts/listkeys/action . Para saber mais, consulte Criar uma SAS de serviço ou Criar uma SAS de conta.
Nota
Uma SAS de delegação de usuário oferece segurança superior a uma SAS assinada com a chave da conta de armazenamento. A Microsoft recomenda o uso de uma SAS de delegação de usuário quando possível. Para obter mais informações, consulte Conceder acesso limitado a dados com assinaturas de acesso compartilhado (SAS).
Este artigo mostra como usar a chave da conta de armazenamento para criar uma conta SAS com a biblioteca de cliente do Armazenamento do Azure para .NET.
Sobre a conta SAS
Uma conta SAS é 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 uma SAS específica do serviço, como Obter Propriedades do Serviço de Blob, Definir Propriedades do Serviço de Blob e Obter Estatísticas do Serviço de Blob.
- Delegue acesso a mais de um serviço em uma conta de armazenamento de cada vez. Por exemplo, você pode delegar 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 para uma SAS de conta.
Create an account SAS (Criar uma SAS de conta)
Uma conta SAS é assinada com a chave de acesso da conta. Você pode 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 SAS da 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 conta SAS de um cliente
Para usar a conta SAS para acessar APIs de nível de serviço para o serviço Blob, crie um objeto BlobServiceClient usando a conta SAS e o ponto de extremidade de Armazenamento de Blob 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 conta SAS usando a biblioteca de cliente do Armazenamento de Blobs do Azure para .NET, consulte os recursos a seguir.
Recursos da biblioteca do cliente
Consulte também
- Conceder acesso limitado aos recursos do Armazenamento do Azure com assinaturas de acesso partilhado (SAS)
- Create an account SAS (Criar uma SAS de conta)
- Para exemplos de código relacionados usando SDKs do .NET versão 11.x preteridos, consulte Exemplos de código usando o .NET versão 11.x.