SET ROLE dans la SQL Console de ClickHouse Cloud, le rôle peut sembler changer pour une requête, puis revenir à son état précédent lors de la requête suivante. Utilisez un rôle SQL Console propre à chaque utilisateur lorsque les autorisations doivent persister d’une requête et d’une session à l’autre.
Symptômes
- Après avoir exécuté
SET ROLE sql_console_developer, les requêtes ultérieures s’exécutent toujours avecsql_console_read_only. - Les résultats de
currentRoles,enabledRolesetdefaultRolesvarient d’une requête à l’autre. - L’exécution de
SET ROLEavec une autre requête ne conserve pas systématiquement le rôle sélectionné. SHOW GRANTSrépertorie les rôles attendus, mais leurs autorisations ne sont pas actives.
Pourquoi ce comportement se produit
SET ROLE modifie les rôles activés pour la session en cours. Il ne conserve pas cet état de session pour les requêtes ultérieures de la SQL Console. Une requête ultérieure peut donc s’exécuter sans le rôle activé par une requête précédente.
Pour cette raison, n’utilisez pas SET ROLE comme mécanisme persistant de contrôle d’accès dans la SQL Console.
Fonctionnement des rôles utilisateur de SQL Console
Configurer des autorisations persistantes
sql_console_admin ou tout autre utilisateur disposant du privilège ACCESS MANAGEMENT.
1
Créer le rôle personnalisé
L’exemple suivant crée un rôle personnalisé
sql_console_developer et lui accorde des autorisations sur my_database :sql_console_developer est un rôle fourni à titre d’exemple, et non un rôle ClickHouse Cloud intégré. Vous pouvez utiliser à la place un rôle personnalisé existant disposant des autorisations dont l’utilisateur a besoin.2
Créer le rôle SQL Console propre à l’utilisateur
Créez un rôle dont le nom contient l’adresse e-mail exacte de l’utilisateur :Les accents graves sont requis, car le nom du rôle contient des caractères spéciaux.
3
Accorder le rôle personnalisé
Accordez le rôle souhaité au rôle SQL Console propre à l’utilisateur :Vous pouvez accorder plusieurs rôles si nécessaire :
4
Démarrer une nouvelle session SQL Console
Demandez à l’utilisateur de se déconnecter, puis de se reconnecter à SQL Console, ou d’actualiser l’onglet du navigateur. Dans la nouvelle session, ClickHouse Cloud applique Les résultats doivent inclure les autorisations accordées via
sql-console-role:user@example.com à sql-console:user@example.com ; aucune instruction SET ROLE n’est requise.Vérifiez les rôles actifs :sql-console-role:user@example.com.Évitez de modifier les rôles gérés
sql_console_admin ni sql_console_read_only afin d’accorder des autorisations personnalisées. ClickHouse Cloud gère ces rôles intégrés. Utilisez plutôt sql-console-role:<email> pour définir des autorisations par utilisateur.
Pour des exemples généraux de gestion des rôles, consultez Requêtes courantes de gestion des accès.