Ce guide présente deux façons de gérer les utilisateurs de base de données : dans la console SQL et directement dans la base de données.
Authentification sans mot de passe de la console SQL
Les utilisateurs de la console SQL sont créés pour chaque session et authentifiés à l’aide de certificats X.509 renouvelés automatiquement. L’utilisateur est supprimé à la fin de la session. Lorsque vous générez des listes d’accès pour des audits, accédez à l’onglet Settings du service dans la console et tenez compte de l’accès à la console SQL en plus des utilisateurs de base de données existant dans la base de données. Si des rôles personnalisés sont configurés, l’accès de l’utilisateur figure dans le rôle dont le nom se termine par le nom d’utilisateur de cet utilisateur.
Utilisateurs et rôles de la console SQL
Les rôles de base de la console SQL peuvent être attribués aux utilisateurs disposant des permissions Service Read Only et Service Admin. Pour en savoir plus, consultez Gérer les attributions de rôles de la console SQL. Ce guide montre comment créer un rôle personnalisé pour un utilisateur de la console SQL.
Pour créer un rôle personnalisé pour un utilisateur de la console SQL et lui attribuer un rôle générique, exécutez les commandes suivantes. L’adresse e-mail doit correspondre à celle de l’utilisateur dans la console.
[object Object]
Créez le rôle database_developer et accordez les permissions SHOW, CREATE, ALTER et DELETE.
CREATE ROLE OR REPLACE database_developer;
GRANT SHOW ON * TO database_developer;
GRANT CREATE ON * TO database_developer;
GRANT ALTER ON * TO database_developer;
GRANT DELETE ON * TO database_developer;Créer un rôle utilisateur de la console SQL
Créez un rôle pour l’utilisateur de la console SQL my.user@domain.com et attribuez-lui le rôle database_developer.
CREATE ROLE OR REPLACE `sql-console-role:my.user@domain.com`;
GRANT database_developer TO `sql-console-role:my.user@domain.com`;L’utilisateur se voit attribuer le nouveau rôle lorsqu’il utilise la console SQL
L’utilisateur se verra attribuer le rôle associé à son adresse e-mail chaque fois qu’il utilisera la console SQL.
Authentification à la base de données
ID et mot de passe de l’utilisateur de base de données
Utilisez la méthode SHA256_hash lors de la création de comptes utilisateur pour sécuriser les mots de passe. Les mots de passe des utilisateurs de base de données ClickHouse doivent contenir au minimum 12 caractères et respecter des exigences de complexité : majuscules, minuscules, chiffres et/ou caractères spéciaux.
CREATE USER userName IDENTIFIED WITH sha256_hash BY 'hash';Utilisateur de base de données avec authentification SSH
Pour configurer l’authentification SSH pour un utilisateur de base de données ClickHouse Cloud.
- Utilisez ssh-keygen pour créer une paire de clés.
- Utilisez la clé publique pour créer l’utilisateur.
- Attribuez des rôles et/ou des permissions à l’utilisateur.
- Utilisez la clé privée pour vous authentifier auprès du service.
Pour une présentation détaillée avec des exemples, consultez Comment se connecter à ClickHouse Cloud à l’aide de clés SSH dans notre base de connaissances.
Permissions de la base de données
Configurez les éléments suivants au sein des services et des bases de données à l’aide de l’instruction SQL GRANT.
| Role | Description |
|---|---|
| Default | Accès administratif complet aux services |
| Custom | À configurer à l’aide de l’instruction SQL GRANT |
- Les rôles de base de données sont cumulatifs. Cela signifie que si un utilisateur est membre de deux rôles, il dispose du niveau d’accès le plus élevé accordé par l’un ou l’autre de ces rôles. L’ajout de rôles ne réduit pas ses accès.
- Des rôles de base de données peuvent être accordés à d’autres rôles, ce qui crée une structure hiérarchique. Les rôles héritent de toutes les permissions des rôles dont ils sont membres.
- Les rôles de base de données sont propres à chaque service et peuvent être appliqués à plusieurs bases de données au sein du même service.
L’illustration ci-dessous montre les différentes manières d’accorder des permissions à un utilisateur.

Paramètres initiaux
Les bases de données incluent un compte nommé default, ajouté automatiquement et auquel default_role est attribué lors de la création du service. L’utilisateur qui crée le service voit le mot de passe aléatoire généré automatiquement et attribué au compte default lors de la création du service. Ce mot de passe n’est plus affiché après la configuration initiale, mais il peut être modifié ultérieurement par tout utilisateur disposant des autorisations Service Admin dans la console. Ce compte, ou tout compte disposant des privilèges Service Admin dans la console, peut à tout moment configurer des utilisateurs et des rôles de base de données supplémentaires.
Nous vous recommandons de créer un nouveau compte utilisateur associé à une personne et d’attribuer à cet utilisateur default_role. Ainsi, les activités effectuées par les utilisateurs sont rattachées à leurs identifiants utilisateur, et le compte default reste réservé aux opérations de type break-glass.
CREATE USER userID IDENTIFIED WITH sha256_hash by 'hashed_password';
GRANT default_role to userID;Vous pouvez utiliser un générateur de hachage SHA256 ou une fonction telle que hashlib en Python pour convertir un mot de passe d’au moins 12 caractères, avec un niveau de complexité approprié, en chaîne SHA256, puis la fournir à l’administrateur système comme mot de passe. Cela garantit que l’administrateur ne voit pas les mots de passe en clair et ne les manipule pas.
Liste des accès à la base de données avec les utilisateurs de la console SQL
Le processus suivant permet de générer une liste complète des accès dans la console SQL et les bases de données de votre organisation.
Obtenir la liste de tous les privilèges de la base de données
Exécutez les requêtes suivantes pour obtenir la liste de tous les privilèges de la base de données.
SELECT grants.user_name,
grants.role_name,
users.name AS role_member,
grants.access_type,
grants.database,
grants.table
FROM system.grants LEFT OUTER JOIN system.role_grants ON grants.role_name = role_grants.granted_role_name
LEFT OUTER JOIN system.users ON role_grants.user_name = users.name
UNION ALL
SELECT grants.user_name,
grants.role_name,
role_grants.role_name AS role_member,
grants.access_type,
grants.database,
grants.table
FROM system.role_grants LEFT OUTER JOIN system.grants ON role_grants.granted_role_name = grants.role_name
WHERE role_grants.user_name is null;Associer la liste des privilèges aux utilisateurs de la Console ayant accès à la console SQL
Associez cette liste aux utilisateurs de la Console qui ont accès à la console SQL.
a. Accédez à la Console.
b. Sélectionnez le service concerné.
c. Sélectionnez Settings dans le panneau de gauche.
d. Faites défiler jusqu'à la section d'accès à la console SQL.
e. Cliquez sur le lien indiquant le nombre d'utilisateurs ayant accès à la base de données, There are # users with access to this service., pour afficher la liste des utilisateurs.
Utilisateurs du Warehouse
Les utilisateurs du Warehouse sont partagés entre les services d'un même Warehouse. Pour plus d'informations, consultez les contrôles d'accès du Warehouse.