ON CLUSTER permet de créer des utilisateurs sur un cluster, voir DDL distribué.
Identification
IDENTIFIED WITH no_passwordIDENTIFIED WITH plaintext_password BY 'qwerty'IDENTIFIED WITH sha256_password BY 'qwerty'orIDENTIFIED BY 'password'IDENTIFIED WITH sha256_hash BY 'hash'orIDENTIFIED WITH sha256_hash BY 'hash' SALT 'salt'IDENTIFIED WITH double_sha1_password BY 'qwerty'IDENTIFIED WITH double_sha1_hash BY 'hash'IDENTIFIED WITH bcrypt_password BY 'qwerty'IDENTIFIED WITH bcrypt_hash BY 'hash'IDENTIFIED WITH ldap SERVER 'server_name'IDENTIFIED WITH kerberosorIDENTIFIED WITH kerberos REALM 'realm'IDENTIFIED WITH ssl_certificate CN 'mysite.com:user'IDENTIFIED WITH ssh_key BY KEY 'public_key' TYPE 'ssh-rsa', KEY 'another_public_key' TYPE 'ssh-ed25519'IDENTIFIED WITH http SERVER 'http_server'orIDENTIFIED WITH http SERVER 'http_server' SCHEME 'basic'IDENTIFIED BY 'qwerty'
Dans ClickHouse Cloud, par défaut, les mots de passe doivent respecter les exigences de complexité suivantes :
- Comporter au moins 12 caractères
- Contenir au moins 1 chiffre
- Contenir au moins 1 majuscule
- Contenir au moins 1 minuscule
- Contenir au moins 1 caractère spécial
Exemples
-
Le nom d’utilisateur suivant est
name1et ne nécessite pas de mot de passe, ce qui n’offre évidemment guère de sécurité : -
Pour spécifier un mot de passe en clair :
-
L’option la plus courante consiste à utiliser un mot de passe haché avec SHA-256. ClickHouse hachera le mot de passe pour vous lorsque vous spécifiez
IDENTIFIED WITH sha256_password. Par exemple :L’utilisateurname3peut désormais se connecter avecmy_password, mais le mot de passe est stocké sous la forme de la valeur de hachage ci-dessus. Le fichier SQL suivant a été créé dans/var/lib/clickhouse/accesset est exécuté au démarrage du serveur :
-
double_sha1_passwordn’est généralement pas nécessaire, mais s’avère pratique lorsque vous travaillez avec des clients qui l’exigent (comme l’interface MySQL) :ClickHouse génère et exécute la requête suivante : -
bcrypt_passwordest l’option la plus sûre pour stocker les mots de passe. Il utilise l’algorithme bcrypt, qui résiste aux attaques par force brute même si le hachage du mot de passe est compromis.La longueur du mot de passe est limitée à 72 caractères avec cette méthode. Le paramètre de facteur de coût de bcrypt, qui définit la quantité de calculs et le temps nécessaires pour calculer le hachage et vérifier le mot de passe, peut être modifié dans la configuration du serveur :Le facteur de coût doit être compris entre 4 et 31, avec une valeur par défaut de 12.
-
Le type de mot de passe peut également être omis :
Dans ce cas, ClickHouse utilisera le type de mot de passe par défaut spécifié dans la configuration du serveur :Les types de mot de passe disponibles sont :
plaintext_password,sha256_password,double_sha1_password. -
Plusieurs méthodes d’authentification peuvent être spécifiées :
- Les anciennes versions de ClickHouse peuvent ne pas prendre en charge la syntaxe associée à plusieurs méthodes d’authentification. Par conséquent, si le serveur ClickHouse contient de tels utilisateurs et qu’il est rétrogradé vers une version qui ne la prend pas en charge, ces utilisateurs deviendront inutilisables et certaines opérations liées aux utilisateurs ne fonctionneront plus. Pour effectuer une rétrogradation proprement, il faut configurer tous les utilisateurs pour qu’ils n’utilisent qu’une seule méthode d’authentification avant la rétrogradation. Sinon, si le serveur a été rétrogradé sans suivre la procédure appropriée, les utilisateurs défectueux doivent être supprimés.
no_passwordne peut pas coexister avec d’autres méthodes d’authentification pour des raisons de sécurité. Par conséquent, vous ne pouvez spécifierno_passwordque s’il s’agit de la seule méthode d’authentification dans la requête.
Hôte de l’utilisateur
HOST de la requête des façons suivantes :
HOST IP 'ip_address_or_subnetwork'— L’utilisateur peut se connecter au serveur ClickHouse uniquement depuis l’adresse IP spécifiée ou un sous-réseau. Exemples :HOST IP '192.168.0.0/16',HOST IP '2001:DB8::/32'. Pour une utilisation en production, spécifiez uniquement des élémentsHOST IP(adresses IP et leurs masques), car l’utilisation dehostethost_regexppeut entraîner une latence supplémentaire.HOST ANY— L’utilisateur peut se connecter depuis n’importe où. Il s’agit de l’option par défaut.HOST LOCAL— L’utilisateur peut se connecter uniquement en local.HOST NAME 'fqdn'— L’hôte de l’utilisateur peut être spécifié sous forme de FQDN. Par exemple,HOST NAME 'mysite.com'.HOST REGEXP 'regexp'— Vous pouvez utiliser des expressions régulières pcre lorsque vous spécifiez les hôtes des utilisateurs. Par exemple,HOST REGEXP '.*\.mysite\.com'.HOST LIKE 'template'— Permet d’utiliser l’opérateur LIKE pour filtrer les hôtes des utilisateurs. Par exemple,HOST LIKE '%'est équivalent àHOST ANY,HOST LIKE '%.mysite.com'filtre tous les hôtes du domainemysite.com.
@ après le nom d’utilisateur. Exemples :
CREATE USER mira@'127.0.0.1'— Équivalent à la syntaxeHOST IP.CREATE USER mira@'localhost'— Équivalent à la syntaxeHOST LOCAL.CREATE USER mira@'192.168.%.%'— Équivalent à la syntaxeHOST LIKE.
Clause VALID UNTIL
YYYY-MM-DD [hh:mm:ss] [timezone] pour la valeur datetime, où [timezone] doit être un décalage numérique tel que +09:00 ou l’une des valeurs UTC, GMT, Z, MSK, MSD ; les zones IANA nommées comme Asia/Tokyo ne sont pas reconnues (voir la note ci-dessous). Par défaut, ce paramètre vaut 'infinity'.
La clause VALID UNTIL ne peut être spécifiée qu’avec une méthode d’authentification, sauf lorsqu’aucune méthode d’authentification n’a été spécifiée dans la requête. Dans ce cas, la clause VALID UNTIL s’applique à toutes les méthodes d’authentification existantes.
Exemples :
CREATE USER name1 VALID UNTIL '2025-01-01'CREATE USER name1 VALID UNTIL '2025-01-01 12:00:00 UTC'CREATE USER name1 VALID UNTIL '2025-01-01 12:00:00 +09:00'CREATE USER name1 VALID UNTIL 'infinity'CREATE USER name1 IDENTIFIED WITH plaintext_password BY 'no_expiration', bcrypt_password BY 'expiration_set' VALID UNTIL '2025-01-01'
La chaîne datetime est analysée par
parseDateTimeBestEffort, qui reconnaît uniquement les tokens de fuseau horaire UTC, GMT, Z, MSK, MSD, ainsi que les décalages numériques tels que +09:00 ou -05:00. Les fuseaux horaires IANA nommés comme Asia/Tokyo ou Europe/London ne sont pas pris en charge, et un décalage fixe n’est pas équivalent à une zone IANA pour les régions qui observent l’heure d’été ; vous devez donc calculer le décalage correct pour la date précise que vous encodez.Clause GRANTEES
GRANTEES :
user— Spécifie un utilisateur auquel cet utilisateur peut accorder des privilèges.role— Spécifie un rôle auquel cet utilisateur peut accorder des privilèges.ANY— Cet utilisateur peut accorder des privilèges à n’importe qui. Il s’agit du paramètre par défaut.NONE— Cet utilisateur ne peut accorder de privilèges à personne.
EXCEPT. Par exemple, CREATE USER user1 GRANTEES ANY EXCEPT user2. Cela signifie que si user1 s’est vu accorder certains privilèges avec GRANT OPTION, il pourra accorder ces privilèges à n’importe qui, sauf à user2.
Exemples
mira, protégé par le mot de passe qwerty :
mira doit démarrer l’application cliente sur l’hôte où s’exécute le serveur ClickHouse.
Créez le compte utilisateur john et attribuez-lui des rôles :
john, attribuez-lui des rôles et définissez-en certains par défaut :
john et autorisez-le à accorder ses privilèges à l’utilisateur associé au compte jack :
john :