Partager via


403 Accès refusé - Erreur d’autorisation lorsque le sticky bit est activé dans ADLS Gen2

Cet article vous aide à comprendre le bit collant et fournit des informations sur la façon de vérifier ce paramètre lorsque vous le configurez dans Azure Data Lake Storage (ADLS) Gen2 et d’obtenir des problèmes.

Qu’est-ce que le bit collant dans ADLS Gen2 ?

Les utilisateurs ADLS Gen2 doivent souvent gérer les autorisations pour différents utilisateurs, et une façon de procéder consiste à utiliser une liste de contrôle d’accès (ACL). ACL est un système de contrôle d’accès de type POSIX avec un paramètre spécifique appelé bit sticky qui peut entraîner des échecs d’autorisation. Pour plus d’informations sur le mode de contrôle d’autorisation et le bit sticky, consultez listes de contrôle d’accès (ACL) dans Azure Data Lake Storage Gen2.

Le bit sticky est une fonctionnalité avancée qui n’est pas nécessaire dans le paramètre ACL du compte de stockage ADLS Gen2. Au lieu de cela, vous pouvez utiliser la fonctionnalité de masque pour limiter les autorisations maximales pour les utilisateurs nommés, les groupes nommés et le groupe propriétaire. Cela fonctionne de la même façon que le bit collant et est facilement configuré dans le Portail Azure.

Erreur d’autorisation 403 Accès refusé

Examinez le cas suivant :

  • Un compte de stockage ADLS Gen2 a un conteneur appelé conteneur et un chemin d’accès au dossier appelé dossier/dossier enfant.
  • Vous utilisez la liste de contrôle d’accès en tant que méthode d’autorisation.
  • Dans le paramètre ACL du compte de stockage ADLS Gen2, vous êtes configuré avec l’autorisation Execute (X) sur le répertoire racine et le dossier et avec l’autorisation Write et Execute (WX) sur le dossier enfant.
  • Le bit sticky est activé sur le dossier enfant.
  • Vous essayez de créer ou de charger un fichier, par exemple, test.txt, dans le conteneur du dossier du compte de stockage ADLS Gen2 conteneur/dossier/child-folder/.

Dans ce scénario, vous obtenez une erreur d’autorisation 403 Accès refusé.

Cette erreur se produit pour deux raisons :

  • Vous n’avez pas suffisamment d’autorisations pour accéder au chemin du dossier.
  • Vous disposez d’autorisations suffisantes, mais l’activation du bit sticky vous empêche d’être le propriétaire de ce chemin de dossier.

Identifier si le bit sticky provoque une erreur 403 Access Refusé

Vérifiez le paramètre ACL du dossier et des dossiers parents, puis comparez-le aux scénarios courants liés aux autorisations de liste de contrôle d’accès. Si les autorisations sont suffisantes, l’erreur 403 peut être due au bit sticky.

Vérifier le paramètre de bits sticky à l’aide d’Azure CLI

Il existe de nombreuses façons de vérifier ce paramètre, comme un appel d’API REST, une commande PowerShell et Azure CLI. Nous vous recommandons l’option Azure CLI, car elle ne nécessite aucun logiciel supplémentaire à installer, et la commande est facile à comprendre.

Pour vérifier le paramètre de bits sticky à l’aide d’Azure CLI, procédez comme suit :

  1. Connectez-vous au Portail Azure avec votre compte. Assurez-vous que ce compte dispose de l’attribution de rôle Propriétaire des données blob de stockage sur le compte de stockage ADLS Gen2.

  2. Sélectionnez Cloud Shell sur le portail Azure.

    Capture d’écran du bouton Cloud Shell sur le portail Azure.

  3. Utilisez la commande suivante pour obtenir la liste de contrôle d’accès et le paramètre de bits sticky du répertoire conteneur/dossier :

    az storage fs access show -p folder -f container --account-name account --auth-mode login
    

    Pour vérifier la liste de contrôle d’accès et le paramètre de bits sticky du répertoire racine, qui est la liste ACL au niveau du conteneur et le paramètre de bit sticky, utilisez la commande suivante :

    az storage fs access show -p / -f container --account-name account --auth-mode login
    

    Voici un exemple de sortie :

    Capture d’écran de l’exemple de sortie de commande.

    Dans le corps JSON de la réponse, concentrez-vous sur permissions. Il contient normalement 9 ou 10 bits avec un symbole supplémentaire « + ». Pour plus d’informations sur ces lettres, consultez Utilisateurs et identités.

    L’exemple précédent indique que toutes les autorisations utilisateur sont activées et que le bit sticky est activé. Pour plus d’informations sur la lecture de cette notation d’autorisation, consultez Notation des autorisations Unix traditionnelles.

    La neuvième lettre comporte quatre valeurs possibles : « - », « x », « t » et « T ». Si la valeur de cette lettre est « t » ou « T », cela signifie que le bit collant est activé. Le « t » est « x » avec le bit sticky activé, et « T » est « - » avec le bit sticky activé.

    « rwxrwxrwt » peut être expliqué par les éléments suivants :

    • les autorisations r,w et x sont activées pour le propriétaire.
    • les autorisations r,w et x sont activées pour le groupe Propriétaire.
    • Les autorisations r,w et x sont activées pour d’autres utilisateurs, et le bit sticky est activé.

    Pour mieux comprendre, voici un autre exemple pour « rwxr-xr-T » :

    • les autorisations r,w et x sont activées pour le propriétaire.
    • les autorisations r et x sont activées pour le groupe Propriétaire.
    • Seule l’autorisation r est activée pour d’autres utilisateurs, et le bit sticky est activé.

    Selon les formulaires courts pour les autorisations, l’autorisation de formulaire court est calculée pour chaque groupe de trois lettres (« r » comme 4, « w » comme 2 et « x « as 1). Ainsi, « rw-rwx--x » est égal à 4+2+0, 4+2+1, 0+0+1, 671. En fonction de cette règle de calcul, vous devez uniquement ajouter la quatrième lettre au début. Si le bit collant est activé, définissez-le sur 1. Si le bit collant est désactivé, définissez-le sur 0.

    Voici quelques exemples :

    • rwxrwxrwt => 1777
    • rwxr-xr-T => 1754
    • rw-rwx--x => 0671

