TDengine 更多安全策略

在這里插入圖片描述

簡介

上一節我們介紹了 TDengine 安全部署配置建議,除了傳統的這些配置外,TDengine 還有其他的安全策略,例如 IP 白名單、審計日志、數據加密等,這些都是 TDengine Enterprise 特有功能,其中白名單功能在 3.2.0.0 版本首次發布,審計日志在 3.1.1.0 版本中首次發布,數據庫加密在 3.3.0.0 中首次發布,建議使用最新版本。

IP 白名單

IP 白名單是一種網絡安全技術,它使 IT 管理員能夠控制“誰”可以訪問系統和資源,提升數據庫的訪問安全性,避免外部的惡意攻擊。IP 白名單通過創建可信的 IP 地址列表,將它們作為唯一標識符分配給用戶,并且只允許這些 IP 地址訪問目標服務器。請注意,用戶權限與 IP 白名單是不相關的,兩者分開管理。下面是配置 IP 白名單的具體方法。

增加 IP 白名單的 SQL 如下。

create user test pass password [sysinfo value] [host host_name1[,host_name2]] 
alter user test add host host_name1

查詢 IP 白名單的 SQL 如下。

SELECT TEST, ALLOWED_HOST FROM INS_USERS;
SHOW USERS;

刪除 IP 白名單的命令如下。

ALTER USER TEST DROP HOST HOST_NAME1

說明

  • 開源版和企業版本都能添加成功,且可以查詢到,但是開源版本不會對 IP 做任何限制。
  • create user u_write pass 'taosdata1' host 'iprange1','iprange2',可以一次添加多個 ip range,服務端會做去重,去重的邏輯是需要 ip range 完全一樣
  • 默認會把 127.0.0.1 添加到白名單列表,且在白名單列表可以查詢
  • 集群的節點 IP 集合會自動添加到白名單列表,但是查詢不到。
  • taosadaper 和 taosd 不在一個機器的時候,需要把 taosadaper IP 手動添加到 taosd 白名單列表中
  • 集群情況下,各個節點 enableWhiteList 成一樣,或者全為 false,或者全為 true,要不然集群無法啟動
  • 白名單變更生效時間 1s,不超過 2s,每次變更對收發性能有些微影響(多一次判斷,可以忽略),變更完之后、影響忽略不計,變更過程中對集群沒有影響,對正在訪問客戶端也沒有影響(假設這些客戶端的 IP 包含在 white list 內)
  • 如果添加兩個 ip range,192.168.1.1/16(假設為 A),192.168.1.1/24(假設為 B),嚴格來說,A 包含了 B,但是考慮情況太復雜,并不會對 A 和 B 做合并
  • 要刪除的時候,必須嚴格匹配。也就是如果添加的是 192.168.1.1/24,要刪除也是 192.168.1.1/24
  • 只有 root 才有權限對其他用戶增刪 ip white list
  • 兼容之前的版本,但是不支持從當前版本回退到之前版本
  • x.x.x.x/32 和 x.x.x.x 屬于同一個 iprange,顯示為 x.x.x.x
  • 如果客戶端拿到的 0.0.0.0/0,說明沒有開啟白名單
  • 如果白名單發生了改變,客戶端會在 heartbeat 里檢測到。
  • 針對一個 user,添加的 IP 個數上限是 2048

審計日志

TDengine 先對用戶操作進行記錄和管理,然后將這些作為審計日志發送給 taosKeeper,再由 taosKeeper 保存至任意 TDengine 集群。管理員可通過審計日志進行安全監控、歷史追溯。TDengine 的審計日志功能開啟和關閉操作非常簡單,只須修改 TDengine 的配置文件后重啟服務。審計日志的配置說明如下。

taosd 配置

審計日志由數據庫服務 taosd 產生,其相應參數要配置在 taos.cfg 配置文件中,詳細參數如下表。

參數名稱參數含義
audit是否打開審計日志,1 為開啟,0 為關閉,默認值為 0。
monitorFqdn接收審計日志的 taosKeeper 所在服務器的 FQDN
monitorPort接收審計日志的 taosKeeper 服務所用端口
monitorCompaction上報數據時是否進行壓縮

taosKeeper 配置

在 taosKeeper 的配置文件 keeper.toml 中配置與審計日志有關的配置參數,如下表所示

參數名稱參數含義
auditDB用于存放審計日志的數據庫的名字,默認值為 “audit”,taosKeeper 在收到上報的審計日志后會判斷該數據庫是否存在,如果不存在會自動創建

數據格式

上報的審計日志格式如下

{"ts": timestamp,"cluster_id": string,"user": string,"operation": string,"db": string,"resource": string,"client_add": string,"details": string
}

