Cette page ne s’applique pas à ClickHouse Cloud. La fonctionnalité décrite ici n’est pas disponible dans les services ClickHouse Cloud.
Consultez le guide ClickHouse Compatibilité Cloud pour plus d’informations.
L’authentification des utilisateurs par SSL est prise en charge avec les interfaces
https, native, mysql et postgresql.Les nœuds ClickHouse doivent avoir <verificationMode>strict</verificationMode> défini pour une authentification sécurisée (même si relaxed fonctionne à des fins de test).Si vous utilisez AWS NLB avec l’interface MySQL, vous devez demander au support AWS d’activer l’option non documentée suivante :
Je souhaite pouvoir configurer le proxy protocol v2 de notre proxy NLB comme suit : proxy_protocol_v2.client_to_server.header_placement,Value=on_first_ack.
1. Créer des certificats utilisateur SSL
Cet exemple utilise des certificats auto-signés avec une CA auto-signée. Pour les environnements de production, créez une CSR et soumettez-la à votre équipe PKI ou à votre fournisseur de certificats afin d’obtenir un certificat approprié.
- Générez une Certificate Signing Request (CSR) et une clé. Le format de base est le suivant :
Dans cet exemple, nous l’utiliserons pour le domaine et l’utilisateur qui seront utilisés dans cet environnement d’exemple :
Le CN est arbitraire et n’importe quelle chaîne peut être utilisée comme identifiant pour le certificat. Il est utilisé lors de la création de l’utilisateur dans les étapes suivantes.
- Générez et signez le nouveau certificat utilisateur qui sera utilisé pour l’authentification. Le format de base est le suivant :
Dans cet exemple, nous l’utiliserons pour le domaine et l’utilisateur qui seront utilisés dans cet environnement d’exemple :
2. Créer un utilisateur SQL et accorder des privilèges
Pour savoir comment activer les utilisateurs SQL et définir des rôles, consultez le guide Defining SQL Users and Roles.
-
Créez un utilisateur SQL configuré pour utiliser l’authentification par certificat :
-
Accordez des privilèges au nouvel utilisateur avec certificat :
Dans cet exercice, l’utilisateur reçoit tous les privilèges d’administration à des fins de démonstration. Consultez la documentation RBAC de ClickHouse pour les paramètres de permissions.
Nous recommandons d’utiliser SQL pour définir les utilisateurs et les rôles. Toutefois, si vous les définissez actuellement dans des fichiers de configuration, l’utilisateur se présentera comme suit :
3. Test
- Copiez le certificat utilisateur, la clé utilisateur et le certificat de l’autorité de certification vers un nœud distant.
-
Configurez OpenSSL dans la configuration du client ClickHouse en indiquant le certificat et les chemins.
-
Exécutez
clickhouse-client.
Le mot de passe transmis à clickhouse-client est ignoré lorsqu’un certificat est spécifié dans la configuration.
4. Test HTTP
- Copiez le certificat utilisateur, la clé utilisateur et le certificat de l’autorité de certification sur un nœud distant.
-
Utilisez
curlpour tester un exemple de commande SQL. Le format de base est :Par exemple :Le résultat ressemblera à ceci :
Notez qu’aucun mot de passe n’est spécifié : le certificat remplace le mot de passe, et c’est ainsi que ClickHouse authentifie l’utilisateur.
Résumé
clickhouse-client ou tout client prenant en charge l’interface https et permettant de définir des en-têtes HTTP. Le certificat et la clé générés doivent être conservés de façon sécurisée et avec un accès restreint, car le certificat sert à authentifier et à autoriser l’utilisateur pour des opérations sur la base de données ClickHouse. Traitez le certificat et la clé comme des mots de passe.