当前位置: 首页 > article >正文

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 官网

相关文章:

TDengine 更多安全策略

简介 上一节我们介绍了 TDengine 安全部署配置建议,除了传统的这些配置外,TDengine 还有其他的安全策略,例如 IP 白名单、审计日志、数据加密等,这些都是 TDengine Enterprise 特有功能,其中白名单功能在 3.2.0.0 版本…...

电子制造企业智能制造升级:MES系统应用深度解析

在全球电子信息产业深度变革的2025年,我国电子信息制造业正经历着增长与转型的双重考验。据权威数据显示,2025年一季度行业增加值同比增长11.5%,但智能手机等消费电子产量同比下降1.1%,市场竞争白热化趋势显著。叠加关税政策调整、…...

Java使用Collections集合工具类

1、Collections 集合工具类 Java 中的 Collections 是一个非常有用的工具类,它提供了许多静态方法来操作或返回集合。这个类位于 java.util 包中,主要包含对集合进行操作的方法,比如排序、搜索、线程安全化等。 Java集合工具类的使用&#x…...

磁盘空间不足,迁移Docker 数据目录

停止 Docker 服务。 sudo systemctl stop docker 将现有的 Docker 数据移动到新位置(例如 /home/docker-data)。 sudo mv /var/lib/docker /home/docker-data 在原位置创建一个指向新位置的符号链接。 sudo ln -s /home/docker-data /var/lib/dock…...

python打卡day33

知识点回顾: PyTorch和cuda的安装查看显卡信息的命令行命令(cmd中使用)cuda的检查简单神经网络的流程 数据预处理(归一化、转换成张量)模型的定义 继承nn.Module类定义每一个层定义前向传播流程 定义损失函数和优化器定…...

目标检测新突破:用MSBlock打造更强YOLOv8

文章目录 YOLOv8的现状与挑战YOLO-MS的MSBlock简介MSBlock的工作原理MSBlock的优势利用MSBlock改进YOLOv8替换YOLOv8主干网络中的部分模块代码实现:替换CSP模块为MSBlock在YOLOv8的颈部(Neck)中插入MSBlock代码实现:在颈部区域插入MSBlock实验结果与分析实验设置性能对比性…...

同城上门预约服务系统案例分享,上门服务到家系统都有什么功能?这个功能,很重要!

你以为上门按摩这类平台只要做好接单派单就万事大吉了?大错特错!市面上90%的系统只会吹嘘基础功能,却对最关键的财税问题避而不谈。很多创业者直到被税务稽查才发现,自己每年都在白白多交几倍的冤枉税!举个例子&#x…...

docker面试题(5)

Docker安全么 Docker 利用了 Linux 内核中很多安全特性来保证不同容器之间的隔离,并且通过签名机制来对镜像进行 验证。大量生产环境的部署证明,Docker 虽然隔离性无法与虚拟机相比,但仍然具有极高的安全性。 如何清理后台停止的容器 可以使用…...

为什么需要在循环里fetch?

