Apache IoTDB开发之Watermark工具

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: Watermark工具有两个功能:IoTDB查询结果的Watermark嵌入和可疑数据的Watermark检测。

Watermark工具

该工具有两个功能:

  1. IoTDB查询结果的Watermark嵌入
  2. 可疑数据的Watermark检测

1. Watermark嵌入

1.1 配置

默认情况下,IoTDB中的Watermark处于禁用状态。要启用Watermark嵌入,首先要修改配置文件中的以下字段:iotdb-engine.properties

名字 解释
watermark_module_opened true启用IoTDB服务器的水印嵌入; 以禁用false
watermark_secret_key 碘丁苯*2019@Beijing 自定义密钥
watermark_bit_string 100101110100 要嵌入的 0-1 位字符串
watermark_method GroupBasedLSBMethod(embed_row_cycle=2,embed_lsb_num=5) 指定水印算法及其参数

笔记:

  • watermark_module_opened:如果要启用Watermark嵌入,请将其设置为 true
  • watermark_secret_key:不允许使用字符“&”。对密钥的长度没有限制。一般来说,密钥越长,入侵者的门槛就越高。
  • watermark_bit_string:位字符串的长度没有限制(除了它不应该为空)。但请注意,如果位串太短,则很难在水印检测阶段达到所需的显著性级别。
  • watermark_method:现在只支持基于组的LSBMethod,所以实际上你只能调整此方法的两个参数,即和。embed_row_cycleembed_lsb_num
  • 它们都应该是正整数。
  • embed_row_cycle控制带水印的行的比例。越小,带水印的行的比例越大。当等于 1 时,每一行都有水印。embed_row_cycleembed_row_cycle
  • GroupBasedLSBMethod使用LSB嵌入。 控制可用于水印嵌入的最低有效位数。越大,数据点的变化范围越大。embed_lsb_numembed_lsb_num
  • watermark_secret_key,并且应对可能的攻击者保密。也就是说,您有责任照顾.watermark_bit_stringwatermark_methodiotdb-engine.properties

1.2 使用示例

第 1 步。创建新用户 Alice,授予读取权限和查询

默认情况下,新创建的用户不使用水印。所以查询结果是原始数据。

  1. .\start-client.bat -u root -pw root
  2. create user Alice 1234
  3. grant user Alice privileges 'READ_TIMESERIES' on root.vehicle
  4. exit
  5. .\start-client.bat -u Alice -pw 1234
  6. select * from root
  7. +-----------------------------------+------------------+
  8. | Time|root.vehicle.d0.s0|
  9. +-----------------------------------+------------------+
  10. | 1970-01-01T08:00:00.001+08:00| 21.5|
  11. | 1970-01-01T08:00:00.002+08:00| 22.5|
  12. | 1970-01-01T08:00:00.003+08:00| 23.5|
  13. | 1970-01-01T08:00:00.004+08:00| 24.5|
  14. | 1970-01-01T08:00:00.005+08:00| 25.5|
  15. | 1970-01-01T08:00:00.006+08:00| 26.5|
  16. | 1970-01-01T08:00:00.007+08:00| 27.5|
  17. | 1970-01-01T08:00:00.008+08:00| 28.5|
  18. | 1970-01-01T08:00:00.009+08:00| 29.5|
  19. | 1970-01-01T08:00:00.010+08:00| 30.5|
  20. | 1970-01-01T08:00:00.011+08:00| 31.5|
  21. | 1970-01-01T08:00:00.012+08:00| 32.5|
  22. | 1970-01-01T08:00:00.013+08:00| 33.5|
  23. | 1970-01-01T08:00:00.014+08:00| 34.5|
  24. | 1970-01-01T08:00:00.015+08:00| 35.5|
  25. | 1970-01-01T08:00:00.016+08:00| 36.5|
  26. | 1970-01-01T08:00:00.017+08:00| 37.5|
  27. | 1970-01-01T08:00:00.018+08:00| 38.5|
  28. | 1970-01-01T08:00:00.019+08:00| 39.5|
  29. | 1970-01-01T08:00:00.020+08:00| 40.5|
  30. | 1970-01-01T08:00:00.021+08:00| 41.5|
  31. | 1970-01-01T08:00:00.022+08:00| 42.5|
  32. | 1970-01-01T08:00:00.023+08:00| 43.5|
  33. | 1970-01-01T08:00:00.024+08:00| 44.5|
  34. | 1970-01-01T08:00:00.025+08:00| 45.5|
  35. | 1970-01-01T08:00:00.026+08:00| 46.5|
  36. | 1970-01-01T08:00:00.027+08:00| 47.5|
  37. | 1970-01-01T08:00:00.028+08:00| 48.5|
  38. | 1970-01-01T08:00:00.029+08:00| 49.5|
  39. | 1970-01-01T08:00:00.030+08:00| 50.5|
  40. | 1970-01-01T08:00:00.031+08:00| 51.5|
  41. | 1970-01-01T08:00:00.032+08:00| 52.5|
  42. | 1970-01-01T08:00:00.033+08:00| 53.5|
  43. +-----------------------------------+------------------+

