TDengine 安全部署配置建议

news2025/7/13 8:58:28

在这里插入图片描述

背景

TDengine 的分布式、多组件特性导致 TDengine 的安全配置是生产系统中比较关注的问题。本文档旨在对 TDengine 各组件及在不同部署方式下的安全问题进行说明,并提供部署和配置建议,为用户的数据安全提供支持。

安全配置涉及组件

TDengine 包含多个组件,有:

  • taosd:内核组件。
  • taosc:客户端库。
  • taosAdapter:REST API 和 WebSocket 服务。
  • taosKeeper:监控服务组件。
  • taosX:数据管道和备份恢复组件。
  • taosxAgent:外部数据源数据接入辅助组件。
  • taosExplorer:Web 可视化管理界面。

与 TDengine 部署和应用相关,还会存在以下组件:

  • 通过各种连接器接入并使用 TDengine 数据库的应用。
  • 外部数据源:指接入 TDengine 的其他数据源,如 MQTT、OPC、Kafka 等。

各组件关系如下:

在这里插入图片描述

关于各组件的详细介绍,请参考 组件介绍。

TDengine 安全设置

taosd

taosd 集群间使用 TCP 连接基于自有协议进行数据交换,风险较低,但传输过程不是加密的,仍有一定安全风险。

启用压缩可能对 TCP 数据混淆有帮助。

  • compressMsgSize:是否对 RPC 消息进行压缩,整数,可选:-1:所有消息都不压缩;0:所有消息都压缩;N (N>0):只有大于 N 个字节的消息才压缩。

为了保证数据库操作可追溯,建议启用审计功能。

  • audit:审计功能开关,0 为关,1 为开。默认打开。
  • auditInterval:上报间隔,单位为毫秒。默认 5000。
  • auditCreateTable:是否针对创建子表开启申计功能。0 为关,1 为开。默认打开。

为保证数据文件安全,可启用数据库加密。

  • encryptAlgorithm:数据加密算法。
  • encryptScope:数据加密范围。

启用白名单可限制访问地址,进一步增强私密性。

  • enableWhiteList:白名单功能开关,0 为关,1 为开;默认关闭。

taosc

用户和其他组件与 taosd 之间使用原生客户端库(taosc)和自有协议进行连接,数据安全风险较低,但传输过程仍然不是加密的,有一定安全风险。

taosAdapter

taosadapter 与 taosd 之间使用原生客户端库(taosc)和自有协议进行连接,同样支持 RPC 消息压缩,不会造成数据安全问题。

应用和其他组件通过各语言连接器与 taosadapter 进行连接。默认情况下,连接是基于 HTTP 1.1 且不加密的。要保证 taosadapter 与其他组件之间的数据传输安全,需要配置 SSL 加密连接。在 /etc/taos/taosadapter.toml 配置文件中修改如下配置:

[ssl]
enable = true
certFile = "/path/to/certificate-file"
keyFile = "/path/to/private-key"

在连接器中配置 HTTPS/SSL 访问方式,完成加密访问。

为进一步增强安全性,可启用白名单功能,在 taosd 中配置,对 taosdapter 组件同样生效。

taosX

taosX 对外包括 REST API 接口和 gRPC 接口,其中 gRPC 接口用于 taos-agent 连接。

  • REST API 接口是基于 HTTP 1.1 且不加密的,有安全风险。
  • gRPC 接口基于 HTTP 2 且不加密,有安全风险。

为了保证数据安全,建议 taosX API 接口仅限内部访问。在 /etc/taos/taosx.toml 配置文件中修改如下配置:

[serve]
listen = "127.0.0.1:6050"
grpc = "127.0.0.1:6055"

从 TDengine 3.3.6.0 开始,taosX 支持 HTTPS 连接,在 /etc/taos/taosx.toml 文件中添加如下配置:

[serve]
ssl_cert = "/path/to/server.pem"
ssl_key =  "/path/to/server.key"
ssl_ca =   "/path/to/ca.pem"

并在 Explorer 中修改 API 地址为 HTTPS 连接:

# taosX API 本地连接
x_api = "https://127.0.01:6050"
# Public IP 或者域名地址
grpc = "https://public.domain.name:6055"

taosExplorer

taosAdapter 组件相似,taosExplorer 组件提供 HTTP 服务对外访问。在 /etc/taos/explorer.toml 配置文件中修改如下配置:

