Utiliser Azure CLI pour gérer les listes de contrôle d’accès dans Azure Data Lake Storage

Cet article vous montre comment utiliser l’Azure CLI pour obtenir, définir et mettre à jour les listes de contrôle d’accès (ACL) des répertoires et fichiers.

Les nouveaux éléments enfants héritent automatiquement des ACL. Mais vous pouvez aussi ajouter, mettre à jour et supprimer des ACL récursivement sur les éléments enfants existants sans effectuer ces changements individuellement pour chaque élément enfant.

Référence | Exemples | Envoyer des commentaires

Prérequis

  • Un abonnement Azure. Pour plus d’informations, consultez Obtenir l’essai gratuit Azure.

  • Un compte de stockage doté d’un espace de noms hiérarchique activé. Pour les instructions, voir Créer un compte de stockage avec un espace de noms hiérarchique.

  • Azure CLI version 2.14.0 ou ultérieure.

  • Une des autorisations de sécurité suivantes :

    • Un principal de sécurité Microsoft Entra ID provisionné auquel est attribué le rôle Propriétaire des données de stockage Blob, dont l’étendue est limitée au conteneur cible, au compte de stockage, au groupe de ressources parent ou à l’abonnement.

    • Utilisateur propriétaire du conteneur ou du répertoire cible auquel vous envisagez d’appliquer les paramètres ACL. Pour définir les ACL de manière récursive, cet utilisateur inclut tous les éléments enfants du conteneur ou du répertoire cible.

Vérifiez que la version correcte d’Azure CLI est installée.

  1. Ouvrez Azure Cloud Shell, ou si vous avez installé l’Azure CLI localement, ouvrez une application de console de commandes telle que Windows PowerShell.

  2. Vérifiez que la version d’Azure CLI que vous avez installée est 2.14.0, ou une version ultérieure, en utilisant la commande suivante.

     az --version
    

    Si votre version d’Azure CLI est inférieure à 2.14.0, installez une version ultérieure. Pour plus d’informations, consultez la rubrique Installation de l’interface de ligne de commande Azure (CLI).

Se connecter au compte

  1. Si vous utilisez Azure CLI localement, exécutez la commande login.

    az login
    

    Si la CLI peut ouvrir votre navigateur par défaut, elle ouvre le navigateur et charge une page de connexion Azure.

    Sinon, ouvrez une page de navigateur à l’adresse https://aka.ms/devicelogin et entrez le code d’autorisation affiché dans votre terminal. Connectez-vous ensuite avec les informations d’identification de votre compte dans le navigateur.

    Pour en savoir plus sur les différentes méthodes d’authentification, consultez Autoriser l’accès à des données d’objet blob ou de file d’attente avec Azure CLI.

  2. Si votre identité est associée à plusieurs abonnements et qu’on ne vous invite pas à sélectionner l’abonnement, configurez votre abonnement actif à celui du compte de stockage sur lequel vous souhaitez opérer. Dans cet exemple, remplacez la valeur d’espace réservé <subscription-id> par l’ID de votre abonnement.

    az account set --subscription <subscription-id>
    

Obtenir les listes de contrôle d’accès

Obtenez l’ACL d’un répertoire à l’aide de la commande az storage fs access show.

Cet exemple obtient l’ACL d’un répertoire, puis imprime l’ACL sur la console.

az storage fs access show -p my-directory -f my-container --account-name mystorageaccount --auth-mode login

Obtenez les autorisations d’accès d’un fichier à l’aide de la commande az storage fs access show.

Cet exemple obtient l’ACL d’un fichier, puis imprime l’ACL sur la console.

az storage fs access show -p my-directory/upload.txt -f my-container --account-name mystorageaccount --auth-mode login

L’image suivante montre le résultat après avoir obtenu l’ACL d’un répertoire.

Capture d’écran de la sortie console montrant l’ACL d’un répertoire dans Azure Data Lake Storage.

