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.mzph.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…