[ssl]
# SSL certificate file
certificate = "/path/to/ca.file"

# SSL certificate private key
certificate_key = "/path/to/key.file"

之后,使用 HTTPS 进行 Explorer 访问,如 https://192.168.12.34 。

taosxAgent

taosX 启用 HTTPS 后,Agent 组件与 taosx 之间使用 HTTP 2 加密连接,使用 Arrow-Flight RPC 进行数据交换,传输内容是二进制格式,且仅注册过的 Agent 连接有效,保障数据安全。

建议在不安全网络或公共网络环境下的 Agent 服务,始终开启 HTTPS 连接。

taosKeeper

taosKeeper 使用 WebSocket 连接与 taosadpater 通信,将其他组件上报的监控信息写入 TDengine。

taosKeeper 当前版本存在安全风险:

  • 监控地址不可限制在本机,默认监控 所有地址的 6043 端口,存在网络攻击风险。使用 Docker 或 Kubernetes 部署不暴露 taosKeeper 端口时,此风险可忽略。
  • 配置文件中配置明文密码,需要降低配置文件可见性。在 /etc/taos/taoskeeper.toml 中存在:
[tdengine]
host = "localhost"
port = 6041
username = "root"
password = "taosdata"
usessl = false

安全增强

我们建议使用在局域网内部使用 TDengine。

如果必须在局域网外部提供访问,请考虑添加以下配置:

负载均衡

使用负载均衡对外提供 taosAdapter 服务。

以 Nginx 为例,配置多节点负载均衡:

http {
    server {
        listen 6041;
        
        location / {
            proxy_pass http://websocket;
            # Headers for websocket compatible
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection $connection_upgrade;
            # Forwarded headers
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Forwarded-Host $host;
            proxy_set_header X-Forwarded-Port $server_port;
            proxy_set_header X-Forwarded-Server $hostname;
            proxy_set_header X-Real-IP $remote_addr;
        }
    }
 
    upstream websocket {
        server 192.168.11.61:6041;
        server 192.168.11.62:6041;
        server 192.168.11.63:6041;
   }
}

如果 taosAdapter 组件未配置 SSL 安全连接,还需要配置 SSL 才能保证安全访问。SSL 可以配置在更上层的 API Gateway,也可以配置在 Nginx 中;如果你对各组件之间的安全性有更强的要求,您可以在所有组件中都配置 SSL。Nginx 配置如下:

http {
    server {
        listen 443 ssl;

        ssl_certificate /path/to/your/certificate.crt;
        ssl_certificate_key /path/to/your/private.key;
    }
}

安全网关

在现在互联网生产系统中,安全网关使用也很普遍。traefik 是一个很好的开源选择,我们以 traefik 为例,解释在 API 网关中的安全配置。

Traefik 中通过 middleware 中间件提供多种安全配置,包括:

  1. 认证(Authentication):Traefik 提供 BasicAuth、DigestAuth、自定义认证中间件、OAuth 2.0 等多种认证方式。
  2. IP 白名单(IPWhitelist):限制允许访问的客户端 IP。
  3. 频率限制(RateLimit):控制发送到服务的请求数。
  4. 自定义 Headers:通过自定义 Headers 添加 allowedHosts 等配置,提高安全性。

一个常见的中间件示例如下:

labels:
  - "traefik.enable=true"
  - "traefik.http.routers.tdengine.rule=Host(`api.tdengine.example.com`)"
  - "traefik.http.routers.tdengine.entrypoints=https"
  - "traefik.http.routers.tdengine.tls.certresolver=default"
  - "traefik.http.routers.tdengine.service=tdengine"
  - "traefik.http.services.tdengine.loadbalancer.server.port=6041"
  - "traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https"
  - "traefik.http.middlewares.check-header.headers.customrequestheaders.X-Secret-Header=SecretValue"
  - "traefik.http.middlewares.check-header.headers.customresponseheaders.X-Header-Check=true"
  - "traefik.http.middlewares.tdengine-ipwhitelist.ipwhitelist.sourcerange=127.0.0.1/32, 192.168.1.7"
  - "traefik.http.routers.tdengine.middlewares=redirect-to-https,check-header,tdengine-ipwhitelist"

