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 autorisations
Pour plus de détails sur la manière d’activer les utilisateurs SQL et de définir des rôles, consultez le guide d’utilisation Defining SQL Users and Roles.
-
Créez un utilisateur SQL configuré pour utiliser l’authentification par certificat :
-
Accordez des privilèges au nouvel utilisateur authentifié par 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 d’autorisations.
Nous recommandons d’utiliser SQL pour définir les utilisateurs et les rôles. Cependant, si vous définissez actuellement les utilisateurs et les rôles dans des fichiers de configuration, l’utilisateur ressemblera à ceci :
3
Test
- Copiez le certificat utilisateur, la clé utilisateur et le certificat de la CA sur un nœud distant.
-
Configurez OpenSSL dans la configuration du client de ClickHouse avec le certificat et les chemins correspondants.
-
Exécutez
clickhouse-client.
Notez que le mot de passe transmis à clickhouse-client est ignoré lorsqu’un certificat est spécifié dans la config.
4
Test HTTP
- Copiez le certificat utilisateur, la clé utilisateur et le certificat de la CA vers un nœud distant.
-
Utilisez
curlpour tester une commande SQL d’exemple. Le format de base est le suivant :Par exemple :La sortie sera similaire à ce qui suit :
Notez qu’aucun mot de passe n’est spécifié : le certificat est utilisé à la place d’un 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.