首页 > 其他分享 >使用Apache IoTDB进行IoT相关开发的架构设计与功能实现(11)

使用Apache IoTDB进行IoT相关开发的架构设计与功能实现(11)

时间:2023-08-28 21:31:29浏览次数:51  
标签:11 架构设计 路径 角色 IoT 用户 write USER 权限

账户管理报表

IoTDB可以为用户提供账号权限管理操作,保障数据安全。接下来我将通过以下具体示例向朋友们展示基本的用户权限管理操作,介绍详细的 SQL 语法和用法详细信息。

基本概念

用户

用户是数据库的合法用户。用户对应于唯一的用户名,并具有密码作为身份验证方式。在使用数据库之前,一个人必须首先提供合法的用户名和密码才能使自己成为用户。

特权

数据库提供了多种操作,并非所有用户都可以执行所有操作。如果用户可以执行操作,则称该用户具有执行该操作的权限。权限可分为数据管理权限(如添加、删除和修改数据)和权限管理权限(如创建和删除用户和角色、授予和撤销权限等)。数据管理权限通常需要一个路径来限制其有效范围,该路径是根植于路径相应节点的子树。

角色

角色是一组特权,具有唯一的角色名称作为标识符。一个用户通常对应于一个真实身份(例如流量调度员),而一个真实身份可能对应于多个用户。这些具有相同真实身份的用户往往具有相同的权限。角色是可以统一管理此类特权的抽象。

默认用户

初始安装后,IoTDB 中有一个默认用户:root,默认密码为 root。此用户是管理员用户,无法删除并具有所有权限。既不能向 root 用户授予新权限,也不能删除 root 用户拥有的权限。

权限管理操作示例

根据示例数据,IoTDB的样本数据可能属于不同的发电组,如ln、sgcc等。不同的发电组不希望其他人获取自己的数据库数据,因此我们需要在组层隔离数据权限。

创建用户

我们可以为 ln 和 sgcc 组创建两个用户,分别名为 ln_write_user 和 sgcc_write_user,两个密码都是write_pwd。SQL 语句为:

CREATE USER ln_write_user 'write_pwd'
CREATE USER sgcc_write_user 'write_pwd'

然后使用以下 SQL 语句向用户显示:

LIST USER

从下面显示的结果可以看出,已创建两个用户:

使用Apache IoTDB进行IoT相关开发的架构设计与功能实现(11)_SQL

授予用户权限

此时,虽然已经创建了两个用户,但他们没有任何权限,因此他们无法对数据库进行操作。例如,我们使用ln_write_user在数据库中写入数据,SQL 语句为:

INSERT INTO root.ln.wf01.wt01(timestamp,status) values(1509465600000,true)

SQL 语句将不会执行,相应的错误提示如下:

使用Apache IoTDB进行IoT相关开发的架构设计与功能实现(11)_数据_02

现在,我们授予两个用户对相应存储组的写入权限,并尝试再次写入数据。SQL 语句为:

GRANT USER ln_write_user PRIVILEGES 'INSERT_TIMESERIES' on root.ln
GRANT USER sgcc_write_user PRIVILEGES 'INSERT_TIMESERIES' on root.sgcc
INSERT INTO root.ln.wf01.wt01(timestamp, status) values(1509465600000, true)

执行结果如下:

使用Apache IoTDB进行IoT相关开发的架构设计与功能实现(11)_数据库_03

其他说明

用户、特权和角色之间的关系

角色是一组特权,特权和角色都是用户的属性。也就是说,一个角色可以有多个权限,一个用户可以有多个角色和特权(称为用户自己的特权)。

目前,IoTDB中不存在冲突的权限,因此用户的真正权限是用户自身权限和用户角色权限的结合。也就是说,要确定用户是否可以执行操作,取决于用户自己的权限之一或用户角色的权限是否允许该操作。用户自己的特权和用户角色的特权可能会重叠,但这并不重要。

需要注意的是,如果用户本身具有权限(对应于操作 A),并且其角色包含相同的权限,则仅从用户本身撤消权限并不能禁止用户执行操作 A,因为有必要从角色中撤消该权限,或者从用户中撤消该角色。同样,仅从用户角色撤消权限并不能禁止用户执行操作 A。

同时,对角色的更改会立即反映在拥有角色的所有用户上。例如,向角色添加某些权限将立即为拥有该角色的所有用户提供相应的权限,删除某些权限也会剥夺相应用户的权限(除非用户本身具有这些权限)。

系统中包含的特权列表

**系统中包含的特权列表**

特权名称

解释

SET_STORAGE_GROUP

创建时间序列;设置存储组;路径相关

INSERT_TIMESERIES

插入数据;路径相关

UPDATE_TIMESERIES

更新数据;路径相关

READ_TIMESERIES

查询数据;路径相关

DELETE_TIMESERIES

删除数据或时间序列;路径相关

CREATE_USER

创建用户;路径独立

DELETE_USER

删除用户;路径独立

MODIFY_PASSWORD