上面的示例完成以下配置:

  • TLS 认证使用 default 配置,这个配置可使用配置文件或 traefik 启动参数中配置,如下:

    traefik:
    image: "traefik:v2.3.2"
    hostname: "traefik"
    networks:
    - traefik
    command:
    - "--log.level=INFO"
    - "--api.insecure=true"
    - "--providers.docker=true"
    - "--providers.docker.exposedbydefault=false"
    - "--providers.docker.swarmmode=true"
    - "--providers.docker.network=traefik"
    - "--providers.docker.watch=true"
    - "--entrypoints.http.address=:80"
    - "--entrypoints.https.address=:443"
    - "--certificatesresolvers.default.acme.dnschallenge=true"
    - "--certificatesresolvers.default.acme.dnschallenge.provider=alidns"
    - "--certificatesresolvers.default.acme.dnschallenge.resolvers=ns1.alidns.com"
    - "--certificatesresolvers.default.acme.email=linhehuo@gmail.com"
    - "--certificatesresolvers.default.acme.storage=/letsencrypt/acme.json"
    

上面的启动参数配置了 default TSL 证书解析器和自动 acme 认证(自动证书申请和延期)。

  • 中间件 redirect-to-https:配置从 HTTP 到 HTTPS 的转发,强制使用安全连接。

    - "traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https"
    
  • 中间件 check-header:配置自定义 Headers 检查。外部访问必须添加自定义 Header 并匹配 Header 值,避免非法访问。这在提供 API 访问时是一个非常简单有效的安全机制。

  • 中间件 tdengine-ipwhitelist:配置 IP 白名单。仅允许指定 IP 访问,使用 CIDR 路由规则进行匹配,可以设置内网及外网 IP 地址。

总结

数据安全是 TDengine 产品的一项关键指标,这些措施旨在保护 TDengine 部署免受未经授权的访问和数据泄露,同时保持性能和功能。但 TDengine 自身的安全配置不是生产中的唯一保障,结合用户业务系统制定更加匹配客户需求的解决方案更加重要。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2383527.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

蓝桥杯框架-LED蜂鸣器继电器

蓝桥杯框架-LED蜂鸣器继电器 一,新建工程文件二,配置keil三,完善框架 一,新建工程文件 在桌面上新建一个文件夹:用于存放所有工程文件 在文件夹中再建立一个文件夹DEMO_01:这是我们的第一个工程文件 在第…

uniapp-商城-64-后台 商品列表(商品修改---页面跳转,深浅copy应用,递归调用等)

完成了商品的添加和展示,下面的文字将继续进行商品页面的处理,主要为商品信息的修改的页面以及后天逻辑的处理。 本文主要介绍了商品信息修改页面的实现过程。首先,页面布局包括编辑和删除功能,未来还可添加上架和下架按钮。通过c…

Dify的大语言模型(LLM) AI 应用开发平台-本地部署

前言 今天闲着,捣鼓一下 Dify 这个开源平台,在 mac 系统上,本地部署并运行 Dify 平台,下面记录个人在本地部署Dify 的过程。 Dify是什么? Dify是一个开源的大语言模型(LLM)应用开发平台&#…

使用教程:8x16模拟开关阵列可级联XY脚双向导通自动化接线

以下通过点亮LED进行基本使用流程演示,实际可以连接复杂外设(SPI、CAN、ADC等) 单模块使用 RX、TX、5V和GND接到串口模块;X5接5V;Y2接LED;LED-接GND 串口模块插上电脑后,LED没有亮;因为此时模…

8 种快速易用的Python Matplotlib数据可视化方法

你是否曾经面对一堆复杂的数据,却不知道如何让它们变得直观易懂?别慌,Python 的 Matplotlib 库是你数据可视化的最佳伙伴!它简单易用、功能强大,能将枯燥的数字变成引人入胜的图表。无论是学生、数据分析师还是程序员&…

C# 深入理解类(实例构造函数)

实例构造函数 实例构造函数是一个特殊的方法,它在创建类的每个新实例时执行。 构造函数用于初始化类实例的状态。如果希望能从类的外部创建类的实例,需要将构造函数声明为public。 图7-2阐述了构造函数的语法。除了下面这几点,构造函数看起…

RabbitMQ——消息确认

