Skip to main content
AutogéréSi vous utilisez une instance ClickHouse autogérée, consultez les utilisateurs et rôles SQL.
Cet article présente les bases de la définition des utilisateurs et des rôles SQL, ainsi que de l’application de ces privilèges et autorisations aux bases de données, tables, lignes et colonnes.

Utilisateur admin

Les services ClickHouse Cloud disposent d’un utilisateur admin, default, créé lors de la création du service. Le mot de passe est fourni à ce moment-là et peut être réinitialisé par les utilisateurs de ClickHouse Cloud disposant du rôle Admin. Lorsque vous ajoutez des utilisateurs SQL supplémentaires à votre service ClickHouse Cloud, ils doivent avoir un nom d’utilisateur SQL et un mot de passe. Si vous souhaitez leur accorder des privilèges de niveau administratif, attribuez aux nouveaux utilisateurs le rôle default_role. Par exemple, pour ajouter l’utilisateur clickhouse_admin :
Lorsque vous utilisez la SQL Console, vos instructions SQL ne sont pas exécutées en tant qu’utilisateur default. Elles sont exécutées à la place en tant qu’utilisateur nommé sql-console:${cloud_login_email}, où cloud_login_email correspond à l’adresse e-mail de l’utilisateur qui exécute actuellement la requête.Ces utilisateurs de la SQL Console générés automatiquement disposent du rôle default.

Authentification sans mot de passe

Deux rôles sont disponibles pour la SQL Console : sql_console_admin, avec des autorisations identiques à default_role, et sql_console_read_only, avec des autorisations en lecture seule. Les utilisateurs Admin se voient attribuer par défaut le rôle sql_console_admin, donc rien ne change pour eux. En revanche, le rôle sql_console_read_only permet d’accorder à des utilisateurs non Admin un accès en lecture seule ou un accès complet à n’importe quelle instance. Un administrateur doit configurer cet accès. Les rôles peuvent être ajustés à l’aide des commandes GRANT ou REVOKE afin de mieux répondre aux exigences propres à chaque instance, et toute modification apportée à ces rôles sera conservée.

Contrôle d’accès granulaire

Cette fonctionnalité de contrôle d’accès peut également être configurée manuellement avec une granularité par utilisateur. Avant d’attribuer les nouveaux rôles sql_console_* aux utilisateurs, il convient de créer des rôles de base de données propres aux utilisateurs de la SQL Console, correspondant à l’espace de noms sql-console-role:<email>. Par exemple :
Lorsqu’un rôle correspondant est détecté, il est attribué à l’utilisateur à la place des rôles prédéfinis. Cela permet de mettre en place des configurations de contrôle d’accès plus complexes, par exemple en créant des rôles tels que sql_console_sa_role et sql_console_pm_role, puis en les attribuant à des utilisateurs spécifiques. Par exemple :

Tester les privilèges d’administrateur

Déconnectez-vous de la session de l’utilisateur default, puis reconnectez-vous en tant qu’utilisateur clickhouse_admin. Toutes les opérations suivantes devraient réussir :

Utilisateurs non administrateurs

Les utilisateurs doivent disposer des privilèges nécessaires, et tous ne doivent pas être administrateurs. La suite de ce document présente des scénarios d’exemple ainsi que les rôles requis.

Préparation

Créez ces tables et ces utilisateurs pour les exemples.

Création d’une base de données, d’une table et de lignes d’exemple

1

Créer une base de données de test

2

Créer une table

3

Remplir la table avec des lignes d’exemple

4

Vérifier la table

Requête
Réponse
5

Créer column_user

Créez un utilisateur standard qui servira à illustrer la restriction de l’accès à certaines colonnes :
6

Créer row_user

Créez un utilisateur standard qui servira à illustrer la restriction de l’accès aux lignes ayant certaines valeurs :

Création de rôles

Avec cet ensemble d’exemples :
  • des rôles avec différents privilèges, au niveau des colonnes et des lignes, seront créés
  • des privilèges seront accordés aux rôles
  • des utilisateurs seront affectés à chaque rôle
Les rôles servent à définir des groupes d’utilisateurs disposant de privilèges spécifiques, au lieu de gérer chaque utilisateur individuellement.
1