Dans cet exemple, l’utilisateur propriétaire dispose d’autorisations de lecture, d’écriture et d’exécution. Le groupe propriétaire dispose uniquement d’autorisations de lecture et d’exécution. Pour plus d’informations sur les listes de contrôle d’accès, consultez Contrôle d’accès dans Azure Data Lake Storage.

Définir les ACL

Lorsque vous définissez une liste de contrôle d’accès (ACL), vous remplacez l’ensemble de l’ACL, y compris toutes ses entrées. Si vous souhaitez modifier le niveau d’autorisation d’un principal de sécurité ou ajouter un nouveau principal de sécurité à la liste de contrôle d’accès sans affecter d’autres entrées existantes, vous devez mettre à jour l’ACL à la place. Pour mettre à jour une liste de contrôle d’accès au lieu de la remplacer, consultez la section Mettre à jour une liste de contrôle d’accès de cet article.

Si vous choisissez de définir la liste de contrôle d’accès, vous devez ajouter une entrée pour l’utilisateur propriétaire, une entrée pour le groupe propriétaire et une entrée pour tous les autres utilisateurs. Pour en savoir plus sur l’utilisateur propriétaire, le groupe propriétaire et tous les autres utilisateurs, consultez Utilisateurs et identités.

Cette section vous montre comment :

  • Définir une ACL
  • Définir des listes de contrôle d’accès de façon récursive

Définir une ACL

Utilisez la commande az storage fs access set pour définir l’ACL d’un répertoire.

Cet exemple définit l’ACL d’un répertoire pour l’utilisateur propriétaire, le groupe propriétaire ou d’autres utilisateurs, puis imprime l’ACL sur la console.

az storage fs access set --acl "user::rw-,group::rw-,other::-wx" -p my-directory -f my-container --account-name mystorageaccount --auth-mode login

Cet exemple définit l’ACL par défaut d’un répertoire pour l’utilisateur propriétaire, le groupe propriétaire ou d’autres utilisateurs, puis imprime l’ACL sur la console.

az storage fs access set --acl "default:user::rw-,group::rw-,other::-wx" -p my-directory -f my-container --account-name mystorageaccount --auth-mode login

Utilisez la commande az storage fs access set pour définir l’ACL d’un fichier.

Cet exemple définit l’ACL d’un fichier pour l’utilisateur propriétaire, le groupe propriétaire ou d’autres utilisateurs, puis imprime l’ACL sur la console.

az storage fs access set --acl "user::rw-,group::rw-,other::-wx" -p my-directory/upload.txt -f my-container --account-name mystorageaccount --auth-mode login

Remarque

Pour définir l’ACL pour un groupe ou un utilisateur spécifique, utilisez leurs identifiants d’objet respectifs. Par exemple, pour définir l’ACL d’un groupe, utilisez group:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx. Pour définir l’ACL d’un utilisateur, utilisez user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.

L’image suivante montre la sortie après la définition de la liste ACL d’un fichier.

Capture d’écran de la sortie console montrant l’ACL d’un fichier après qu’il ait été configuré dans Azure Data Lake Storage.

Dans cet exemple, l’utilisateur propriétaire et le groupe propriétaire disposent uniquement des autorisations de lecture et d’écriture. Tous les autres utilisateurs disposent des autorisations d’écriture et d’exécution. Pour plus d’informations sur les listes de contrôle d’accès, consultez Contrôle d’accès dans Azure Data Lake Storage.

Définir des listes de contrôle d’accès de façon récursive

Définissez des listes de contrôle d’accès de manière récursive à l’aide de la commande az storage fs access set-recursive.

Cet exemple définit la liste ACL d’un répertoire nommé my-parent-directory. Ces entrées donnent à l’utilisateur propriétaire des permissions de lire, écrire et exécuter, accorder au groupe propriétaire uniquement des permissions de lecture et d’exécution, et ne donnent aucun accès à tous les autres. La dernière entrée de la liste de contrôle d’accès dans cet exemple donne à un utilisateur spécifique avec l’ID d’objet « xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx » des autorisations de lecture et d’exécution.