表結構

taosKeeper 會依據上報的審計數據在相應的數據庫中自動建立超級表用于存儲數據。該超級表的定義如下

create stable operations(ts timestamp, details varchar(64000)user varchar(25), operation varchar(20), db varchar(65), resource varchar(193), client_add(25)) tags (clusterID varchar(64) );

其中

  1. db 為操作涉及的 database,resource 為操作涉及的資源。
  2. user 和 operation 為數據列,表示哪個用戶在該對象上進行了什么操作
  3. timestamp 為時間戳列,表示操作發生時的時間
  4. details 為該操作的一些補充細節,在大多數操作下是所執行的操作的 SQL 語句。
  5. client_add 為客戶端地址,包括 ip 和端口

操作列表

目前審計日志中所記錄的操作列表以及每個操作中各字段的含義(因為每個操作的施加者,即 user、client_add、時間戳字段在所有操作中的含義相同,下表不再描述)

操作OperationDBResourceDetails
create databasecreateDBdb nameNULLSQL
alter databasealterDBdb nameNULLSQL
drop databasedropDBdb nameNULLSQL
create stablecreateStbdb namestable nameSQL
alter stablealterStbdb namestable nameSQL
drop stabledropStbdb namestable nameSQL
create usercreateUserNULL被創建的用戶名用戶屬性參數, (password 除外)
alter useralterUserNULL被修改的用戶名修改密碼記錄被修改的參數和新值 (password 除外),其他操作記錄 SQL
drop userdropUserNULL被刪除的用戶名SQL
create topiccreateTopictopic 所在 DB創建的 topic 名字SQL
drop topiccropTopictopic 所在 DB刪除的 topic 名字SQL
create dnodecreateDnodeNULLIP:Port 或 FQDN:PortSQL
drop dnodedropDnodeNULLdnodeIdSQL
alter dnodealterDnodeNULLdnodeIdSQL
create mnodecreateMnodeNULLdnodeIdSQL
drop mnodedropMnodeNULLdnodeIdSQL
create qnodecreateQnodeNULLdnodeIdSQL
drop qnodedropQnodeNULLdnodeIdSQL
loginloginNULLNULLappName
create streamcreateStreamNULL所創建的 stream 名SQL
drop streamdropStreamNULL所刪除的 stream 名SQL
grant privilegesgrantPrivilegesNULL所授予的用戶SQL
remove privilegesrevokePrivilegesNULL被收回權限的用戶SQL
compact databasecompactdatabase nameNULLSQL
balance vgroup leaderbalanceVgroupLeadNULLNULLSQL
restore dnoderestoreDnodeNULLdnodeIdSQL
restribute vgrouprestributeVgroupNULLvgroupIdSQL
balance vgroupbalanceVgroupNULLvgroupIdSQL
create tablecreateTabledb nameNULLtable name
drop tabledropTabledb nameNULLtable name

查看審計日志

在 taosd 和 taosKeeper 都正確配置并啟動之后,隨著系統的不斷運行,系統中的各種操作(如上表所示)會被實時記錄并上報,用戶可以登錄 taosExplorer,點擊系統管理審計頁面,即可查看審計日志; 也可以在 TDengine CLI 中直接查詢相應的庫和表。

數據加密

TDengine 支持透明數據加密(Transparent Data Encryption,TDE),通過對靜態數據文件進行加密,阻止可能的攻擊者繞過數據庫直接從文件系統讀取敏感信息。數據庫的訪問程序是完全無感知的,應用程序不需要做任何修改和編譯,就能夠直接應用到加密后的數據庫,支持國標 SM4 等加密算法。在透明加密中,數據庫密鑰管理、數據庫加密范圍是兩個最重要的話題。TDengine 采用機器碼對數據庫密鑰進行加密處理,保存在本地而不是第三方管理器中。當數據文件被拷貝到其他機器后,由于機器碼發生變化,無法獲得數據庫密鑰,自然無法訪問數據文件。TDengine 對所有數據文件進行加密,包括預寫日志文件、元數據文件和時序數據文件。加密后,數據壓縮率不變,寫入性能和查詢性能僅有輕微下降。

配置密鑰

密鑰配置分離線設置和在線設置兩種方式。

方式一,離線設置。通過離線設置可為每個節點分別配置密鑰,命令如下。

taosd -y {encryptKey}

方式二,在線設置。當集群所有節點都在線時,可以使用 SQL 配置密鑰,SQL 如下。

create encrypt_key {encryptKey};

在線設置方式要求所有已經加入集群的節點都沒有使用過離線設置方式生成密鑰,否則在線設置方式會失敗,在線設置密鑰成功的同時也自動加載和使用了密鑰。

