Skip to main content
ClickHouse prend en charge un contrôle d’accès basé sur l’approche RBAC. Entités d’accès de ClickHouse : Vous pouvez configurer les entités d’accès à l’aide de : Nous recommandons d’utiliser le workflow piloté par SQL. Les deux méthodes de configuration peuvent être utilisées en parallèle. Ainsi, si vous utilisez les fichiers de configuration du serveur pour gérer les comptes et les droits d’accès, vous pouvez passer facilement à un workflow piloté par SQL.
Vous ne pouvez pas gérer une même entité d’accès avec les deux méthodes de configuration simultanément.
Si vous cherchez à gérer les utilisateurs de la console ClickHouse Cloud, veuillez consulter cette page
Pour voir tous les utilisateurs, rôles, profils, etc., ainsi que tous leurs privilèges, utilisez l’instruction SHOW ACCESS.

Vue d’ensemble

Par défaut, le serveur ClickHouse fournit le compte utilisateur default, qui n’est pas autorisé à utiliser le contrôle d’accès et la gestion des comptes pilotés par SQL, mais qui dispose de tous les droits et de toutes les autorisations. Le compte utilisateur default est utilisé chaque fois que le nom d’utilisateur n’est pas défini, par exemple lors de la connexion depuis un client ou dans les requêtes distribuées. Dans le traitement distribué des requêtes, le compte utilisateur default est utilisé si la configuration du serveur ou du cluster ne spécifie pas les propriétés user and password. Si vous commencez tout juste à utiliser ClickHouse, envisagez le scénario suivant :
  1. Activez le contrôle d’accès et la gestion des comptes pilotés par SQL pour l’utilisateur default.
  2. Connectez-vous au compte utilisateur default et créez tous les utilisateurs nécessaires. N’oubliez pas de créer un compte administrateur (GRANT ALL ON *.* TO admin_user_account WITH GRANT OPTION).
  3. Restreignez les autorisations de l’utilisateur default et désactivez pour celui-ci le contrôle d’accès et la gestion des comptes pilotés par SQL.

Propriétés de la solution actuelle

  • Vous pouvez accorder des permissions sur des bases de données et des tables, même si elles n’existent pas.
  • Si une table est supprimée, tous les privilèges correspondants ne sont pas révoqués. Cela signifie que, même si vous créez ensuite une nouvelle table portant le même nom, tous les privilèges restent valides. Pour révoquer les privilèges associés à la table supprimée, vous devez exécuter, par exemple, la query REVOKE ALL PRIVILEGES ON db.table FROM ALL.
  • Il n’existe pas de paramètres de durée de vie pour les privilèges.

Compte utilisateur

Un compte utilisateur est une entité d’accès qui sert à autoriser un utilisateur dans ClickHouse. Un compte utilisateur contient :
  • Des informations d’identification.
  • Des privilèges qui définissent les requêtes que l’utilisateur peut exécuter.
  • Les hôtes autorisés à se connecter au serveur ClickHouse.
  • Les rôles attribués et le rôle par défaut.
  • Les paramètres et leurs contraintes, appliqués par défaut lors de la connexion de l’utilisateur.
  • Les profils de paramètres attribués.
Des privilèges peuvent être accordés à un compte utilisateur au moyen de la requête GRANT ou en attribuant des rôles. Pour révoquer les privilèges d’un utilisateur, ClickHouse fournit la requête REVOKE. Pour afficher la liste des privilèges d’un utilisateur, utilisez l’instruction SHOW GRANTS. Requêtes de gestion :

Application des paramètres

Les paramètres peuvent être configurés à différents niveaux : pour un compte utilisateur, dans les rôles qui lui sont accordés et dans les profils de paramètres. Lors de la connexion d’un utilisateur, si un paramètre est configuré pour différentes entités d’accès, la valeur et les contraintes de ce paramètre sont appliquées comme suit (de la priorité la plus élevée à la plus faible) :
  1. Paramètres du compte utilisateur.
  2. Les paramètres des rôles par défaut du compte utilisateur. Si un paramètre est configuré dans plusieurs rôles, l’ordre d’application du paramètre n’est pas défini.
  3. Les paramètres issus des profils de paramètres attribués à un utilisateur ou à ses rôles par défaut. Si un paramètre est configuré dans plusieurs profils, l’ordre d’application du paramètre n’est pas défini.
  4. Paramètres appliqués par défaut à l’ensemble du serveur ou à partir du profil par défaut.

