跳到主要内容
跳到主要内容

配置 SSL 用户证书进行认证

Not supported in ClickHouse Cloud
备注

此页面不适用于 ClickHouse Cloud。此处文档记录的功能在 ClickHouse Cloud 服务中不可用。 有关更多信息,请参阅 ClickHouse 的 Cloud Compatibility 指南。

本指南提供简单且基本的设置,用于配置 SSL 用户证书进行认证。该教程基于 配置 SSL-TLS 指南

备注

SSL 用户认证仅在使用 https 或原生接口时受支持。 目前在 gRPC 或 PostgreSQL/MySQL 模拟端口中不使用。

1. 创建 SSL 用户证书

备注

本示例使用自签名证书和自签名 CA。对于生产环境,请创建 CSR 并提交给您的 PKI 团队或证书提供商以获得适当的证书。

  1. 生成证书签名请求 (CSR) 和密钥。基本格式如下:

    在此示例中,我们将使用以下域和用户作为此示例环境中的值:

    备注

    CN 是任意的,可以使用任何字符串作为证书的标识符。它在后续步骤中创建用户时会用到。

  2. 生成并签署将用于认证的新用户证书。基本格式如下:

    在此示例中,我们将使用以下域和用户作为此示例环境中的值:

2. 创建 SQL 用户并授予权限

备注

有关如何启用 SQL 用户并设置角色的详细信息,请参阅 定义 SQL 用户和角色 用户指南。

  1. 创建定义为使用证书认证的 SQL 用户:

  2. 授予新证书用户权限:

    备注

    为了演示目的,此操作中用户被授予完全管理权限。有关权限设置,请参阅 ClickHouse RBAC 文档

    备注

    我们推荐使用 SQL 来定义用户和角色。然而,如果您当前在配置文件中定义用户和角色,则用户将如下所示:

3. 测试

  1. 将用户证书、用户密钥和 CA 证书复制到远程节点。

  2. 在 ClickHouse 客户端配置 中配置 OpenSSL,指定证书及路径。

  3. 运行 clickhouse-client

    备注

    请注意,当在配置中指定证书时,传递给 clickhouse-client 的密码将被忽略。

4. 测试 HTTP

  1. 将用户证书、用户密钥和 CA 证书复制到远程节点。

  2. 使用 curl 测试示例 SQL 命令。基本格式为:

    例如:

    输出将类似于以下内容:

    备注

    请注意,没有指定密码,证书用于替代密码,这就是 ClickHouse 认证用户的方式。

总结

本文展示了创建和配置用于 SSL 证书认证的用户的基本知识。此方法可以与 clickhouse-client 或任何支持 https 接口且可以设置 HTTP 头的客户端一起使用。生成的证书和密钥应保持私密,并有限制访问,因为证书用于认证和授权用户在 ClickHouse 数据库上的操作。请将证书和密钥视为密码。