- Workflow piloté par SQL. Vous devez activer cette fonctionnalité.
-
Les fichiers de configuration du serveur
users.xmletconfig.xml.
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
SHOW ACCESS.
Vue d’ensemble
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 :
- Activez le contrôle d’accès et la gestion des comptes pilotés par SQL pour l’utilisateur
default. - Connectez-vous au compte utilisateur
defaultet 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). - Restreignez les autorisations de l’utilisateur
defaultet 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
- 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.
Application des paramètres
- Paramètres du compte utilisateur.
- 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.
- 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.
- Paramètres appliqués par défaut à l’ensemble du serveur ou à partir du profil par défaut.
Rôle
- Privilèges
- Paramètres et contraintes
- Liste des rôles attribués
politique de ligne
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.
Profil de paramètres
- CREATE SETTINGS PROFILE
- ALTER SETTINGS PROFILE
- DROP SETTINGS PROFILE
- SHOW CREATE SETTINGS PROFILE
- SHOW PROFILES
Quota
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.xmlet définir à 1 les valeurs des paramètresaccess_management,named_collection_control,show_named_collectionsetshow_named_collections_secrets.
Définir les utilisateurs et les rôles SQL
Activation du mode utilisateur SQL
- 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.- Redémarrez les nœuds pour appliquer les modifications.
-
Démarrez le client ClickHouse :
Définir les utilisateurs
- Créez un compte administrateur SQL :
- Accordez au nouvel utilisateur tous les droits d’administrateur
Permissions pour ALTER
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
- Avec un utilisateur Admin, créez un utilisateur de test
- Créer une base de données d’exemple
- Créez une table d’échantillon
- 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 Pour accorder ou révoquer des privilèges avec
WITH GRANT OPTION.
Par exemple :GRANT ou REVOKE, l’utilisateur doit d’abord posséder lui-même ces privilèges.ALTER :
- Accorder des privilèges
ALTERà un utilisateur ou à un rôle
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 :
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 :
- Révocation des privilèges
ALTERaccordés aux utilisateurs et aux rôles
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
WITH GRANT OPTION, mais aussi les privilèges en question.
- Pour accorder à un utilisateur administrateur le privilège, ainsi que la possibilité d’administrer un ensemble de privilèges Voici un exemple :
ALTER COLUMN et tous les sous-privilèges associés.
Tests
- Ajoutez le privilège
SELECT
- Accordez à l’utilisateur le privilège d’ajout de colonne
- Connectez-vous avec l’utilisateur aux droits restreints
- Testez l’ajout d’une colonne
- Testez la suppression d’une colonne
- Tester ALTER ADMIN en accordant l’autorisation
- Connectez-vous avec l’utilisateur admin alter
- Accorder un privilège secondaire
- 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.
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.