第 2 步。授予watermark_embedding

用法:grant watermark_embedding to Alice

请注意,您可以使用 向多个用户授予watermark_embedding。grant watermark_embedding to user1,user2,...

只有 root 可以运行此命令。将根权限watermark_embedding给 Alice 后,Alice 的所有查询结果都会加Watermark。

  1. .\start-client.bat -u root -pw root
  2. grant watermark_embedding to Alice
  3. exit
  4. .\start-client.bat -u Alice -pw 1234
  5. select * from root
  6. +-----------------------------------+------------------+
  7. | Time|root.vehicle.d0.s0|
  8. +-----------------------------------+------------------+
  9. | 1970-01-01T08:00:00.001+08:00| 21.5|
  10. | 1970-01-01T08:00:00.002+08:00| 22.5|
  11. | 1970-01-01T08:00:00.003+08:00| 23.500008|
  12. | 1970-01-01T08:00:00.004+08:00| 24.500015|
  13. | 1970-01-01T08:00:00.005+08:00| 25.5|
  14. | 1970-01-01T08:00:00.006+08:00| 26.500015|
  15. | 1970-01-01T08:00:00.007+08:00| 27.5|
  16. | 1970-01-01T08:00:00.008+08:00| 28.500004|
  17. | 1970-01-01T08:00:00.009+08:00| 29.5|
  18. | 1970-01-01T08:00:00.010+08:00| 30.5|
  19. | 1970-01-01T08:00:00.011+08:00| 31.5|
  20. | 1970-01-01T08:00:00.012+08:00| 32.5|
  21. | 1970-01-01T08:00:00.013+08:00| 33.5|
  22. | 1970-01-01T08:00:00.014+08:00| 34.5|
  23. | 1970-01-01T08:00:00.015+08:00| 35.500004|
  24. | 1970-01-01T08:00:00.016+08:00| 36.5|
  25. | 1970-01-01T08:00:00.017+08:00| 37.5|
  26. | 1970-01-01T08:00:00.018+08:00| 38.5|
  27. | 1970-01-01T08:00:00.019+08:00| 39.5|
  28. | 1970-01-01T08:00:00.020+08:00| 40.5|
  29. | 1970-01-01T08:00:00.021+08:00| 41.5|
  30. | 1970-01-01T08:00:00.022+08:00| 42.500015|
  31. | 1970-01-01T08:00:00.023+08:00| 43.5|
  32. | 1970-01-01T08:00:00.024+08:00| 44.500008|
  33. | 1970-01-01T08:00:00.025+08:00| 45.50003|
  34. | 1970-01-01T08:00:00.026+08:00| 46.500008|
  35. | 1970-01-01T08:00:00.027+08:00| 47.500008|
  36. | 1970-01-01T08:00:00.028+08:00| 48.5|
  37. | 1970-01-01T08:00:00.029+08:00| 49.5|
  38. | 1970-01-01T08:00:00.030+08:00| 50.5|
  39. | 1970-01-01T08:00:00.031+08:00| 51.500008|
  40. | 1970-01-01T08:00:00.032+08:00| 52.5|
  41. | 1970-01-01T08:00:00.033+08:00| 53.5|
  42. +-----------------------------------+------------------+

第 3 步。撤销爱丽丝的watermark_embedding

用法:revoke watermark_embedding from Alice

请注意,您可以使用 撤消多个用户的watermark_embedding。revoke watermark_embedding from user1,user2,...

