users du fichier de configuration users.xml contient les paramètres des utilisateurs.
ClickHouse prend également en charge un workflow piloté par SQL pour gérer les utilisateurs. Nous recommandons de l’utiliser.
users :
user_name/password
-
Pour définir un mot de passe en clair (non recommandé), placez-le dans un élément
password. Par exemple,<password>qwerty</password>. Le mot de passe peut être vide.
-
Pour définir un mot de passe à l’aide de son hash SHA256, placez-le dans un élément
password_sha256_hex. Par exemple,<password_sha256_hex>65e84be33532fb784c48129675f9eff3a682b27168c0ea744b2cf58ee02337c5</password_sha256_hex>. Exemple de génération d’un mot de passe depuis le shell :La première ligne du résultat correspond au mot de passe. La deuxième ligne est le hash SHA256 correspondant.
-
Pour assurer la compatibilité avec les clients MySQL, le mot de passe peut être spécifié sous forme de hash double SHA1. Placez-le dans l’élément
password_double_sha1_hex. Par exemple,<password_double_sha1_hex>08b4a0f1de6ad37da17359e592c8d74788a83eb0</password_double_sha1_hex>. Exemple de génération d’un mot de passe depuis le shell :La première ligne du résultat correspond au mot de passe. La deuxième ligne est le hash double SHA1 correspondant.
Configuration de l’authentification TOTP
users.xml, en complément de l’authentification par mot de passe.
Elle n’est pas encore prise en charge par le contrôle d’accès piloté par SQL.
Pour s’authentifier à l’aide de TOTP, les utilisateurs doivent fournir un mot de passe principal ainsi qu’un mot de passe à usage unique généré par leur application TOTP, soit via l’option de ligne de commande --one-time-password, soit en le concaténant au mot de passe principal avec le caractère ’+’.
Par exemple, si le mot de passe principal est some_password et que le code TOTP généré est 345123, l’utilisateur peut spécifier --password some_password+345123 ou --password some_password --one-time-password 345123 lors de la connexion à ClickHouse. Si aucun mot de passe n’est indiqué, clickhouse-client le demandera de manière interactive.
Pour activer l’authentification TOTP pour un utilisateur, configurez la section time_based_one_time_password dans users.xml. Cette section définit les paramètres TOTP, tels que le secret, la durée de validité, le nombre de chiffres et l’algorithme de hachage.
Exemple
secret dans users.xml.
Pour activer TOTP pour un utilisateur donné, ajoutez à l’un des champs existants basés sur un mot de passe (comme password ou password_sha256_hex) une section supplémentaire time_based_one_time_password.
L’outil qrencode peut être utilisé pour générer un code QR pour le secret TOTP.
username/ssh-key
Ce paramètre permet de s’authentifier à l’aide de clés SSH. Étant donné une clé SSH (générée parssh-keygen) telle que
ssh_key doit être
ssh-ed25519 par ssh-rsa ou ecdsa-sha2-nistp256 dans le cas des autres algorithmes pris en charge.
Plusieurs méthodes d’authentification
Un même utilisateur peut être configuré avec plusieurs méthodes d’authentification à l’aide de l’élément<auth_methods>. Cela permet à un utilisateur de s’authentifier avec n’importe laquelle des méthodes indiquées — par exemple, un utilisateur peut disposer à la fois d’un mot de passe et d’un identifiant LDAP, et pourra se connecter avec l’un ou l’autre.
Chaque élément enfant de <auth_methods> est un élément conteneur au nom arbitraire qui contient exactement un type d’authentification. Le nom de cet élément conteneur (par ex. <method1>, <primary>, <a1>) n’a pas d’importance ; seul l’élément d’authentification imbriqué est utilisé.
Exemple : plusieurs mots de passe
<auth_methods> :
password— mot de passe en clairpassword_sha256_hex— hachage SHA256 du mot de passepassword_scram_sha256_hex— hachage SCRAM-SHA-256 du mot de passepassword_double_sha1_hex— hachage double SHA1 du mot de passeldap— authentification via le serveur LDAPkerberos— authentification Kerberosssl_certificates— authentification par certificat SSLssh_keys— authentification par clé SSHhttp_authentication— authentification HTTP
<auth_methods>ne peut pas être utilisé avec des méthodes d’authentification définies au niveau de l’utilisateur. Utilisez soit l’une, soit l’autre, mais pas les deux.<auth_methods>doit contenir au moins une méthode d’authentification.- Chaque élément conteneur dans
<auth_methods>doit contenir exactement un type d’authentification (à l’exception de<ssh_keys>, qui peut en contenir plusieurs, pour la compatibilité descendante). - TOTP (
<time_based_one_time_password>) est défini au niveau de l’utilisateur (en dehors de<auth_methods>) et s’applique à toutes les méthodes basées sur un mot de passe de la liste. Au moins une méthode basée sur un mot de passe est requise lorsque TOTP est activé.
auth_methods avec TOTP
<password>), tandis que la méthode LDAP s’authentifie de manière indépendante auprès du serveur externe.
access_management
Ce paramètre active ou désactive l’utilisation du contrôle d’accès et de la gestion des comptes pilotés par SQL pour cet utilisateur. Valeurs possibles :- 0 — Désactivé.
- 1 — Activé.
grants
Ce paramètre permet d’accorder n’importe quel privilège à l’utilisateur sélectionné. Chaque élément de la liste doit être une requêteGRANT sans préciser de bénéficiaire.
Exemple :
dictionaries, access_management, named_collection_control, show_named_collections_secrets
et allow_databases.
user_name/networks
Liste des réseaux depuis lesquels l’utilisateur peut se connecter au serveur ClickHouse. Chaque élément de la liste peut prendre l’une des formes suivantes :-
<ip>— Adresse IP ou masque réseau. Exemples :213.180.204.3,10.0.0.1/8,10.0.0.1/255.255.255.0,2a02:6b8::3,2a02:6b8::3/64,2a02:6b8::3/ffff:ffff:ffff:ffff::. -
<host>— Nom d’hôte. Exemple :example01.host.ru. Pour vérifier l’accès, une requête DNS est effectuée et toutes les adresses IP renvoyées sont comparées à l’adresse distante. -
<host_regexp>— Expression régulière pour les noms d’hôte. Exemple,^example\d\d-\d\d-\d\.host\.ru$Pour vérifier l’accès, une requête DNS PTR est effectuée pour l’adresse distante, puis l’expression régulière spécifiée est appliquée. Ensuite, une autre requête DNS est effectuée sur les résultats de la requête PTR et toutes les adresses reçues sont comparées à l’adresse distante. Nous recommandons vivement de terminer l’expression régulière par $.
Il n’est pas sécurisé d’ouvrir l’accès depuis n’importe quel réseau, sauf si vous disposez d’un pare-feu correctement configuré ou si le serveur n’est pas directement connecté à Internet.
user_name/profile
Vous pouvez attribuer un profil de paramètres à l’utilisateur. Les profils de paramètres sont définis dans une section distincte du fichierusers.xml. Pour plus d’informations, consultez Profils de paramètres.
user_name/quota
Les quotas vous permettent de suivre ou de limiter l’utilisation des ressources sur une période donnée. Les quotas se configurent dans la sectionquotas
du fichier de configuration users.xml.
Vous pouvez attribuer un jeu de quotas à l’utilisateur. Pour une description détaillée de la configuration des quotas, consultez Quotas.
user_name/databases
Dans cette section, vous pouvez limiter les lignes renvoyées par ClickHouse pour les requêtesSELECT effectuées par l’utilisateur courant, ce qui permet de mettre en place une sécurité de base au niveau des lignes.
Exemple
La configuration suivante impose que l’utilisateur user1 ne puisse voir, dans les résultats des requêtes SELECT, que les lignes de table1 pour lesquelles la valeur du champ id est 1000.
filter peut être n’importe quelle expression qui renvoie une valeur de type UInt8. Il contient généralement des comparaisons et des opérateurs logiques. Les lignes de database_name.table1 pour lesquelles filter renvoie 0 ne sont pas retournées pour cet utilisateur. Le filtrage est incompatible avec les opérations PREWHERE et désactive l’optimisation WHERE→PREWHERE.
Rôles
Vous pouvez créer tous les rôles prédéfinis à l’aide de la sectionroles du fichier de configuration user.xml.
Structure de la section roles :
users :