Utilisateur admin
default, créé lors de la création du service. Le mot de passe est fourni à ce moment-là et peut être réinitialisé par les utilisateurs de ClickHouse Cloud disposant du rôle Admin.
Lorsque vous ajoutez des utilisateurs SQL supplémentaires à votre service ClickHouse Cloud, ils doivent avoir un nom d’utilisateur SQL et un mot de passe. Si vous souhaitez leur accorder des privilèges de niveau administratif, attribuez aux nouveaux utilisateurs le rôle default_role. Par exemple, pour ajouter l’utilisateur clickhouse_admin :
Lorsque vous utilisez la SQL Console, vos instructions SQL ne sont pas exécutées en tant qu’utilisateur
default. Elles sont exécutées à la place en tant qu’utilisateur nommé sql-console:${cloud_login_email}, où cloud_login_email correspond à l’adresse e-mail de l’utilisateur qui exécute actuellement la requête.Ces utilisateurs de la SQL Console générés automatiquement disposent du rôle default.Authentification sans mot de passe
sql_console_admin, avec des autorisations identiques à default_role, et sql_console_read_only, avec des autorisations en lecture seule.
Les utilisateurs Admin se voient attribuer par défaut le rôle sql_console_admin, donc rien ne change pour eux. En revanche, le rôle sql_console_read_only permet d’accorder à des utilisateurs non Admin un accès en lecture seule ou un accès complet à n’importe quelle instance. Un administrateur doit configurer cet accès. Les rôles peuvent être ajustés à l’aide des commandes GRANT ou REVOKE afin de mieux répondre aux exigences propres à chaque instance, et toute modification apportée à ces rôles sera conservée.
Contrôle d’accès granulaire
sql_console_* aux utilisateurs, il convient de créer des rôles de base de données propres aux utilisateurs de la SQL Console, correspondant à l’espace de noms sql-console-role:<email>. Par exemple :
sql_console_sa_role et sql_console_pm_role, puis en les attribuant à des utilisateurs spécifiques. Par exemple :
Tester les privilèges d’administrateur
default, puis reconnectez-vous en tant qu’utilisateur clickhouse_admin.
Toutes les opérations suivantes devraient réussir :
Utilisateurs non administrateurs
Préparation
Création d’une base de données, d’une table et de lignes d’exemple
1
Créer une base de données de test
2
Créer une table
3
Insérer des lignes d’exemple dans la table
4
Vérifier la table
Requête
Réponse
5
Créer column_user
Créez un utilisateur standard qui servira à démontrer la restriction de l’accès à certaines colonnes :6
Créer row_user
Créez un utilisateur standard qui servira à démontrer la restriction de l’accès aux lignes contenant certaines valeurs :Création de rôles
- des rôles avec différents privilèges, au niveau des colonnes et des lignes, seront créés
- des privilèges seront accordés aux rôles
- des utilisateurs seront affectés à chaque rôle
1
Créer un rôle pour limiter les utilisateurs de ce rôle à la consultation de column1 uniquement dans la base de données db1 et la table table1 :
2
Définir les privilèges pour autoriser l’accès à column1
3
Ajouter l’utilisateur column_user au rôle column1_users
4
Créer un rôle pour limiter les utilisateurs de ce rôle à la consultation de certaines lignes uniquement, en l’occurrence celles contenant A dans column1
5
Ajouter l’utilisateur row_user au rôle A_rows_users
6
Créer une politique pour autoriser l’accès uniquement aux lignes où column1 a la valeur A
7
Définir les privilèges sur la base de données et la table
8
Accorder des permissions explicites aux autres rôles afin qu’ils conservent l’accès à toutes les lignes
Lorsqu’une politique est attachée à une table, le système l’applique, et seuls les utilisateurs et rôles définis peuvent effectuer des opérations sur cette table ; toutes les autres opérations sont refusées. Pour éviter que la politique de lignes restrictive ne s’applique aux autres utilisateurs, une autre politique doit être définie afin de permettre aux autres utilisateurs et rôles de conserver un accès normal ou un autre type d’accès.
Vérification
Tester les privilèges de rôle avec un utilisateur dont l’accès est restreint à certaines colonnes
1
Connectez-vous au client ClickHouse avec l’utilisateur clickhouse_admin
2
Vérifiez l’accès à la base de données, à la table et à toutes les lignes avec l’utilisateur admin.
3
Connectez-vous au client ClickHouse avec l’utilisateur column_user
4
Testez SELECT en utilisant toutes les colonnes
L’accès est refusé, car toutes les colonnes sont demandées et l’utilisateur n’a accès qu’à
id et column15
Vérifiez la requête SELECT avec uniquement les colonnes spécifiées et autorisées :
Tester les privilèges du rôle avec un utilisateur soumis à une restriction au niveau des lignes
1
Connectez-vous au client ClickHouse avec row_user
2
Affichez les lignes disponibles
Vérifiez que seules les deux lignes ci-dessus sont renvoyées ; les lignes pour lesquelles
column1 vaut B doivent être exclues.Modifier les utilisateurs et les rôles
role1 autorise uniquement select sur column1 et que role2 autorise select sur column1 et column2, l’utilisateur aura accès aux deux colonnes.
1
À l’aide du compte Admin, créez un nouvel utilisateur avec des rôles par défaut afin de restreindre l’accès à la fois par ligne et par colonne
2
Supprimez les privilèges précédents du rôle A_rows_users
3
Autorisez le rôle A_row_users à sélectionner uniquement column1
4
Connectez-vous au client ClickHouse avec row_and_column_user
5
Testez avec toutes les colonnes :
6
Testez avec les colonnes autorisées uniquement :
Dépannage
Lister les grants et rôles d’un utilisateur
Lister les rôles dans ClickHouse
Afficher les politiques
Afficher la définition d’une politique et les privilèges actuels
Exemple de commandes pour gérer les rôles, les politiques et les utilisateurs
- supprimer des privilèges
- supprimer des politiques
- désattribuer des rôles à des utilisateurs
- supprimer des utilisateurs et des rôles