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

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

账户管理报表

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

基本概念

用户

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

特权

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

角色

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

默认用户

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

权限管理操作示例

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

创建用户

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

  1. CREATE USER ln_write_user 'write_pwd'
  2. CREATE USER sgcc_write_user 'write_pwd'

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

  1. LIST USER

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

授予用户权限

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

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

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

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

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

执行结果如下:

其他说明

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

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

目前,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,并且角色名称不能包含空格。

相关文章
|
6月前
|
Dubbo Java 应用服务中间件
Apache ShenYu 架构学习指南
Apache ShenYu 是一款高性能、插件化的微服务API网关,基于Spring WebFlux + Reactor 构建,支持多协议、动态配置与实时数据同步。本指南以通俗类比和实战路径,带你深入理解其架构设计、核心流程与源码实现,助力快速掌握并参与贡献。
956 12
|
7月前
|
数据采集 运维 数据可视化
AR 运维系统与 MES、EMA、IoT 系统的融合架构与实践
AR运维系统融合IoT、EMA、MES数据,构建“感知-分析-决策-执行”闭环。通过AR终端实现设备数据可视化,实时呈现温度、工单等信息,提升运维效率与生产可靠性。(238字)
|
6月前
|
存储 消息中间件 Kafka
Confluent 首席架构师万字剖析 Apache Fluss(二):核心架构
原文:https://jack-vanlightly.com/blog/2025/9/2/understanding-apache-fluss 作者:Jack Vanlightly 翻译:Wayne Wang@腾讯 译注:Jack Vanlightly 是一位专注于数据系统底层架构的知名技术博主,他的文章以篇幅长、细节丰富而闻名。目前 Jack 就职于 Confluent,担任首席技术架构师,因此这篇 Fluss 深度分析文章,具备一定的客观参考意义。译文拆成了三篇文章,本文是第二篇。
704 19
|
网络协议 Java 应用服务中间件
框架源码私享笔记(01)Tomcat核心架构功能 | 配置详解
本文首先分享了《活出意义来》一书序言中的感悟,强调成功如同幸福,不是刻意追求就能得到,而是全心投入时的副产品。接着探讨了Tomcat的核心功能与架构解析,包括网络连接器(Connector)和Servlet容器(Container),并介绍了其处理HTTP请求的工作流程。文章还详细解释了Tomcat的server.xml配置文件,涵盖了从顶级容器Server到子组件Connector、Engine、Host、Context等的配置参数及作用,帮助读者理解Tomcat的内部机制和配置方法。
|
12月前
|
SQL 分布式数据库 Apache
网易游戏 x Apache Doris:湖仓一体架构演进之路
网易游戏 Apache Doris 集群超 20 个 ,总节点数百个,已对接内部 200+ 项目,日均查询量超过 1500 万,总存储数据量 PB 级别。
1027 3
网易游戏 x Apache Doris:湖仓一体架构演进之路
|
运维 供应链 前端开发
中小医院云HIS系统源码,系统融合HIS与EMR功能,采用B/S架构与SaaS模式,快速交付并简化运维
这是一套专为中小医院和乡镇卫生院设计的云HIS系统源码,基于云端部署,采用B/S架构与SaaS模式,快速交付并简化运维。系统融合HIS与EMR功能,涵盖门诊挂号、预约管理、一体化电子病历、医生护士工作站、收费财务、药品进销存及统计分析等模块。技术栈包括前端Angular+Nginx,后端Java+Spring系列框架,数据库使用MySQL+MyCat。该系统实现患者管理、医嘱处理、费用结算、药品管控等核心业务全流程数字化,助力医疗机构提升效率和服务质量。
708 4
|
算法 前端开发 定位技术
地铁站内导航系统解决方案:技术架构与核心功能设计解析
本文旨在分享一套地铁站内导航系统技术方案,通过蓝牙Beacon技术与AI算法的结合,解决传统导航定位不准确、路径规划不合理等问题,提升乘客出行体验,同时为地铁运营商提供数据支持与增值服务。 如需获取校地铁站内智能导航系统方案文档可前往文章最下方获取,如有项目合作及技术交流欢迎私信我们哦~
1048 1
|
存储 智能硬件
CPU的定义与功能与架构
CPU(中央处理器)是计算机的核心部件,负责执行程序指令、控制数据传输和进行运算。它能处理算术与逻辑运算,并协调其他硬件协同工作。x86架构源于英特尔,适用于PC和服务器,采用复杂指令集;ARM架构则由Acorn等公司开发,广泛用于移动设备和嵌入式系统,采用精简指令集,功耗低且能效比高。
1628 5
|
存储 消息中间件 人工智能
基于 Apache RocketMQ 的 ApsaraMQ Serverless 架构升级
基于 Apache RocketMQ 的 ApsaraMQ Serverless 架构升级
327 0
|
存储 SQL Apache
Apache Doris 开源最顶级基于MPP架构的高性能实时分析数据库
Apache Doris 是一个基于 MPP 架构的高性能实时分析数据库,以其极高的速度和易用性著称。它支持高并发点查询和复杂分析场景,适用于报表分析、即席查询、数据仓库和数据湖查询加速等。最新发布的 2.0.2 版本在性能、稳定性和多租户支持方面有显著提升。社区活跃,已广泛应用于电商、广告、用户行为分析等领域。
Apache Doris 开源最顶级基于MPP架构的高性能实时分析数据库

推荐镜像

更多