配置 SSL 用户证书进行认证
此页面不适用于 ClickHouse Cloud。此处文档记录的功能在 ClickHouse Cloud 服务中不可用。 有关更多信息,请参阅 ClickHouse 的 Cloud Compatibility 指南。
本指南提供简单且基本的设置,用于配置 SSL 用户证书进行认证。该教程基于 配置 SSL-TLS 指南。
SSL 用户认证仅在使用 https
或原生接口时受支持。
目前在 gRPC 或 PostgreSQL/MySQL 模拟端口中不使用。
1. 创建 SSL 用户证书
本示例使用自签名证书和自签名 CA。对于生产环境,请创建 CSR 并提交给您的 PKI 团队或证书提供商以获得适当的证书。
-
生成证书签名请求 (CSR) 和密钥。基本格式如下:
在此示例中,我们将使用以下域和用户作为此示例环境中的值:
备注CN 是任意的,可以使用任何字符串作为证书的标识符。它在后续步骤中创建用户时会用到。
-
生成并签署将用于认证的新用户证书。基本格式如下:
在此示例中,我们将使用以下域和用户作为此示例环境中的值:
2. 创建 SQL 用户并授予权限
有关如何启用 SQL 用户并设置角色的详细信息,请参阅 定义 SQL 用户和角色 用户指南。
-
创建定义为使用证书认证的 SQL 用户:
-
授予新证书用户权限:
备注为了演示目的,此操作中用户被授予完全管理权限。有关权限设置,请参阅 ClickHouse RBAC 文档。
备注我们推荐使用 SQL 来定义用户和角色。然而,如果您当前在配置文件中定义用户和角色,则用户将如下所示:
3. 测试
-
将用户证书、用户密钥和 CA 证书复制到远程节点。
-
在 ClickHouse 客户端配置 中配置 OpenSSL,指定证书及路径。
-
运行
clickhouse-client
。备注请注意,当在配置中指定证书时,传递给 clickhouse-client 的密码将被忽略。
4. 测试 HTTP
-
将用户证书、用户密钥和 CA 证书复制到远程节点。
-
使用
curl
测试示例 SQL 命令。基本格式为:例如:
输出将类似于以下内容:
备注请注意,没有指定密码,证书用于替代密码,这就是 ClickHouse 认证用户的方式。
总结
本文展示了创建和配置用于 SSL 证书认证的用户的基本知识。此方法可以与 clickhouse-client
或任何支持 https
接口且可以设置 HTTP 头的客户端一起使用。生成的证书和密钥应保持私密,并有限制访问,因为证书用于认证和授权用户在 ClickHouse 数据库上的操作。请将证书和密钥视为密码。