Créer une SAP de délégation d’utilisateur pour un conteneur ou un objet blob avec l’interface Azure CLI

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 des informations d’identification Microsoft Entra pour créer une signature d’accès partagé de délégation d’utilisateur pour un conteneur ou un objet blob avec Azure CLI.

À propos de la SAS de délégation d’utilisateur

Un jeton SAS pour l'accès à un conteneur ou à un blob peut être sécurisé à l'aide d'informations d'identification Microsoft Entra ou d'une clé de compte. Un SAS sécurisé avec les informations d'identification Microsoft Entra est appelé SAS de délégation d'utilisateur, car le jeton OAuth 2.0 utilisé pour signer le SAS est demandé au nom de l'utilisateur.

Microsoft vous recommande d'utiliser les informations d'identification Microsoft Entra lorsque cela est possible en tant que meilleure pratique de sécurité, plutôt que d'utiliser la clé de compte, qui peut être plus facilement compromise. Lorsque la conception de votre application nécessite des signatures d'accès partagé, utilisez les informations d'identification Microsoft Entra pour créer une SAS de délégation d'utilisateurs pour une sécurité supérieure. Pour plus d’informations sur la SAP de délégation d’utilisateur, consultez Créer une SAP de délégation d’utilisateur.

Attention

Tout client disposant d’une SAP valide peut accéder aux données de votre compte de stockage tel qu’autorisé par cette SAP. Il est important de protéger une SAP contre toute utilisation malveillante ou involontaire. Faites preuve de discrétion lors de la distribution d’une SAP et mettez en place un plan de révocation d’une SAS compromis.

Pour plus d’informations sur les signatures d’accès partagé, consultez Accorder un accès limité aux ressources du Stockage Azure à l’aide des signatures d’accès partagé (SAP).

Installez la dernière version de l’interface de ligne de commande Azure

Pour utiliser Azure CLI afin de sécuriser une SAS avec des informations d’identification Microsoft Entra, commencez par vérifier que vous avez installé la dernière version d’Azure CLI. Pour plus d'informations sur l'installation de l’interface de ligne de commande Azure, consultez Installer l’interface de ligne de commande Azure.

Pour créer une SAP de délégation d’utilisateur à l’aide d’Azure CLI, assurez-vous d’avoir installé la version 2.0.78 ou ultérieure. Utilisez la commande az --version pour vérifier la version installée.

Se connecter avec des informations d’identification Microsoft Entra

Connectez-vous à Azure CLI avec vos informations d’identification Microsoft Entra. Pour plus d’informations, consultez Se connecter avec Azure CLI.

Attribuer des autorisations avec le contrôle d’accès en fonction du rôle (RBAC) Azure

Pour créer une SAS de délégation d’utilisateur depuis Azure PowerShell, le compte Microsoft Entra utilisé pour se connecter à Azure CLI doit se voir attribuer un rôle incluant l’action Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey. Cette autorisation permet au compte Microsoft Entra de demander la clé de délégation d’utilisateur. La clé de délégation d’utilisateur est utilisée pour signer les SAP de délégation d’utilisateur. Le rôle qui fournit l’action Microsoft. Storage/storageAccounts/blobServices/generateUserDelegationKey doit être attribué au niveau du compte de stockage, du groupe de ressources ou de l’abonnement.

Si vous ne disposez pas des autorisations suffisantes pour attribuer des rôles Azure au principal de sécurité Microsoft Entra, il peut être nécessaire de demander au propriétaire ou à l’administrateur du compte d’attribuer les autorisations appropriées.

L’exemple suivant attribue le rôle de Contributeur de données d’objet blob de stockage, qui inclut l’action Microsoft. Storage/storageAccounts/blobServices/generateUserDelegationKey. Le rôle est étendu au niveau du compte de stockage.

N’oubliez pas de remplacer les valeurs d’espace réservé entre crochets par vos propres valeurs :

az role assignment create \
    --role "Storage Blob Data Contributor" \
    --assignee <email> \
    --scope "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Storage/storageAccounts/<storage-account>"

Pour plus d’informations sur les rôles intégrés qui incluent l’action Microsoft. Storage/storageAccounts/blobServices/generateUserDelegationKey, consultez Rôles intégrés Azure.

Utiliser des informations d’identification Microsoft Entra pour sécuriser une SAS

Lorsque vous créez une SAP de délégation d’utilisateur avec l’interface de ligne de commande Azure, la clé de délégation d’utilisateur utilisée pour signer la SAP est créée de manière implicite. L’heure de début et l’heure d’expiration que vous spécifiez pour la SAP sont également utilisées comme heure de début et heure d’expiration pour la clé de délégation d’utilisateur.

Étant donné que la clé de délégation d’utilisateur est valide au maximum pendant 7 jours à partir de la date de début, vous devez spécifier pour la SAP un délai d’expiration se situant dans les 7 jours après l’heure de début. La SAP n’est pas valide après l’expiration de la clé de délégation d’utilisateur. Par conséquent, une SAP dont le délai d’expiration est supérieur à 7 jours ne sera toujours valide que pendant 7 jours.