只有 root 可以运行此命令。根从 Alice 撤销watermark_embedding后,Alice 的所有查询结果再次为原始结果。

2. 水印检测

detect-watermark.sh并为不同的平台提供。detect-watermark.bat

用法: ./detect-watermark.sh [文件路径] [秘密键] [水印位字符串] [embed_row_cycle] [embed_lsb_num] [alpha] [columnIndex] [数据类型: int/float/double]

示例:./detect-watermark.sh /home/data/dump1.csv IoTDB*2019@Beijing 100101110100 2 5 0.05 1 浮点数

参数 解释
文件路径 /home/data/dump1.csv 可疑数据文件路径
秘密密钥 碘丁苯*2019@Beijing 请参阅水印嵌入部分
水印位字符串 100101110100 请参阅水印嵌入部分
embed_row_cycle 2 请参阅水印嵌入部分
embed_lsb_num 5 请参阅水印嵌入部分
阿尔法 0.05 显著性水平
列索引 1 指定要检测的一列数据
数据类型 指定检测到的列的数据类型;整数/浮点数/双精度

注意:

  • filePath:您可以使用导出-csv工具生成此类数据文件。第一行是标题,第一列是时间。文件中的数据如下所示:
时间 root.vehicle.d0.s1 root.vehicle.d0.s1
1970-01-01T08:00:00.001+08:00 100
... ... ...
  • watermark_secret_key、 ,并且应与嵌入阶段中使用的一致。watermark_bit_stringembed_row_cycleembed_lsb_num
  • alpha:它应该在 [0,1] 的范围内。水印检测基于显著性检验。越小,检测出没有水印的数据被嵌入水印的概率越低,因此检测数据中是否存在水印的结果的可信度就越高。alpha
  • columnIndex:它应该是一个正整数。
相关文章
|
1天前
|
测试技术 Apache Windows
如何使用apache的ab压力测试小工具传参数
该内容是关于在Windows环境下使用PHPStudy中的Apache集成的ab工具进行性能测试的简要教程。
24 9
|
6天前
|
数据可视化 Linux Apache
CentOS部署Apache Superset大数据可视化BI分析工具并实现无公网IP远程访问
CentOS部署Apache Superset大数据可视化BI分析工具并实现无公网IP远程访问
|
6天前
|
机器学习/深度学习 分布式计算 大数据
一文读懂Apache Beam:统一的大数据处理模型与工具
【4月更文挑战第8天】Apache Beam是开源的统一大数据处理模型,提供抽象化编程模型,支持批处理和流处理。它提倡"一次编写,到处运行",可在多种引擎(如Spark、Dataflow、Flink)上运行。Beam的核心特性包括抽象化概念(PCollection、PTransform和PipelineRunner)、灵活性(支持多种数据源和转换)和高效执行。它广泛应用在ETL、实时流处理、机器学习和大数据仓库场景,助力开发者轻松应对数据处理挑战。
29 1
|
6天前
|
监控 测试技术 Linux
性能工具之 Apache Bench 入门使用
ab 全称为:apache bench,ab 为小型压力工具,对于在 Linux 中简单压测 HTTP 接口轻巧灵活。
30 1
|
6天前
|
存储 分布式计算 Hadoop
一文了解Apache Hudi架构、工具和最佳实践
一文了解Apache Hudi架构、工具和最佳实践
158 0
|
6天前
|
SQL 关系型数据库 MySQL
Apache StreamPark系列教程第二篇——项目打包和开发
Apache StreamPark系列教程第二篇——项目打包和开发
98 0
|
6天前
|
Apache 流计算
Apache Flink教程----2.本地开发
Apache Flink教程----2.本地开发
46 0
|
6天前
|
数据可视化 BI Apache
大数据可视化BI分析工具Apache Superset实现公网远程访问
大数据可视化BI分析工具Apache Superset实现公网远程访问
|
6天前
|
Dubbo 应用服务中间件 Apache
电子好书发您分享《Apache Dubbo 微服务开发从入门到精通》
电子好书发您分享《Apache Dubbo 微服务开发从入门到精通》
143 1
|
6月前
|
分布式计算 Apache 流计算
官宣!流计算开发管理框架 StreamPark 成功进入 Apache 孵化器
官宣!流计算开发管理框架 StreamPark 成功进入 Apache 孵化器

推荐镜像

更多