Rôle

Un rôle est un conteneur d’entités de contrôle d’accès qui peuvent être attribuées à un compte utilisateur. Un rôle contient :
  • Privilèges
  • Paramètres et contraintes
  • Liste des rôles attribués
Requêtes de gestion : Des privilèges peuvent être attribués à un rôle au moyen de la requête GRANT. Pour révoquer les privilèges d’un rôle, ClickHouse fournit la requête REVOKE.

politique de ligne

Une politique de ligne est un filtre qui définit quelles lignes sont accessibles à un utilisateur ou à un rôle. Une politique de ligne contient des filtres pour une table donnée, ainsi qu’une liste de rôles et/ou d’utilisateurs auxquels cette politique de ligne s’applique.
Les politiques de ligne n’ont de sens que si vous disposez d’un accès readonly. Si vous pouvez modifier la table ou copier des partitions entre tables, cela contourne les restrictions des politiques de ligne.
Requêtes de gestion :

Profil de paramètres

Un profil de paramètres est un ensemble de paramètres. Un profil de paramètres contient des paramètres et des contraintes, ainsi qu’une liste de rôles et/ou d’utilisateurs auxquels ce profil s’applique. Requêtes de gestion :

Quota

Un quota limite l’utilisation des ressources. Voir Quotas. Un quota contient un ensemble de limites pour certaines périodes, ainsi qu’une liste de rôles et/ou d’utilisateurs devant utiliser ce quota. Requêtes de gestion :

Activation du contrôle d’accès et de la gestion des comptes via SQL

  • Configurez un répertoire pour stocker la configuration. ClickHouse stocke les configurations des entités d’accès dans le dossier défini par le paramètre de configuration du serveur access_control_path.
  • Activez le contrôle d’accès et la gestion des comptes via SQL pour au moins un compte utilisateur. Par défaut, le contrôle d’accès et la gestion des comptes via SQL sont désactivés pour tous les utilisateurs. Vous devez configurer au moins un utilisateur dans le fichier de configuration users.xml et définir à 1 les valeurs des paramètres access_management, named_collection_control, show_named_collections et show_named_collections_secrets.

Définir les utilisateurs et les rôles SQL

Si vous utilisez ClickHouse Cloud, veuillez consulter Cloud access management.
Cet article présente les principes de base de la définition des utilisateurs et des rôles SQL, ainsi que de l’attribution de ces privilèges et autorisations aux bases de données, tables, lignes et colonnes.

Activation du mode utilisateur SQL

  1. Activez le mode utilisateur SQL dans le fichier users.xml, sous l’utilisateur <default> :
L’utilisateur default est le seul créé lors d’une nouvelle installation. C’est aussi, par défaut, le compte utilisé pour les communications inter-nœuds.En production, il est recommandé de désactiver cet utilisateur une fois la communication inter-nœuds configurée avec un utilisateur SQL administrateur et les communications inter-nœuds définies avec <secret>, les identifiants du cluster et/ou les identifiants HTTP et du protocole de transport inter-nœuds, puisque le compte default est utilisé pour la communication inter-nœuds.
  1. Redémarrez les nœuds pour appliquer les modifications.
  2. Démarrez le client ClickHouse :

Définir les utilisateurs

  1. Créez un compte administrateur SQL :
  2. Accordez au nouvel utilisateur tous les droits d’administrateur

Permissions pour ALTER

Cet article a pour but de vous aider à mieux comprendre comment définir les permissions et comment elles fonctionnent lors de l’utilisation d’instructions ALTER pour les utilisateurs privilégiés. Les instructions ALTER sont divisées en plusieurs catégories, dont certaines sont hiérarchiques, tandis que d’autres ne le sont pas et doivent être définies explicitement. Exemple de configuration de DB, de table et d’utilisateur
  1. Avec un utilisateur Admin, créez un utilisateur de test
  1. Créer une base de données d’exemple
  1. Créez une table d’échantillon
  1. Créez un utilisateur Admin d’exemple pour accorder/révoquer des privilèges
