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

相关文章
|
3月前
|
物联网 数据管理 Apache
拥抱IoT浪潮,Apache IoTDB如何成为你的智能数据守护者?解锁物联网新纪元的数据管理秘籍!
【8月更文挑战第22天】随着物联网技术的发展,数据量激增对数据库提出新挑战。Apache IoTDB凭借其面向时间序列数据的设计,在IoT领域脱颖而出。相较于传统数据库,IoTDB采用树形数据模型高效管理实时数据,具备轻量级结构与高并发能力,并集成Hadoop/Spark支持复杂分析。在智能城市等场景下,IoTDB能处理如交通流量等数据,为决策提供支持。IoTDB还提供InfluxDB协议适配器简化迁移过程,并支持细致的权限管理确保数据安全。综上所述,IoTDB在IoT数据管理中展现出巨大潜力与竞争力。
104 1
|
1月前
|
传感器 存储 架构师
构建基于 IoT 的废物管理系统:软件架构师指南
构建基于 IoT 的废物管理系统:软件架构师指南
70 9
|
1月前
|
Kubernetes 安全 微服务
使用 Istio 缓解电信 5G IoT 微服务 Pod 架构的安全挑战
使用 Istio 缓解电信 5G IoT 微服务 Pod 架构的安全挑战
50 8
|
1月前
|
Rust 资源调度 安全
为什么使用 Rust over C++ 进行 IoT 解决方案开发
为什么使用 Rust over C++ 进行 IoT 解决方案开发
64 7
|
3月前
|
存储 分布式计算 物联网
Apache IoTDB进行IoT相关开发实践
当今社会,物联网技术的发展带来了许多繁琐的挑战,尤其是在数据库管理系统领域,比如实时整合海量数据、处理流中的事件以及处理数据的安全性。例如,应用于智能城市的基于物联网的交通传感器可以实时生成大量的交通数据。据估计,未来5年,物联网设备的数量将达数万亿。物联网产生大量的数据,包括流数据、时间序列数据、RFID数据、传感数据等。要有效地管理这些数据,就需要使用数据库。数据库在充分处理物联网数据方面扮演着非常重要的角色。因此,适当的数据库与适当的平台同等重要。由于物联网在世界上不同的环境中运行,选择合适的数据库变得非常重要。 原创文字,IoTDB 社区可进行使用与传播 一、什么是IoTDB 我
173 9
Apache IoTDB进行IoT相关开发实践
|
3月前
|
Kubernetes 安全 微服务
使用 Istio 缓解电信 5G IoT 微服务 Pod 架构的安全挑战
在5G电信领域,Kubernetes集群中部署微服务至关重要,但也带来了重大的安全挑战。Istio作为一个强大的开源服务网格,能有效地管理这些微服务间的通信,通过其控制平面自动将Sidecar代理注入到各微服务Pod中,确保了安全且高效的通信。Istio的架构由数据平面和控制平面组成,其中Sidecar代理作为Envoy代理运行在每个Pod中,拦截并管理网络流量。此外,Istio支持多种Kubernetes发行版和服务,如EKS等,不仅增强了安全性,还提高了应用性能和可观测性。
74 0
使用 Istio 缓解电信 5G IoT 微服务 Pod 架构的安全挑战
|
3月前
|
Java 持续交付 项目管理
Maven是一款基于Apache许可的项目管理和构建自动化工具,在Java开发中极为流行。
Maven是一款基于Apache许可的项目管理和构建自动化工具,在Java开发中极为流行。它采用项目对象模型(POM)来描述项目,简化构建流程。Maven提供依赖管理、标准构建生命周期、插件扩展等功能,支持多模块项目及版本控制。在Java Web开发中,Maven能够自动生成项目结构、管理依赖、自动化构建流程并运行多种插件任务,如代码质量检查和单元测试。遵循Maven的最佳实践,结合持续集成工具,可以显著提升开发效率和项目质量。
52 1
|
3月前
|
Apache 开发者 Java
Apache Wicket揭秘:如何巧妙利用模型与表单机制,实现Web应用高效开发?
【8月更文挑战第31天】本文深入探讨了Apache Wicket的模型与表单处理机制。Wicket作为一个组件化的Java Web框架,提供了多种模型实现,如CompoundPropertyModel等,充当组件与数据间的桥梁。文章通过示例介绍了模型创建及使用方法,并详细讲解了表单组件、提交处理及验证机制,帮助开发者更好地理解如何利用Wicket构建高效、易维护的Web应用程序。
46 0
|
4月前
|
存储 分布式计算 物联网
Apache IoTDB进行IoT相关开发实践
The article introduces IoTDB, an open-source time-series database designed for efficient management of IoT-generated data. It addresses challenges like real-time integration of massive datasets and security. IoTDB supports high-performance storage,
142 0
Apache IoTDB进行IoT相关开发实践
|
3天前
|
缓存 负载均衡 JavaScript
探索微服务架构下的API网关模式
【10月更文挑战第37天】在微服务架构的海洋中,API网关犹如一座灯塔,指引着服务的航向。它不仅是客户端请求的集散地,更是后端微服务的守门人。本文将深入探讨API网关的设计哲学、核心功能以及它在微服务生态中扮演的角色,同时通过实际代码示例,揭示如何实现一个高效、可靠的API网关。

热门文章

最新文章

推荐镜像

更多