Utiliser des stratégies d’accès stockées pour déléguer l’accès au Stockage Azure

Effectué

Une signature d’accès partagé (SAS, shared access signature) offre un moyen sécurisé d’accorder l’accès aux clients sans avoir à partager vos informations d’identification Azure. Cette simplicité d’utilisation s’accompagne d’un inconvénient. En effet, toute personne ayant la bonne signature d’accès partagé peut accéder au fichier tant que cette signature est valide. Le seul moyen de révoquer l’accès au stockage est alors de regénérer des clés d’accès. La regénération vous oblige à mettre à jour toutes les applications qui utilisent l’ancienne clé partagée afin d’utiliser la nouvelle clé. Une autre option consiste à associer les signatures d’accès partagé à une stratégie d’accès stockée.

Une fois la fonctionnalité SAS ajoutée à votre application, vous vous rendez compte qu’il est contraignant de créer une signature d’accès partagé pour chaque image, avec ses propres contrôles d’accès et d’expiration. Vous voulez alors améliorer votre application afin qu’elle utilise une stratégie d’accès stockée sur le conteneur de stockage. Après avoir implémenté la stratégie, vous voulez vérifier que vous pouvez changer les paramètres d’expiration et répercuter les modifications sur l’ensemble des jetons SAS créés.

Dans cette unité, vous allez découvrir comment :

  • Utilisez une stratégie d’accès stockée.
  • Utilisez l’API Stockage C# pour créer des jetons SAS associés à votre nouvelle stratégie d’accès.
  • Vérifiez que les jetons SAS peuvent tous être changés en mettant à jour la stratégie d’accès stockée dans le portail Azure.

Que sont les stratégies d’accès stockées ?

Vous pouvez créer une stratégie d’accès stockée dans quatre types de ressources de stockage :

  • Conteneurs d’objets blob
  • Partages de fichiers
  • Files d’attente
  • Tables

La stratégie d’accès stockée que vous créez pour un conteneur d’objets blob peut s’appliquer à tous les objets blob qu’il contient en plus du conteneur lui-même. Une stratégie d’accès stockée est créée avec les propriétés suivantes :

  • Identificateur : nom que vous utilisez pour référencer la stratégie d’accès stockée.
  • Heure de début : Valeur DateTimeOffset pour la date et l’heure auxquelles la stratégie peut commencer à être utilisée. Cette valeur peut être null.
  • Heure d’expiration : Valeur DateTimeOffset pour la date et l’heure auxquelles la stratégie expire. Passé ce délai, les demandes au stockage échoueront avec un message de code d’erreur 403.
  • Autorisations : liste d’autorisations sous la forme d’une chaîne pouvant inclure tout ou partie des autorisations acdlrw.

Capture d’écran du portail Azure montrant une stratégie d’accès stockée.

Créer des stratégies d'accès stockées

Vous pouvez créer une stratégie d’accès stockée avec du code C# en utilisant le portail Azure ou les commandes Azure CLI.

Avec le code C# .NET

BlobSignedIdentifier identifier = new BlobSignedIdentifier
{
    Id = "stored access policy identifier",
    AccessPolicy = new BlobAccessPolicy
    {
        ExpiresOn = DateTimeOffset.UtcNow.AddHours(1),
        Permissions = "rw"
    }
};

blobContainer.SetAccessPolicy(permissions: new BlobSignedIdentifier[] { identifier });

Avec le portail

Dans le portail, accédez au compte de stockage, puis au conteneur de stockage des objets blob. Sur la gauche, sélectionnez Stratégie d’accès. Pour ajouter une nouvelle stratégie d’accès stockée, sélectionnez + Ajouter une stratégie.

Vous pouvez ensuite entrer tous les paramètres obligatoires.

Capture d’écran des options permettant d’ajouter une stratégie d’accès.

Avec les commandes Azure CLI

az storage container policy create \
    --name <stored access policy identifier> \
    --container-name <container name> \
    --start <start time UTC datetime> \
    --expiry <expiry time UTC datetime> \
    --permissions <(a)dd, (c)reate, (d)elete, (l)ist, (r)ead, or (w)rite> \
    --account-key <storage account key> \
    --account-name <storage account name> \

Créer des jetons SAS et les associer à des stratégies d’accès stockées

Associons la stratégie d’accès stockée que vous avez créée à tous les nouveaux jetons SAS dont vous avez besoin. Pour l’application web des images de diagnostic de patients de votre entreprise, mettez à jour le code existant pour ajouter le code précédent. Ensuite, dans la méthode qui crée le jeton SAS, vous référencez la nouvelle stratégie d’accès stockée.

Tout le code existant nécessaire à la création du jeton SAS est le suivant :

BlobSasBuilder sas = new BlobSasBuilder
{
    BlobContainerName = blob.BlobContainerName,
    BlobName = blob.Name,
    Resource = "b",
    ExpiresOn = DateTimeOffset.UtcNow.AddMinutes(1)
};
// Allow read access
sas.SetPermissions(BlobSasPermissions.Read);

Et il peut être remplacé par une référence à votre nouvelle stratégie d’accès.

// Create a user SAS that only allows reading for a minute
BlobSasBuilder sas = new BlobSasBuilder
{
    Identifier = "stored access policy identifier"
};

Vous pouvez avoir jusqu’à cinq stratégies d’accès stockées pour un seul conteneur d’objets blob.