Créer un rôle pour limiter les utilisateurs de ce rôle à la consultation de column1 uniquement dans la base de données db1 et la table table1 :

2

Définir les privilèges pour autoriser l’accès à column1

3

Ajouter l’utilisateur column_user au rôle column1_users

4

Créer un rôle pour limiter les utilisateurs de ce rôle à la consultation de certaines lignes uniquement, en l’occurrence celles contenant A dans column1

5

Ajouter l’utilisateur row_user au rôle A_rows_users

6

Créer une politique pour autoriser l’accès uniquement aux lignes où column1 a la valeur A

7

Définir les privilèges sur la base de données et la table

8

Accorder des permissions explicites aux autres rôles afin qu’ils conservent l’accès à toutes les lignes

Lorsqu’une politique est attachée à une table, le système l’applique, et seuls les utilisateurs et rôles définis peuvent effectuer des opérations sur cette table ; toutes les autres opérations sont refusées. Pour éviter que la politique de lignes restrictive ne s’applique aux autres utilisateurs, une autre politique doit être définie afin de permettre aux autres utilisateurs et rôles de conserver un accès normal ou un autre type d’accès.

Vérification

Tester les privilèges de rôle avec un utilisateur dont l’accès est restreint à certaines colonnes

1

Connectez-vous au client ClickHouse avec l’utilisateur clickhouse_admin

2

Vérifiez l’accès à la base de données, à la table et à toutes les lignes avec l’utilisateur admin.

3

Connectez-vous au client ClickHouse avec l’utilisateur column_user

4

Testez SELECT en utilisant toutes les colonnes

L’accès est refusé, car toutes les colonnes sont demandées et l’utilisateur n’a accès qu’à id et column1
5

Vérifiez la requête SELECT avec uniquement les colonnes spécifiées et autorisées :

Tester les privilèges du rôle avec un utilisateur soumis à une restriction au niveau des lignes

1

Connectez-vous au client ClickHouse avec row_user

2

Affichez les lignes disponibles

Vérifiez que seules les deux lignes ci-dessus sont renvoyées ; les lignes pour lesquelles column1 vaut B doivent être exclues.

Modifier les utilisateurs et les rôles

Les utilisateurs peuvent se voir attribuer plusieurs rôles afin d’obtenir la combinaison de privilèges nécessaire. Lorsque plusieurs rôles sont utilisés, le système les combine pour déterminer les privilèges ; au final, les permissions des rôles sont cumulatives. Par exemple, si role1 autorise uniquement select sur column1 et que role2 autorise select sur column1 et column2, l’utilisateur aura accès aux deux colonnes.
1

À l'aide du compte Admin, créez un nouvel utilisateur avec des rôles par défaut afin de restreindre l'accès à la fois par ligne et par colonne

2

Supprimez les privilèges précédents du rôle A_rows_users

3

Autorisez le rôle A_row_users à sélectionner uniquement column1

4

Connectez-vous au client ClickHouse avec row_and_column_user

5

Testez avec toutes les colonnes :

6

Testez avec les colonnes autorisées uniquement :

Dépannage

Il arrive que des privilèges se recoupent ou se combinent, produisant des résultats inattendus. Les commandes suivantes peuvent être utilisées pour cerner le problème à l’aide d’un compte administrateur.

Lister les grants et rôles d’un utilisateur

Lister les rôles dans ClickHouse

Afficher les politiques

Afficher la définition d’une politique et les privilèges actuels

Exemple de commandes pour gérer les rôles, les politiques et les utilisateurs

Les commandes suivantes peuvent être utilisées pour :
  • supprimer des privilèges
  • supprimer des politiques
  • désattribuer des rôles à des utilisateurs
  • supprimer des utilisateurs et des rôles
Exécutez ces commandes en tant qu’utilisateur admin ou default

Retirer un privilège d’un rôle

Supprimer une politique

Retirer un utilisateur d’un rôle

Supprimer un rôle

Supprimer un utilisateur

Résumé

Cet article a présenté les bases de la création d’utilisateurs et de rôles SQL, ainsi que les étapes pour définir et modifier les privilèges des utilisateurs et des rôles. Pour plus d’informations sur chacun de ces éléments, veuillez consulter nos guides utilisateur et notre documentation de référence.
Dernière modification le 3 juillet 2026