Pour accorder ou révoquer des autorisations, l’utilisateur administrateur doit disposer du privilège WITH GRANT OPTION. Par exemple :
Pour accorder ou révoquer des privilèges avec GRANT ou REVOKE, l’utilisateur doit d’abord posséder lui-même ces privilèges.
Octroi et révocation des privilèges La hiérarchie ALTER :
  1. Accorder des privilèges ALTER à un utilisateur ou à un rôle
L’utilisation de GRANT ALTER on *.* TO my_user n’a d’effet que sur les instructions ALTER TABLE et ALTER VIEW de niveau supérieur ; les autres instructions ALTER doivent être accordées ou révoquées individuellement. par exemple, accorder le privilège ALTER de base :
Ensemble de privilèges obtenu :
Cela accordera toutes les permissions relevant de ALTER TABLE et ALTER VIEW dans l’exemple ci-dessus. En revanche, certaines autres permissions ALTER, comme ALTER ROW POLICY, ne seront pas accordées (reportez-vous à la hiérarchie : vous verrez que ALTER ROW POLICY n’est pas un enfant de ALTER TABLE ni de ALTER VIEW). Celles-ci doivent être explicitement accordées ou révoquées. Si seul un sous-ensemble des permissions ALTER est nécessaire, chacune peut être accordée séparément. S’il existe des sous-privilèges pour cette permission, ils seront également accordés automatiquement. Par exemple :
Les privilèges se définissent comme suit :
Cela accorde également les sous-privilèges suivants :
  1. Révocation des privilèges ALTER accordés aux utilisateurs et aux rôles
L’instruction REVOKE fonctionne de façon similaire à l’instruction GRANT. Si un utilisateur/rôle s’est vu accorder un sous-privilège, vous pouvez soit révoquer ce sous-privilège directement, soit révoquer le privilège de niveau supérieur dont il est issu. Par exemple, si l’utilisateur dispose du privilège ALTER ADD COLUMN
Un privilège peut être révoqué individuellement :
Ou peut être révoqué depuis n’importe lequel des niveaux supérieurs (révoque tous les sous-privilèges COLUMN) :
Supplémentaire Les privilèges doivent être accordés par un utilisateur qui possède non seulement WITH GRANT OPTION, mais aussi les privilèges en question.
  1. Pour accorder à un utilisateur administrateur le privilège, ainsi que la possibilité d’administrer un ensemble de privilèges Voici un exemple :
L’utilisateur peut désormais accorder ou révoquer ALTER COLUMN et tous les sous-privilèges associés. Tests
  1. Ajoutez le privilège SELECT
  1. Accordez à l’utilisateur le privilège d’ajout de colonne
  1. Connectez-vous avec l’utilisateur aux droits restreints
  1. Testez l’ajout d’une colonne
  1. Testez la suppression d’une colonne
  1. Tester ALTER ADMIN en accordant l’autorisation
  1. Connectez-vous avec l’utilisateur admin alter
  1. Accorder un privilège secondaire
  1. Vérifiez que l’octroi d’un privilège que l’utilisateur admin alter ne possède pas n’est pas un sous-privilège des privilèges accordés à l’utilisateur admin.
Résumé Les privilèges ALTER sont hiérarchiques pour ALTER sur les tables et les vues, mais pas pour les autres instructions ALTER. Les autorisations peuvent être définies de manière granulaire ou par groupe d’autorisations, et révoquées de la même façon. L’utilisateur qui accorde ou révoque doit disposer de WITH GRANT OPTION pour attribuer des privilèges à des utilisateurs, y compris à lui-même, et doit déjà posséder le privilège concerné. L’utilisateur agissant ne peut pas révoquer ses propres privilèges s’il ne dispose pas lui-même du privilège grant option.
Dernière modification le 25 juin 2026