Créer une SAP de compte avec .NET

Une signature d’accès partagé (SAP) vous permet d’accorder un accès limité aux conteneurs et aux objets blob de votre compte de stockage. Lorsque vous créez une SAP, vous spécifiez ses contraintes, notamment les ressources de Stockage Azure auxquelles un client est autorisé à accéder, les autorisations dont ils disposent sur ces ressources et la durée de validité de la SAP.

Chaque SAP est signée avec une clé. Vous pouvez signer une SAP grâce à l’une des deux méthodes suivantes :

  • Avec une clé créée en utilisant les informations d’identification Microsoft Entra. Une SAS signée avec des informations d’identification Microsoft Entra est une SAS de délégation d’utilisateur. Un client qui crée une signature d’accès partagé de délégation d’utilisateur doit avoir un rôle RBAC Azure qui inclut l’action Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey. Pour en savoir plus, consultez Créer une SAS de délégation d'utilisateur.
  • Avec la clé du compte de stockage. Une SAP de service et une SAP de compte sont signées avec la clé du compte de stockage. Le client qui crée une signature d’accès partagé de service doit avoir un accès direct à la clé de compte ou une autorisation Microsoft.Storage/storageAccounts/listkeys/action. Pour plus d’informations, consultez Créer une SAS de service ou Créer une SAS de compte.

Notes

Une SAP de délégation d’utilisateur offre une meilleure sécurité à une SAP signée avec la clé de compte de stockage. Microsoft recommande d’utiliser une SAP de délégation d’utilisateur dans la mesure du possible. Pour plus d’informations, consultez Accorder un accès limité aux données avec des signatures d’accès partagé (SAP).

Cet article explique comment utiliser la clé du compte de stockage pour créer une SAP de compte avec la bibliothèque cliente Stockage Azure pour .NET.

À propos de la SAP de compte

Une SAP de compte est créée au niveau du compte de stockage. En créant une SAP de compte, vous pouvez :

Les stratégies d’accès stockées ne sont pas encore prises en charge pour les SAP de compte.

Créer une SAP de compte

Une SAP de compte est signée avec la clé d’accès du compte. Vous pouvez utiliser la classe StorageSharedKeyCredential pour créer les informations d’identification utilisées pour signer le jeton SAP.

L’exemple de code suivant montre comment créer un objet AccountSasBuilder et appeler la méthode ToSasQueryParameters pour obtenir la chaîne de jeton SAP du compte.

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;
}

Utilisation d’une SAP de compte à partir d’un client

Afin utiliser la SAP de compte pour accéder aux API au niveau du service pour le service BLOB, créez un objet BlobServiceClient à l’aide de la SAP du compte et du point de terminaison de stockage Blob de votre compte de stockage.

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}"));

Ressources

Pour en savoir plus sur la création d’une SAP de compte à l’aide de la bibliothèque cliente Stockage Blob Azure pour .NET, consultez les ressources suivantes.

Ressources de bibliothèque cliente

Voir aussi