TDengine 安全部署配置建議

在這里插入圖片描述

背景

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 compatibleproxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection $connection_upgrade;# Forwarded headersproxy_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.pswp.cn/web/80644.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/80644.shtml
英文地址,請注明出處:http://en.pswp.cn/web/80644.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

在Cursor中啟用WebStorm/IntelliJ風格快捷鍵

在Cursor中啟用WebStorm/IntelliJ風格快捷鍵 方法一:使用預置快捷鍵方案 打開快捷鍵設置 Windows/Linux: Ctrl K → Ctrl SmacOS: ? K → ? S 搜索預設方案 在搜索框中輸入keyboard shortcuts,選擇Preferences: Open Keyboard Shortcuts (JSON) …

python打卡day30@浙大疏錦行

知識點回顧: 導入官方庫的三種手段導入自定義庫/模塊的方式導入庫/模塊的核心邏輯:找到根目錄(python解釋器的目錄和終端的目錄不一致) 作業:自己新建幾個不同路徑文件嘗試下如何導入 具體操作步驟: 在桌面…

【kafka】基本命令

創建 Kafka Topic 的命令 以下是創建 Kafka Topic 的幾種常用方法&#xff1a; 1. 使用 kafka-topics.sh 基礎命令&#xff08;Kafka 自帶工具&#xff09; bin/kafka-topics.sh --create \--bootstrap-server <broker地址:端口> \--topic <topic名稱> \--parti…

編程速遞:適用于 Delphi 12.3 的 FMX Linux 現已推出

Embarcadero非常高興地宣布&#xff0c;用于使用Delphi構建Linux客戶端應用程序的FMX Linux UI庫再次在RAD Studio 12.3版本以及RAD Studio 12.2版本中提供支持&#xff0c;同時也適用于更早的版本。 作為RAD Studio的一個附加庫&#xff0c;FMX Linux為開發面向Linux的圖形用…

通過實例講解螺旋模型

目錄 一、螺旋模型的核心概念 二、螺旋模型在電子商城系統開發中的應用示例 第 1 次螺旋:項目啟動與風險初探

vue3 vite 路由

如路由是這種格式 http://localhost:7058/admin/product/brand路由配置如下 import { createRouter, createWebHistory } from vue-router import HomeView from ../views/HomeView.vue import NProgress from nprogress; import nprogress/nprogress.css; import {errorRour…

【Redis】Hash 存儲相比 String 存儲的優勢

在 Redis 中&#xff0c;Hash 存儲相比 String 存儲具有以下 優勢&#xff0c;特別適用于某些特定場景&#xff1a; ? 1. 更節省內存&#xff08;尤其適合存儲對象&#xff09; Hash 內部使用壓縮列表&#xff08;ziplist&#xff09;或哈希表實現&#xff0c;在數據量較小時…

CSS詳解:特性、選擇器與優先級

CSS詳解&#xff1a;特性、選擇器與優先級 目錄 CSS詳解&#xff1a;特性、選擇器與優先級一、CSS的核心特性1. 層疊性&#xff08;Cascading&#xff09;2. 繼承性&#xff08;Inheritance&#xff09;3. 優先級&#xff08;Specificity&#xff09;4. 響應式設計5. 動畫與過渡…

《算法導論(第4版)》閱讀筆記:p86-p90

《算法導論(第4版)》學習第 19 天&#xff0c;p83-p85 總結&#xff0c;總計 3 頁。 一、技術總結 無。 二、英語總結(生詞&#xff1a;2) 1. inkling (1)inkling: inclen(“utter in an undertone&#xff0c;低聲說話”) c. a hint(提示)&#xff1b;a slight knowledg…

nginx概念及使用

一、Nginx 核心概念 Nginx&#xff08;發音為 "engine-x"&#xff09;是一個高性能、開源的 Web 服務器和反向代理服務器&#xff0c;由俄羅斯工程師伊戈爾?賽索耶夫&#xff08;Igor Sysoev&#xff09;于 2004 年開發&#xff0c;最初用于解決當時高并發場景下 Ap…

2025藍橋杯JAVA編程題練習Day8