Lors de la création d’une SAP de délégation d’utilisateur, --auth-mode login et --as-user parameters sont requis. Spécifiez une connexion pour le paramètre --auth-mode, pour que les demandes effectuées auprès de Stockage Azure soient autorisées avec vos informations d’identification Microsoft Entra. Spécifiez le paramètre --as-user pour indiquer que la SAP doit être une SAP de délégation d’utilisateur.

Créer une SAP de délégation d’utilisateur pour un conteneur

Si vous souhaitez créer une SAP de délégation utilisateur pour un conteneur avec Azure CLI, appelez la commande az storage container generate-sas.

Les autorisations prises en charge pour une SAP sur un conteneur incluent Ajouter, Créer, Supprimer, Répertorier, Lire et Écrire. Les autorisations peuvent être spécifiées séparément ou combinées. Pour plus d’informations sur ces permissions, consultez Créer une SAP de délégation d’utilisateur.

L’exemple suivant retourne un jeton SAS de délégation d’utilisateur pour un conteneur. N’oubliez pas de remplacer les valeurs d’espace réservé entre crochets par vos propres valeurs :

az storage container generate-sas \
    --account-name <storage-account> \
    --name <container> \
    --permissions acdlrw \
    --expiry <date-time> \
    --auth-mode login \
    --as-user

Le jeton SAS de délégation d’utilisateur retourné sera semblable à ce qui suit :

se=2019-07-27&sp=r&sv=2018-11-09&sr=c&skoid=<skoid>&sktid=<sktid>&skt=2019-07-26T18%3A01%3A22Z&ske=2019-07-27T00%3A00%3A00Z&sks=b&skv=2018-11-09&sig=<signature>

Notes

Le jeton SAP retourné par Stockage Blob n’inclut pas le caractère délimiteur (« ? ») pour la chaîne de requête d’URL. Si vous ajoutez le jeton SAP à une URL de ressource, n’oubliez pas d’ajouter également le caractère délimiteur.

Créer une SAP de délégation d’utilisateur pour un objet blob

Si vous souhaitez créer une SAP de délégation utilisateur pour un objet blob avec Azure CLI, appelez la commande az storage blob generate-sas.

Les autorisations prises en charge pour une SAP sur un objet blob incluent Ajouter, Créer, Supprimer, Lire et Écrire. Les autorisations peuvent être spécifiées séparément ou combinées. Pour plus d’informations sur ces permissions, consultez Créer une SAP de délégation d’utilisateur.

La syntaxe suivante retourne une SAP de délégation d’utilisateur pour un objet blob. L’exemple spécifie le paramètre --full-uri, qui retourne l’URI de l’objet blob auquel le jeton SAS est ajouté. N’oubliez pas de remplacer les valeurs d’espace réservé entre crochets par vos propres valeurs :

az storage blob generate-sas \
    --account-name <storage-account> \
    --container-name <container> \
    --name <blob> \
    --permissions acdrw \
    --expiry <date-time> \
    --auth-mode login \
    --as-user \
    --full-uri

L’URI de SAP de délégation d’utilisateur retournée sera semblable à ce qui suit :

https://storagesamples.blob.core.windows.net/sample-container/blob1.txt?se=2019-08-03&sp=rw&sv=2018-11-09&sr=b&skoid=<skoid>&sktid=<sktid>&skt=2019-08-02T2
2%3A32%3A01Z&ske=2019-08-03T00%3A00%3A00Z&sks=b&skv=2018-11-09&sig=<signature>

Notes

Le jeton SAP retourné par Azure CLI n’inclut pas le caractère délimiteur (« ? ») pour la chaîne de requête d’URL. Si vous ajoutez le jeton SAP à une URL de ressource, n’oubliez pas d’ajouter le caractère délimiteur à l’URL de ressource avant d’ajouter le jeton SAP.

Une SAP de délégation d’utilisateur ne prend pas en charge la définition d’autorisations avec une stratégie d’accès stockée.

Révoquer une SAP de délégation d’utilisateur

Pour révoquer une SAP de délégation utilisateur dans Azure CLI, appelez la commande az storage account revoke-delegation-keys. Cette commande révoque toutes les clés de délégation d’utilisateur associées au compte de stockage spécifié. Toutes les signatures d’accès partagé associées à ces clés sont invalidées.

N’oubliez pas de remplacer les valeurs d’espace réservé entre crochets par vos propres valeurs :

az storage account revoke-delegation-keys \
    --name <storage-account> \
    --resource-group <resource-group>

Important

Les attributions de rôles Azure et de clés de délégation utilisateur sont mises en cache par le stockage Azure. Il peut donc y avoir un certain délai entre le moment où vous lancez le processus de révocation et celui où la SAP de délégation utilisateur devient non valide.

Étapes suivantes