Partager via


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

Cet article vous aide à comprendre le sticky bit et fournit des informations sur la façon de case activée ce paramètre lorsque vous le configurez dans Azure Data Lake Storage (ADLS) Gen2 et obtenez des problèmes.

Quel est 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 le faire est d’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é « sticky bit » qui peut entraîner des échecs d’autorisation. Pour plus d’informations sur le mode de contrôle d’autorisation et le bit collant, consultez Listes de contrôle d’accès (ACL) dans Azure Data Lake Storage Gen2.

Le sticky bit 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.

403 Erreur d’autorisation d’accès refusé

Prenons l’exemple du scénario suivant :

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

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

Cette erreur se produit pour deux raisons :

  • Vous ne disposez pas des autorisations suffisantes pour accéder au chemin d’accès au dossier.
  • Vous disposez d’autorisations suffisantes, mais l’activation du bit collant vous empêche d’être le propriétaire de ce chemin de dossier.

Identifier si le bit collant provoque une erreur 403 Accès refusé

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

Vérifier le paramètre de bit collant à l’aide d’Azure CLI

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

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

  1. Connectez-vous au Portail Azure avec votre compte. Vérifiez que ce compte dispose de l’attribution de rôle Propriétaire des données Blob du 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 bit collant du répertoire conteneur/dossier :

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

    Pour case activée l’ACL et le paramètre de bit collant du répertoire racine, qui est la liste de contrôle d’accès au niveau du conteneur et le paramètre de bits collants, 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 sticky bit est activé. Pour plus d’informations sur la lecture de cette notation d’autorisation, consultez Notation des autorisations Unix traditionnelles.

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

    Pour mieux le 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 les autres utilisateurs et le bit collant est activé.

    Selon 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 » comme 1). Par conséquent, « rw-rwx--x » est égal à 4+2+0, 4+2+1, 0+0+1, 671. Sur la base de cette règle de calcul, il vous suffit d’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 collant

Pour désactiver/activer le paramètre de bit collant, 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 du stockage sur le compte de stockage ADLS Gen2 cible. Il existe de nombreuses façons de modifier le paramètre de bit collant. Voici les Kits de développement logiciel (SDK) pris en charge :

SDK Version prise en charge Informations supplémentaires
API REST 2019-12-12 et versions ultérieures de l’API Chemin
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 .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 de développement logiciel (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 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 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 bit collant avec Azure CLI.

  1. Connectez-vous au Portail Azure avec votre compte disposant de l’attribution du rôle Propriétaire des données Blob du 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 bit collant du répertoire conteneur/dossier sur les autorisations « rwxrwxrwt » et pour activer le sticky bit, 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 de contrôle d’accès au niveau du conteneur et le paramètre de bits collants, 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, le peut accepter des notations de forme longue et courte. 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.