1. 路徑 題目描述 小藍學習了最短路徑之后特別高興&#xff0c;他定義了一個特別的圖&#xff0c;希望找到圖 中的最短路徑。 小藍的圖由 2021 個結點組成&#xff0c;依次編號 1 至 2021。 對于兩個不同的結點 a, b&#xff0c;如果 a 和 b 的差的絕對值大于 21&#xff0…

【趙渝強老師】Memcached的路由算法

Memcached支持兩種不同方式的客戶端路由算法&#xff0c;即&#xff1a;求余數Hash算法和一致性Hash算法。下面分別進行介紹。 一、 求余數的路由算法 求余數Hash算法的客戶端路由是對插入數據的鍵進行求余數&#xff0c;根據余數來決定存儲到哪個Memcached實例。 視頻講解如…

NLP學習路線圖(一): 線性代數(矩陣運算、特征值分解等)

引言&#xff1a;語言與矩陣的奇妙邂逅 在自然語言處理&#xff08;NLP&#xff09;的魔法世界里&#xff0c;每個詞語都像被施了變形術的精靈&#xff0c;在數學的殿堂中翩翩起舞。當我們用"king - man woman queen"這樣的向量魔法破解語義密碼時&#xff0c;線性…

BUUCTF PWN刷題筆記(持續更新!!)

ciscn_2019_c_1 64位&#xff0c;沒有開啟保護。點進去沒發現明顯的漏洞函數&#xff0c;考慮泄露libc基地址的rop構造。先看看有多少gadget 估計也夠用了。puts函數只接受一個參數&#xff0c;觀看匯編看看用的哪個寄存器傳輸的參數。 用的是edi。但是我們怎么找到so的版本呢…

Java EE初階——線程安全

1. 線程的狀態 1. 線程狀態分類&#xff08;Thread.State 枚舉&#xff09; Java 定義了 6 種線程狀態&#xff0c;這些狀態均由 java.lang.Thread.State 枚舉表示&#xff1a; NEW&#xff08;新建&#xff09; 線程對象已創建&#xff0c;但尚未調用 start() 方法。此時線程…

Vue 3.0中響應式依賴和更新

響應式依賴和更新是Vue 3.0中最重要的機制&#xff0c;其核心代碼如下&#xff0c;本文將結合代碼對這個設計機制作出一些解釋。 // 全局依賴存儲&#xff1a;WeakMap<target, Map<key, Set<effect>>> const targetMap new WeakMap();// 當前活動的副作用函…

一、內存調優

一、內存調優 什么是內存泄漏 監控Java內存的常用工具 內存泄露的常見場景 內存泄露的解決方案 內存泄露與內存溢出的區別 內存泄露&#xff1a;在Java中如果不再使用一個對象&#xff0c;但是該對象依然在GC ROOT的引用鏈上&#xff0c;這個對象就不會被垃圾回收器回收&…

Linux /etc/rc.d/init.d/

在傳統的 SysV init 系統中&#xff0c;服務啟動腳本通常位于 /etc/rc.d/init.d/ 目錄下。這些腳本可以直接執行以啟動、停止或重啟服務&#xff0c;并且可以接受參數如 start, stop, status 等。 如果你想知道位于 /etc/rc.d/init.d/ 目錄下的某個腳本文件實際上指向哪里,如果…

S7 200 smart連接Profinet轉ModbusTCP網關與西門子1200PLC配置案例

控制要求&#xff1a;使用MODBUSTCP通信進行兩臺PLC之間的數據交換&#xff0c;由于改造現場不能改動程序&#xff0c;只留出了對應的IQ地址。于是客戶決定使用網關進行通訊把數據傳到plc。 1、讀取服務器端40001~40005地址中的數據&#xff0c;放入到VW200~VW208中&#xff1…

打破傳統倉庫管理困局:WMS如何重構出入庫全流程

引言 在制造業與零售業高速發展的今天&#xff0c;倉庫管理仍普遍面臨效率低、錯發漏發頻發、庫存數據滯后等痛點。人工登記導致30%的錯單率&#xff0c;貨位混亂讓揀貨耗時增加50%&#xff0c;而賬實不符引發的二次采購成本更吞噬著企業利潤。如何突破傳統管理桎梏&#xff1…