創建加密數據庫

TDengine 支持通過 SQL 創建加密數據庫,SQL 如下。

create database [if not exists] db_name [database_options]
database_options:database_option ...
database_option: {encrypt_algorithm {'none' |'sm4'}
}

主要參數說明如下。

  • encrypt_algorithm:指定數據采用的加密算法。默認是 none,即不采用加密。sm4 表示采用 SM4 加密算法

查看加密配置

用戶可通過查詢系統數據庫 ins_databases 獲取數據庫當前加密配置,SQL 如下。

select name, `encrypt_algorithm` from ins_databases;name              | encrypt_algorithm |
=====================================================power1                         | none              |power                          | sm4               |

查看節點密鑰狀態

通過以下的 SQL 命令參看節點密鑰狀態。

show encryptions;select * from information_schema.ins_encryptions;dnode_id   |           key_status           |
===============================================1 | loaded                         |2 | unset                          |3 | unknown                        |

key_status 有三種取值:

  • 當節點未設置密鑰時,狀態列顯示 unset。
  • 當密鑰被檢驗成功并且加載后,狀態列顯示 loaded。
  • 當節點未啟動,key 的狀態無法被探知時,狀態列顯示 unknown。

更新密鑰配置

當節點的硬件配置發生變更時,需要通過以下命令更新密鑰,與離線配置密鑰的命令相同。

taosd -y  {encryptKey}

更新密鑰配置,需要先停止 taosd,并且使用完全相同的密鑰,也即密鑰在數據庫創建后不能修改。

訪問官網

更多內容歡迎訪問 TDengine 官網

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/81798.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/81798.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/81798.shtml

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

相關文章

小白入門:GitHub 遠程倉庫使用全攻略