假设有多个设备连接在后端,数量不定,需要按个读回状态,那么就要在循环里fetch了. 此函数非常好用,来自于国内一个作者,时间久了,忘记了来源,抱歉. export default async function fetchWithTimeout(resource, options {}) {const { timeout 1000 } options;const controll…...

用 UniApp 开发 TilePuzzle:一个由 CodeBuddy 主动驱动的拼图小游戏

我正在参加CodeBuddy「首席试玩官」内容创作大赛,本文所使用的 CodeBuddy 免费下载链接:腾讯云代码助手 CodeBuddy - AI 时代的智能编程伙伴 起心动念:从一个小游戏想法开始 最近在使用 UniApp 做练手项目的时候,我萌生了一个小小…...

HJ101 输入整型数组和排序标识【牛客网】

文章目录 零、原题链接一、题目描述二、测试用例三、解题思路四、参考代码 零、原题链接 HJ101 输入整型数组和排序标识 一、题目描述 二、测试用例 三、解题思路 基本思路:   选择一个排序算法,然后根据标识确定升序还是降序;具体思路&a…...

在Linux debian12系统上使用go语言以及excelize库处理excel数据

go-do-excel 一、介绍 myBook.xlsx表中,B列是“全部IP地址“,A列是“分发成功的IP地址“,本脚本采用go语言编写,通过读取myBook.xlsx中B列“全部IP地址“和A列“分发成功的IP地址“数据,计算出“分发失败的IP地址“数据,将其写入到C列。 二、编程语言 本脚本在Linux De…...

Appium 的 enableMultiWindows 参数

引言 在移动应用自动化测试中,​​混合应用(Hybrid App)​​ 和多窗口场景(如分屏、弹窗、多 WebView)的处理一直是技术难点。Appium 的 enableMultiWindows 参数为这类场景提供了关键支持,但在实际使用中常…...

【Python/Tkinter】实现程序菜单

程序源码: import tkinter as tk from tkinter.colorchooser import askcolordef set_colour():saskcolor(color"red",title"选择背景色")root.config(bgs[1])class Application(tk.Frame):def __init__(self,masterNone):super().__init__(ma…...

“轩辕杯“云盾砺剑 CTF挑战赛web方向题解

目录 ezjs 签到 ezssrf1.0 ezflask ezrce ezsql1.0 ezweb ezjs 看到这个,直接访问getflag.php,POS提交score 100000000000 签到 6个小模块,我直接放bp的结果 1 2 3 4 5 6 ezssrf1.0 ?urlhttp:127.0.1/FFFFF11111AAAAAggggg.php也可…...

常用UI自动化测试框架

🔍 常用UI自动化测试框架全览(Web / 移动 / 桌面 / AI驱动) UI(用户界面)测试框架是一类用于自动化测试应用图形界面的工具,帮助开发者和测试人员验证界面元素的功能性、交互性和视觉一致性。本文系统梳理了…...

场景化应用实战系列六:检索问答系统

目录 景化应用实战系列六:检索问答系统 一、目标设定 二、关键知识点梳理 三、案例讲解与实战操作 1. 数据准备与预处理 2. 倒排表构建 3. 文本相似度计算 4. 检索问答系统实现 5. 系统优化与改进 一、目标设定 构建一个高效的检索问答系统,能…...

选择合适的AI模型:解析Trae编辑器中的多款模型及其应用场景

在当今数字化时代,人工智能技术飞速发展,各种AI模型层出不穷,为人们的工作和生活带来了极大的便利。Trae编辑器作为一款集成了多种先进AI模型的工具,为用户提供了丰富的选择,以满足不同场景下的多样化需求。本文将深入…...

已经 上线 Vue 项目 国际化 i18n 中译英

省流说明:本文不是把项目中译英,只是抽取js、vue文件里的中文到JSON文件中,en.json里的value还是需要自己翻译成英文 ### 安装 `npm install vve-i18n-cli -D` ### package.json 里添加脚本命令,简化命令使用 ```json { "scripts": { "i18n": …...

RISC-V 开发板 MUSE Pi Pro Gstreamer 编码UVC及MIPI CSI摄像头视频流

视频讲解: RISC-V 开发板 MUSE Pi Pro Gstreamer 编码UVC及MIPI CSI摄像头视频流 Gstreamer 在视频编码、解码、保存等场景下非常常用,其基于插件化的架构,可以玩的很花,进迭时空的Spacemit GStreamer 支持 spacemitdec 专有插件&…...

Android 直播播放器FFmpeg静态库编译实战指南(NDK r21b)

一、环境准备与验证 1.1 必要组件安装 # Ubuntu环境依赖 sudo apt update sudo apt install -y git make automake autoconf libtool pkg-config curl unzip# NDK r21b下载 mkdir -p ~/android && cd ~/android wget https://dl.google.com/android/repository/andro…...

【RA-Eco-RA2L1-48PIN】ADC 电压表

【RA-Eco-RA2L1-48PIN】ADC 电压表 本文介绍了 RA-Eco-RA2L1-48PIN 开发板通过瑞萨 e2 Studio 灵活软件包(FSP)编程实现 ADC 串口采集电压的项目设计,包括 串口通信、打印字符串、UART 和 ADC 配置、关键代码、ADC 电压转换、电压值串口打印…...

Oracle 数据文件被删除后使用rman备份恢复过程

有个环境,因空间使用率100%,现场直接误删了数据文件,log记录恢复过程下 SQL > select file#,name,checkpoint_change# from v$datafile; FILE# NAME CHECKPOINT_CHANGE# ------…...

KS107BG型超声体模的结构及性能

KS107BG型超声体模适用于工作频率在5~10MHz之间的B超设备的性能检测。 一、外部结构 体模外壳和底座由有机玻璃加工组装而成,底面板上开有两个直径36mm的圆孔,其上封有2mm厚的真空橡皮,作为抽气及注射保养液的入口。体模外壳外表…...

visual studio重新安装如何修改共享组件、工具和SDK路径方案

安装了VsStudio后,如果自己修改了Shared路径,当卸载旧版本,需要安装新版本时发现,之前的Shared路径无法进行修改,这就很坑了 但是却遇到了路径无法修改的问题…真让人头大,当然不修改也可以,有时候&#x…...

目标检测评估指标mAP详解:原理与代码

目标检测评估指标mAP详解:原理与代码 目标检测评估指标mAP详解:原理与代码一、前言:为什么需要mAP?二、核心概念解析2.1 PR曲线(Precision-Recall Curve)2.2 AP计算原理 三、代码实现详解3.1 核心函数ap_pe…...

【风控】模型算法区分度指标KS

一、KS指标的定义原理 背景 KS(Kolmogorov–Smirnov)原本用于检验样本分布与理论分布或两个样本分布是否一致。风控建模中,将“好样本”(Good)与“坏样本”(Bad)的模型输出概率看作两组经验分布…...

道可云人工智能每日资讯|浙江省人民政府印发《关于支持人工智能创新发展的若干措施》

道可云元宇宙每日简报(2025年5月21日)讯,今日元宇宙新鲜事有: 浙江省人民政府印发《关于支持人工智能创新发展的若干措施》 为抢占人工智能发展制高点,打造全球人工智能创新发展高地,浙江省人民政府于近日…...

win11下jenkins+docker+maven自动部署springboot项目

win11下jenkinsdockermaven自动部署springboot项目 一、前置软件安装二、jenkins配置三、springboot项目准备四、jenkins打包部署项目到本地docker中五、jenkins打包部署项目到远程服务器docker中 一、前置软件安装 docker安装 需要开启wsl,以管理员身份运行docke…...

密码学标准(Cryptography Standards)介绍

密码学标准(Cryptography Standards)是为确保信息安全传输、存储和处理而制定的一系列技术规范和协议,广泛应用于通信、金融、互联网等领域。以下从分类、主流标准、应用场景和发展趋势四个方面进行详细介绍: 一、密码学标准的分类 密码学标准可根据技术原理和应用场景分…...