Dépannage des problèmes de contrôle d’accès¶
Si une instruction SQL échoue car le rôle utilisé pour exécuter la requête ne dispose pas des privilèges de contrôle d’accès requis, vous pouvez utiliser la fonction EXPLAIN_PRIVILEGES pour déterminer exactement quels privilèges sont manquants.
Dépannage en tant qu’administrateur¶
Un administrateur qui dispose des privilèges sur tous les objets de Snowflake peut appeler la fonction EXPLAIN_PRIVILEGES sur n’importe quelle instruction SQL.
Astuce
Si vous souhaitez que quelqu’un qui ne dispose pas des privilèges sur les objets puisse diagnostiquer les problèmes de contrôle d’accès à l’aide de EXPLAIN_PRIVILEGES, accordez-lui le privilège RESOLVE ALL ON ACCOUNT.
Exemple : Attribuer tous les privilèges nécessaires à l’exécution d’une requête SQL
Exemple de sortie :
Cette sortie indique que vous avez besoin d’un privilège quelconque sur la base de données MYDB AND du privilège MONITOR sur le schéma MYDB.MYSCHEMA.
Exemple : Répertorier les privilèges manquants pour un rôle spécifique
L’appel suivant détermine si le rôle analyst_role (y compris les privilèges des rôles qui lui sont accordés) possède les privilèges nécessaires pour exécuter l’instruction SELECT et, si ce n’est pas le cas, renvoie les privilèges manquants.
Dépannage de votre propre requête¶
Vous devez disposer d’au moins un privilège sur les objets référencés dans votre requête pour appeler la fonction EXPLAIN_PRIVILEGES. Si ces privilèges sur l’objet ne sont pas suffisants pour exécuter votre requête avec succès, appelez la fonction EXPLAIN_PRIVILEGES avec l’argument missing_only défini sur true pour déterminer les privilèges supplémentaires nécessaires.
Par exemple, si vous disposez des privilèges sur les objets mydb, myschema et mytable, mais que votre requête échoue toujours en raison de problèmes de contrôle d’accès, exécutez la commande suivante :
Si votre rôle actuel ne dispose pas de privilèges, la fonction renvoie les privilèges spécifiques dont vous avez besoin. Par exemple :