一、Git 核心概念 1. 三個工作區域 工作區(Working Directory):實際編輯文件的地方。 暫存區(Staging Area):準備提交的文件集合(使用git add操作)。 本地倉庫(Local…

[創業之路-370]:企業戰略管理案例分析-10-戰略制定-差距分析的案例之小米

戰略制定-差距分析的案例之小米 在戰略制定過程中,小米通過差距分析明確自身與市場機會之間的差距,并制定針對性戰略,實現快速發展。以下以小米在智能手機市場的機會差距分析為例,說明其戰略制定過程。 一、市場機會識別與差距分…

Index-AniSora模型論文速讀:基于人工反饋的動漫視頻生成

Aligning Anime Video Generation with Human Feedback 一、引言 論文開頭指出,盡管視頻生成模型不斷涌現,但動漫視頻生成面臨動漫數據稀缺和運動模式異常的挑戰,導致生成視頻存在運動失真和閃爍偽影等問題,難以滿足人類偏好。現…

第 4 章:網絡與總線——CAN / Ethernet / USB-OTG

本章目標: 深入理解三種關鍵通信總線(CAN、Ethernet、USB-OTG)的協議架構、硬件接口與軟件驅動 掌握 STM32(或同類 MCU)中各總線的寄存器配置、中斷/DMA 驅動框架 通過實戰案例,實現基于 CAN 總線的節點通信、基于 Ethernet 的 TCP/IP 通信,以及基于 USB-OTG 的虛擬串口…

數據結構-DAY05

一、棧的概念 1.棧是限定僅在表尾進行插入和刪除操作的線性表。先進后出、后進先出 棧頂:允許操作的一端 棧底:不允許操作的一端入棧,出棧。 棧分為:順序棧 鏈式棧 2.棧結構是在堆區創建的 3.優先級就是通過棧來解決的 先進后出…

leetcode 153. Find Minimum in Rotated Sorted Array

題目描述 分析 可以發現一個規律: 假如整個數組最后一個元素是x。 最小值左側(不含最小值自己)的元素全部大于x。 最小值右側(包含最小值自己,不包含x)的元素全部小于x。 如果整個數組是有序的&#x…

如何在 AOSP 中判斷一個源文件屬于哪個模塊(以 CameraService 為例)

如何在 AOSP 中判斷一個源文件屬于哪個模塊(以 CameraService 為例) 在 AOSP 開發中,經常需要修改底層 C 代碼(如 CameraService.cpp),但很多人會遇到一個問題: 我修改了某個 .cpp 文件&#x…

云原生主要架構模式

云原生(Cloud Native)是一種利用云計算的優勢來構建和運行可擴展、彈性和高效應用程序的方法。它不僅僅是技術的集合,更是一種架構和設計理念。本文將圍繞你提出的幾部分,深入探討云原生主要的架構模式,幫助你理解如何利用這些模式構建現代化的應用。 1. 服務化架構模式(…

深入理解MySQL結構與執行流程

標題:深入理解MySQL結構與執行流程 MySQL以其開源、靈活性和強大的功能成為了最受歡迎的關系型數據庫管理系統之一。無論是初創公司還是大型企業,都廣泛使用MySQL來存儲和管理數據。為了幫助大家更好地理解和優化MySQL的性能,本文將詳細講解…

Python web 開發 Flask HTTP 服務

Flask 是一個輕量級的 Web 應用框架,它基于 Python 編寫,特別適合構建簡單的 Web 應用和 RESTful API。Flask 的設計理念是提供盡可能少的約定和配置,從而讓開發者能夠靈活地構建自己的 Web 應用。 https://andi.cn/page/622189.html

BMVC2023 | 多樣化高層特征以提升對抗遷移性

Diversifying the High-level Features for better Adversarial Transferability 摘要-Abstract引言-Introduction相關工作-Related Work方法-Methodology實驗-Experiments結論-Conclusion 論文鏈接 GitHub鏈接 本文 “Diversifying the High-level Features for better Adve…

虛幻引擎5-Unreal Engine筆記之攝像頭camera

虛幻引擎5-Unreal Engine筆記之攝像頭camera code review! 目錄 第一部分:攝像頭的基礎概念 1.1 UE5 中攝像頭的定義與作用1.2 UE5 中攝像頭的類型與分類 第二部分:攝像頭的代碼結構與分類 2.1 攝像頭是類還是組件?2.2 組件的本質&#xff…

【大數據】MapReduce 編程-- PageRank--網頁排名算法,用于衡量網頁“重要性”-排序網頁

PageRank 是 Google 創始人拉里佩奇(Larry Page)和謝爾蓋布林(Sergey Brin)在 1998 年提出的一種網頁排名算法,用于衡量網頁“重要性”的一種方式。它是搜索引擎中用于排序網頁的一種基礎算法 一個網頁越是被其他重要…

React Flow 數據持久化:Django 后端存儲與加載的最佳實踐(含詳細代碼解析)

在構建 React Flow 應用時,前端呈現的節點與連線構成的可視化流程只是冰山一角,其背后的數據持久化與靈活調取才是確保應用穩定運行、支持用戶數據回溯與協作的關鍵。因此,后端存儲與加載 React Flow 信息的環節,就如同整個應用的…

深度學習中的歸一化:提升模型性能的關鍵因素

📌 友情提示: 本文內容由銀河易創AI(https://ai.eaigx.com)創作平臺的gpt-4-turbo模型輔助完成,旨在提供技術參考與靈感啟發。文中觀點或代碼示例需結合實際情況驗證,建議讀者通過官方文檔或實踐進一步確認…

Pandas:Series和DataFrame的概念、常用屬性和方法

本文目錄: 一、Series和Dataframe的概念二、創建Series對象三、創建Dataframe對象(一)Series1.Series的常用屬性總結如下:2.Series的常用方法總結如下: (二)Dataframe1.Dataframe的常用屬性2.Da…

數據中心Overlay解決方案

文檔圍繞數據中心 Overlay 解決方案展開,指出數據中心向大集中、虛擬化、云業務演進,傳統架構存在網絡規劃復雜、彈性不足、業務擴展受限等問題。Overlay 網絡在物理網絡上構建虛擬網絡,實現名址分離、網絡與物理解耦,支持業務靈活部署。方案采用VXLAN 技術(如 SDN 控制模…

SpringBoot 項目實現操作日志的記錄(使用 AOP 注解模式)

本文是博主在做關于如何記錄用戶操作日志時做的記錄,常見的項目中難免存在一些需要記錄重要日志的部分,例如權限和角色設定,重要數據的操作等部分。 博主使用 Spring 中的 AOP 功能,結合注解的方式,對用戶操作過的一些…

以太聯 - Intellinet 閃耀臺北 SecuTech 國際安全科技應用博覽會

2025 年 5 月 7 日至 9 日,臺北 SecuTech 國際安全科技應用博覽會現場熱鬧非凡,以太聯 - Intellinet 攜旗下前沿產品與解決方案精彩亮相,成為展會上一道亮麗的風景線,吸引了眾多業內人士的目光,收獲了廣泛關注與高度認…

【華為鴻蒙電腦】首款鴻蒙電腦發布:MateBook Fold 非凡大師 MateBook Pro,擎云星河計劃啟動

文章目錄 前言一、HUAWEI MateBook Fold 非凡大師(一)非凡設計(二)非凡顯示(三)非凡科技(四)非凡系統(五)非凡體驗 二、HUAWEI MateBook Pro三、預熱&#xf…