修改所有用户的密码;路径独立;(没有这个特权的人,还是可以换自己的屁股。

LIST_USER

列出所有用户;列出用户的权限;列出具有三种操作权限的用户角色;路径独立

GRANT_USER_PRIVILEGE

授予用户权限;路径独立

REVOKE_USER_PRIVILEGE

撤销用户权限;路径独立

GRANT_USER_ROLE

授予用户角色;路径独立

REVOKE_USER_ROLE

撤销用户角色;路径独立

CREATE_ROLE

创建角色;路径独立

DELETE_ROLE

删除角色;路径独立

LIST_ROLE

列出所有角色;列出角色的权限;列出所有拥有角色的用户的三种操作权限;路径独立

GRANT_ROLE_PRIVILEGE

授予角色权限;路径独立

REVOKE_ROLE_PRIVILEGE

撤销角色特权;路径独立

用户名限制

IoTDB指定用户名的字符长度不能小于4,并且用户名不能包含空格。

密码限制

IoTDB指定密码的字符长度不能小于4,并且密码不能包含空格。密码使用 MD5 加密。

角色名称限制

IoTDB指定角色名称的字符长度不能小于4,并且角色名称不能包含空格。

标签:11,架构设计,路径,角色,IoT,用户,write,USER,权限
From: https://blog.51cto.com/u_15123639/7267406

相关文章

  • FX110: 花点时间寻找适合自己的交易风格,优化利润
    交易风格通常与交易者的个性相关。在选择交易策略和制定交易计划之前,对性格和生活方式进行内部反思非常重要 。这是因为使用与你的性格相反的交易风格会导致日后难以坚持你的交易计划。当交易者找到最适合他们的交易风格时,这种风格通常会持续很长时间。在交易中的表现取决于你如何......
  • 梅科尔工作室-IoT-南向开发第四次培训笔记
    当使用MQTT协议进行开发时,以下是一些值得注意的方面:选择MQTT代理:MQTT代理是负责消息传递的中间件,你可以选择使用开源的MQTT代理,如EclipseMosquitto、EMQX等,或者使用云服务提供商的MQTT服务。定义主题(Topic)结构:在设计时,你需要合理地定义主题结构,以便发布者和订阅者可以有效地进行......
  • 在移动硬盘上安装Win11系统(不使用工具)
    一、准备镜像文件1、前往官网下载Win11镜像文件。Win11官网:DownloadWindows11(microsoft.com)2、装载Win11镜像找到Win11镜像。右键点击装载之后再此电脑里面就能看见一个DVD驱动器,记住这个驱动器的盘符,这里为F盘。二、划分分区1、选择磁盘按Windows键+R键打开运行,......
  • 基于友晶科技 FPGA开发板 DE2-115、DE1-SOC 和 DE10-STANDARD 的VGA图片显示(ADV7123)
      选择一个图 调整像素 转换成mif文件   ......
  • Redis从入门到放弃(11):雪崩、击穿、穿透
    1、前言Redis作为一款高性能的缓存数据库,为许多应用提供了快速的数据访问和存储能力。然而,在使用Redis时,我们不可避免地会面对一些常见的问题,如缓存雪崩、缓存穿透和缓存击穿。本文将深入探讨这些问题的本质,以及针对这些问题的解决方案。2、缓存雪崩2.1、问题描述在某个时间......
  • 优雅的对旋转编码器消抖(EC11,正交)
    环境:STM32SDK:Arduino(烧录了Arduino的bootloader)旋转编码器:EC11此处只处理正交编码器的A,B。在网上随意找的一个截图事宜,观看此图后,默认各位了解EC11的工作逻辑。  消抖的核心思路:A脚设置为上升下降沿均会进中断,下降上升一个变换周期,判断这个周期的A脚,B脚的始末状......
  • Win11开发嵌入式Linux与交叉编译的一些轮子
    由于我不愿意直接使用ubuntu环境来开发Linux,所以在实践中我摸索出一套能够在最新的win11下调试Linux开发板的方法。wsl2准备首先我们需要安装wsl2。安装教程使用USBIP读写SD卡我们需要在linux环境下对开发板使用的TF卡进行读写。由于wsl2不支持直接挂载宿主机的usb设备,并且其......
  • 20230711 java.lang.ClassLoader
    介绍java.lang.ClassLoaderpublicabstractclassClassLoader类加载器APIstaticClassLoadergetPlatformClassLoadergetSystemClassLoader获取系统类加载器,即用于加载第一个应用类的类加载器SystemResourcegetSystemResourcegetSystemResourceAsStreamgetSys......
  • P2486 [SDOI2011] 染色 题解
    P2486[SDOI2011]染色神仙树剖题。题意给你一棵树,每个点都有颜色,支持下面两种操作:路径染色。路径颜色段数量查询。树剖部分我们看到树上问题,不好处理,所以想办法给他树剖搞一搞,给他转化成序列的操作。我们树剖就是正常的树剖,然后我们考虑如何维护这个颜色序列。我......
  • Educational Codeforces Round 119
    今天只有3题,有点遗憾,D题几乎一眼切,但是时间不够,分类讨论没写完,vp结束几分钟后写出来。A题开始还以为要并查集,后面发现只有一个N不行B题漏写括号WA一发C题感觉不好写啊,因为直接计算可能会爆,所以要先从后往前,确定边界,然后就是跟普通的填数差不多,二分一下。又是找串,还得特别小心......