Désactiver/activer le paramètre de bit sticky

Pour désactiver/activer le paramètre de bits sticky, définissez les autorisations sur les valeurs attendues.

Le compte Azure utilisé pour modifier ce paramètre doit avoir le rôle Propriétaire des données blob de stockage sur le compte de stockage ADLS Gen2 cible. Il existe de nombreuses façons de modifier le paramètre de bit sticky. Voici les kits SDK pris en charge :

Kit SDK Version prise en charge Plus d’informations
API REST Versions d’API 2019-12-12 et ultérieures Chemin d’accès
Module az PowerShell 5.6.0 et versions ultérieures Utiliser PowerShell pour gérer les listes de contrôle d’accès dans Azure Data Lake Storage Gen2
Azure CLI 2.38.0 et versions ultérieures Utiliser Azure CLI pour gérer les listes de contrôle d’accès dans Azure Data Lake Storage Gen2
Kit de développement logiciel (SDK) .NET 12.14.0 et versions ultérieures Utiliser .NET pour gérer les listes de contrôle d’accès dans Azure Data Lake Storage Gen2
Kit SDK Java 12.11.0 et versions ultérieures Utiliser Java pour gérer les listes de contrôle d’accès dans Azure Data Lake Storage Gen2
Kit de développement logiciel (SDK) Python 12.8.0 et versions ultérieures Utiliser Python pour gérer les listes de contrôle d’accès dans Azure Data Lake Storage Gen2
Kit de développement logiciel (SDK) JavaScript 12.11.0-beta.1 et versions ultérieures Utiliser le Kit de développement logiciel (SDK) JavaScript dans Node.js pour gérer les listes de contrôle d’accès dans Azure Data Lake Storage Gen2
HDFS CLI 3.3.3 et versions ultérieures Utilisation de l’interface CLI HDFS avec Data Lake Storage Gen2 et Apache Hadoop 3.3.3 – Guide des autorisations HDFS

Voici un exemple de désactivation/activation du paramètre de bits sticky avec Azure CLI.

  1. Connectez-vous au Portail Azure avec votre compte disposant de l’attribution de rôle Propriétaire des données blob de stockage sur le compte de stockage ADLS Gen2 cible.

  2. Sélectionnez Cloud Shell sur le portail Azure.

    Capture d’écran du bouton Cloud Shell sur le portail Azure.

  3. Pour définir la liste de contrôle d’accès et le paramètre de bits sticky du répertoire conteneur/dossier sur les autorisations « rwxrwxrwt » et activer le bit sticky, utilisez la commande suivante :

    az storage fs access set --permissions rwxrwxrwt -p folder -f container --account-name account --auth-mode login
    

    Pour modifier le paramètre du répertoire racine, qui est la liste ACL au niveau du conteneur et le paramètre de bits sticky, utilisez la commande suivante :

    az storage fs access set --permissions rwxrwxrwt -p / -f container --account-name account --auth-mode login
    

    Dans {permission notation} la commande précédente, les notations longues et courtes peuvent être acceptées. Cela signifie que la commande suivante est également qualifiée :

    az storage fs access set --permissions 1776 -p folder -f container --account-name account --auth-mode login
    

    Voici un exemple de sortie :

    Capture d’écran de l’exemple de sortie de commande.

Contactez-nous pour obtenir de l’aide

Pour toute demande ou assistance, créez une demande de support ou posez une question au support de la communauté Azure. Vous pouvez également soumettre des commentaires sur les produits à la communauté de commentaires Azure.