一、消息确认机制 生产者发送的消息,可能有以下两种情况: 1> 消息消费成功 2> 消息消费失败 为了保证消息可靠的到达消费者(!!!注意:消息确认机制和前面的工作模式中的publisher confi…

测试W5500的第2步_使用ioLibrary库创建TCP客户端

ioLibrary库下载地址:文件下载地址:https://gitee.com/wiznet-hk/STM32F10x_W5500_Examples 源文件下载地址:https://gitee.com/wiznet-hk 没有注册的,只能复制粘贴了。 本文介绍了如何初始化STM32的硬件资源,配置W5500的网络参数&#xff…

深度学习之用CelebA_Spoof数据集搭建一个活体检测-训练好的模型用MNN来推理

一、模型转换准备 首先确保已完成PyTorch到ONNX的转换:深度学习之用CelebA_Spoof数据集搭建活体检测系统:模型验证与测试。这里有将PyTorch到ONNX格式的模型转换。 二、ONNX转MNN 使用MNN转换工具进行格式转换:具体的编译过程可以参考MNN的…

开源安全大模型Foundation-Sec-8B实操

一、兴奋时刻 此时此刻,晚上22点55分,从今天早上6点左右开始折腾,花费了接近10刀的环境使用费,1天的休息时间,总算是把Foundation-Sec-8B模型跑起来了,中间有两次胜利就在眼前,但却总在远程端口转发环节出问题,让人难受。直到晚上远程Jupyter访问成功那一刻,眉开眼笑,…

【JavaWeb】MySQL

1 引言 1.1 为什么学? 在学习SpringBootWeb基础知识(IOC、DI等)时,在web开发中,为了应用程序职责单一,方便维护,一般将web应用程序分为三层,即:Controller、Service、Dao 。 之前的案例中&am…

微信小游戏流量主广告自动化浏览功能案例5

功能需求: 支持APP单行文本框输入1个小程序链接,在“文件传输助手”界面发送小程序链接并进入。 主要有“文章列表首页”和“文章内容”页面。每个页面支持点击弹窗广告、槽位广告、视频广告入口、视频广告内第三方广告。 弹窗广告、槽位广告、视频广…

软件的技术架构、应用架构、业务架构、数据架构、部署架构

一、各架构定义 1. 技术架构(Technical Architecture) 定义:技术架构关注的是支撑系统运行的底层技术基础设施和软件平台,包括硬件、操作系统、中间件、编程语言、框架、数据库管理系统等技术组件的选择和组合方式。它描述了系统…

CSS 文字样式全解析:从基础排版到视觉层次设计

CSS 文字样式目录 一、字体家族(font-family) 二、字体大小(font-size) 三、字体粗细(font-weight) 四、字体样式(font-style) 五、文本转换(text-transform&#xf…

【高德开放平台-注册安全分析报告】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞…

RabbitMQ的简介

三个概念 生产者:生产消息的服务消息代理:消息中间件,如RabbitMQ消费者:获取使用消息的服务 消息队列到达消费者的两种形式 队列(queue):点对点消息通信(point-to-point) 消息进入队…

使用Gemini, LangChain, Gradio打造一个书籍推荐系统 (第一部分)

第一部分:数据处理 import kagglehub# Download latest version path kagglehub.dataset_download("dylanjcastillo/7k-books-with-metadata")print("Path to dataset files:", path)自动下载该数据集的 最新版本 并返回本地保存的路径 impo…

大语言模型 16 - Manus 超强智能体 Prompt分析 原理分析 包含工具列表分析

写在前面 Manus 是由中国初创公司 Monica.im 于 2025 年 3 月推出的全球首款通用型 AI 智能体(AI Agent),旨在实现“知行合一”,即不仅具备强大的语言理解和推理能力,还能自主执行复杂任务,直接交付完整成…

以太联Intellinet带您深度解析PoE交换机的上行链路端口(Uplink Ports)

在当今网络技术日新月异的时代,以太网供电(PoE)交换机已然成为现代网络连接解决方案中不可或缺的“利器”。它不仅能够出色地完成数据传输任务,还能为所连接的设备提供电力支持,彻底摆脱了单独电源适配器的束缚,让网络部署更加简洁…

分类算法 Kmeans、KNN、Meanshift 实战

任务 1、采用 Kmeans 算法实现 2D 数据自动聚类,预测 V180,V260 数据类别; 2、计算预测准确率,完成结果矫正 3、采用 KNN、Meanshift 算法,重复步骤 1-2 代码工具:jupyter notebook 视频资料 无监督学习&#xff…