az storage fs access set-recursive --acl "user::rwx,group::r-x,other::---,user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:r-x" -p my-parent-directory/ -f my-container --account-name mystorageaccount --auth-mode login

Remarque

Pour définir une entrée ACL par défaut , ajoutez le préfixe default: à chaque entrée. Par exemple, default:user::rwx ou default:user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:r-x.

Mettre à jour les ACL

Lorsque vous mettez à jour une liste de contrôle d’accès, vous modifiez l’ACL au lieu de la remplacer. Par exemple, vous pouvez ajouter un nouveau principal de sécurité à la liste de contrôle d’accès sans affecter les autres principaux de sécurité listés dans l’ACL. Pour remplacer la liste de contrôle d’accès au lieu de la mettre à jour, consultez la section Mettre à jour une liste de contrôle d’accès de cet article.

Pour mettre à jour une liste de contrôle d’accès, créez un nouvel objet ACL avec l’entrée ACL que vous souhaitez mettre à jour, puis utilisez cet objet dans l’opération de mise à jour ACL. Ne récupérez pas la liste de contrôle d’accès existante, il vous suffit de fournir les entrées ACL à mettre à jour.

Cette section vous montre comment :

  • Mettre à jour une ACL
  • Mettre à jour les listes de contrôle d’accès de manière récursive

Mettre à jour une ACL

Mettez à jour la liste de contrôle d’accès d’un ficher à l’aide de la commande az storage fs access update-recursive. Azure CLI fournit uniquement la update-recursive commande pour les mises à jour. Lorsque vous ciblez un seul fichier, la commande met à jour uniquement l’ACL de ce fichier.

Cet exemple met à jour une entrée ACL avec l’autorisation d’écriture.

az storage fs access update-recursive --acl "user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:rwx" -p my-parent-directory/myfile.txt -f my-container --account-name mystorageaccount --auth-mode login

Pour mettre à jour l’ACL d’un groupe ou d’un utilisateur spécifique, utilisez leurs ID d’objet respectifs. Par exemple, group:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx ou user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.

Remarque

Azure CLI ne supporte pas la mise à jour de l'ACL d'un seul répertoire sans mettre à jour l'ACL des éléments enfants. Pour mettre à jour la liste de contrôle d’accès d’un répertoire sans modifier les listes de contrôle d’accès de tous les éléments enfants de ce répertoire, utilisez les autres outils et kits SDK pris en charge. Voir Comment définir des listes de contrôle d’accès.

Mettre à jour les listes de contrôle d’accès de manière récursive

Mettez à jour des listes de contrôle d’accès de manière récursive à l’aide de la commande az storage fs access update-recursive.

Cet exemple met à jour une entrée ACL avec l’autorisation d’écriture.

az storage fs access update-recursive --acl "user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:rwx" -p my-parent-directory/ -f my-container --account-name mystorageaccount --auth-mode login

Remarque

Pour mettre à jour une entrée ACL par défaut , ajoutez le préfixe default: à chaque entrée. Par exemple, default:user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:r-x.

Supprimer des entrées de liste de contrôle d’accès (ACL) de manière récursive

Vous pouvez supprimer une ou plusieurs entrées de liste de contrôle d’accès (ACL) de manière récursive. Pour supprimer une entrée ACL, créez un nouvel objet ACL pour l’entrée ACL que vous souhaitez supprimer, puis utilisez cet objet dans l’opération de suppression ACL. Ne récupérez pas la liste de contrôle d’accès existante, il vous suffit de fournir les entrées ACL à supprimer.

Supprimez les entrées d’ACL à l’aide de la commande az storage fs access remove-recursive.

Cet exemple supprime une entrée d’ACL du répertoire racine du conteneur.

az storage fs access remove-recursive --acl "user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" -p my-parent-directory/ -f my-container --account-name mystorageaccount --auth-mode login

