更新时间:2024-12-24 GMT+08:00
ClickHouse安全通道加密
您可以通过创建集群开启加密通道,实现数据加密传输。此章节介绍如何开通ClickHouse安全通道。
打开安全通道操作步骤
- 登录表格存储服务管理控制台。
- 单击管理控制台左上角的,选择区域。
- 单击右上角的购买集群按钮,进入“购买集群”页面。
- 完成其他配置后,查看安全通道加密按钮是否开启,默认开启。
图1 安全通道
- 关闭https会给企业服务带来风险。
- 创建集群开启https选项,后续无法关闭。
- 创建集群未开启https选项,后续无法开启。
- 配置好参数,单击“立即购买”。
- 进入“规格详情”页面,确认集群规格订单信息,单击“提交”,成功提交集群创建任务,集群创建成功后,进入详情页面查看通道开启状态。
打开安全和非安全通道步骤
- 登录表格存储服务管理控制台。
- 单击管理控制台左上角的,选择区域。
- 单击右上角的购买集群按钮,进入“购买集群”页面。
- 配置好参数,单击“立即购买”。
- 进入“规格详情”页面,确认集群规格订单信息,单击“提交”,成功提交集群创建任务。
- 集群创建成功后,进入详情页面打开“同时开启安全通道和非安全通道”按钮,弹出确认框,确认无误后,单击“确定”。
- 在详情页面开启安全通道后,集群会重启。
- 安全通道和非安全通道同时开启后无法关闭。
安全集群连接步骤
- 安全集群创建后,打开详情页面,下载证书。
- 下载证书后,连接客户端指定配置文件。
./clickhouse client --host 集群内网地址 --port port --user admin --password password --secure --config-file /root/config.xml
配置文件。
<config> <secure>true</secure> <openSSL> <client> <caConfig>/etc/ssl/certificate.crt</caConfig> </client> </openSSL> </config>
- <caConfig>/etc/ssl/certificate.crt</caConfig>指放证书的路径。
- root指的是配置文件的存放路径。
- 证书下载限流,一分钟只能下载一次。
HTTPS连接步骤
- 安全集群创建后,打开详情页面,下载证书。
- 下载证书后,自定义存放路径。
- 通过https协议执行样例sql。
echo 'select 1' | curl -H 'X-ClickHouse-User: user' -H 'X-ClickHouse-Key: password' --cacert /clickhouse/client/client/bin/certificate.crt 'https://host:port/?' --data-binary @-
- select 1:执行的sql语句。
- user:用户名。
- password:创集群时创建的密码。
- /clickhouse/client/client/bin/certificate.crt:指证书存放路径。
- host、port:host指的是内网地址,port指的是https协议端口。
JDBC连接
public void run() throws InterruptedException { final ClickHouseProperties clickHouseProperties = new ClickHouseProperties(); // 认证用的密码直接写到代码中有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全; // 本示例以密码保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量CK_PASSWORD String password = System.getenv("CK_PASSWORD"); clickHouseProperties.setSslRootCertificate("/etc/ssl/certificate.crt"); clickHouseProperties.setSsl(true); clickHouseProperties.setSslMode("strict"); clickHouseProperties.setUser("test"); clickHouseProperties.setPassword(password); clickHouseProperties.setSocketTimeout(2 * 3600 * 1000); final BalancedClickhouseDataSource dataSource = new BalancedClickhouseDataSource("xxxx.mycloudtable.com:8443/default?ssl=true", clickHouseProperties); try { final ClickHouseConnection conn = dataSource.getConnection(); conn.createStatement().executeQuery("select now()"); } catch (Throwable e) { e.printStackTrace(); } }
clickHouseProperties.setSslRootCertificate("/etc/ssl/certificate.crt");中的/etc/ssl/certificate.crt指存放证书路径。
父主题: ClickHouse集群管理