Remarque

Pour supprimer une entrée ACL par défaut , ajoutez le préfixe default: à chaque entrée. Par exemple, default:user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.

Récupérer suite à des échecs

Vous pouvez rencontrer des erreurs d’exécution ou d’autorisation lors de la modification récursive des listes de contrôle d’accès. Pour les erreurs d’exécution, redémarrez le processus à partir du début. Des erreurs d’autorisation peuvent survenir si le principal de sécurité n’a pas suffisamment d’autorisations pour modifier l’ACL d’un répertoire ou d’un fichier dans la hiérarchie que vous modifiez. Résolvez le problème d’autorisation, puis choisissez de reprendre le processus à partir du point de défaillance à l’aide d’un jeton de continuation ou de redémarrer le processus à partir du début. Vous n’êtes pas obligé d’utiliser le jeton de continuation si vous préférez redémarrer à partir du début. Vous pouvez réappliquer les entrées de liste de contrôle d’accès sans incidence négative.

En cas de défaillance, retournez un jeton de continuation en fixant le --continue-on-failure paramètre à false. Une fois que vous avez corrigé les erreurs, vous pouvez reprendre le processus à partir du point de défaillance en exécutant à nouveau la commande, puis en affectant le paramètre --continuation au jeton de continuation.

az storage fs access set-recursive --acl "user::rw-,group::r-x,other::---" --continue-on-failure false --continuation xxxxxxx -p my-parent-directory/ -f my-container --account-name mystorageaccount --auth-mode login  

Pour vous assurer que le processus se termine sans interruption, définissez le paramètre --continue-on-failure sur true.

az storage fs access set-recursive --acl "user::rw-,group::r-x,other::---" --continue-on-failure true --continuation xxxxxxx -p my-parent-directory/ -f my-container --account-name mystorageaccount --auth-mode login  

Bonnes pratiques

Cette section décrit certaines des meilleures pratiques pour définir des listes de contrôle d’accès (ACL) de manière récursive.

Traitement des erreurs d’exécution

Une erreur d’exécution peut se produire pour de nombreuses raisons (par exemple, une panne ou un problème de connectivité client). Si vous rencontrez une erreur d’exécution, redémarrez le processus ACL récursif. Les listes de contrôle d’accès peuvent être réappliquées à des éléments sans impact négatif.

Traitement des erreurs d’autorisation (403)

Si vous rencontrez une exception de contrôle d’accès lors de l’exécution d’un processus ACL récursif, votre principal de sécurité AD peut ne pas disposer des autorisations suffisantes pour appliquer une liste de contrôle d’accès à un ou plusieurs des éléments enfants dans la hiérarchie de répertoires. Lorsqu’une erreur d’autorisation se produit, le processus s’arrête et un jeton de continuation est fourni. Corrigez le problème d’autorisation, puis utilisez le jeton de continuation pour traiter le jeu de données restant. Les répertoires et les fichiers qui ont déjà été traités correctement n’ont pas besoin d’être retraités. Vous pouvez également choisir de redémarrer le processus ACL récursif. Les listes de contrôle d’accès peuvent être réappliquées à des éléments sans impact négatif.

Titre de compétences

Nous vous recommandons de provisionner un principal de sécurité Microsoft Entra auquel a été attribué le rôle Propriétaire des données Blob de stockage dans l’étendue du compte ou du conteneur de stockage cible.

Performances

Pour réduire la latence, nous vous recommandons d’exécuter le processus ACL récursif dans une machine virtuelle Azure située dans la même région que votre compte de stockage.

Limites des listes de contrôle d’accès (ACL)

Le nombre maximal de listes ACL que vous pouvez appliquer à un répertoire ou à un fichier est de 32 ACL d’accès et de 32 ACL par défaut. Pour plus d’informations, consultez Contrôle d’accès dans Azure Data Lake Storage Gen2.

Voir aussi