news 2026/7/6 4:49:00

Eclipse Ditto 的权限策略

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Eclipse Ditto 的权限策略

在Eclipse Ditto中有专门管理物模型读取和写入的Policies。

完整权限管理的数据如下:

{ "policyId": "my-demo:device001", "imports": {}, "entries": { "DEFAULT": { "subjects": { "nginx:ditto": { "type": "generated" } }, "resources": { "thing:/": { "grant": [ "READ", "WRITE" ], "revoke": [] }, "policy:/": { "grant": [ "READ", "WRITE" ], "revoke": [] }, "message:/": { "grant": [ "READ", "WRITE" ], "revoke": [] } }, "importable": "implicit" } } }

一、整体解释

这份policyId: "my-demo:device001"是数字孪生设备权限控制规则: 允许身份nginx:ditto对当前设备、权限自身、消息通道拥有全部读写权限,是本地开发调试用的全开放权限模板。

1. 顶层字段释义

json

"policyId": "my-demo:device001"
  • 策略唯一 ID,规范和 Thing 设备 ID 同名,一一绑定;
  • 你的设备my-demo:device001policyId填这个值,设备才会套用这套权限。

json

"imports": {}
  • 权限导入,空对象代表不复用其他策略
  • 复杂多角色场景可以填入其他 policyId,复用别人写好的权限规则。

json

"entries": { ... }

核心权限主体:所有角色、资源、授予权限全部写在 entries 内部,一个 entry 代表一组身份 + 权限规则。

2. "DEFAULT" 权限分组(entries 下的 key)

json

"DEFAULT": { "subjects": { ... }, // 访问人/客户端身份 "resources": { ... }, // 能操作哪些资源 "importable": "implicit" }
  • DEFAULT:分组名称,自定义命名,这里默认分组;
  • importable: "implicit":允许其他 Policy 自动导入复用这条权限规则。

2.1 subjects:访问身份(谁能访问设备)

json

"subjects": { "nginx:ditto": { "type": "generated" } }
  1. nginx:ditto:身份标识(基础账号格式用户名:密码) 就是你浏览器、前端 TS 代码、curl 请求登录 Ditto 用的账号密码:账号 ditto,密码 ditto。
  2. "type": "generated":内置自动生成的基础鉴权账号类型,本地 Docker 环境默认自带。

作用:只有使用ditto/ditto账号发起的请求,才会匹配下面 resources 里的读写权限。

2.2 resources:资源路径 + 授予 / 回收权限(核心管控)

resources 里每一条,代表一类可访问资源grant允许权限,revoke禁止权限(这里全为空,无禁止项)

thing:/数字孪生设备本体资源

json

"thing:/": { "grant": ["READ", "WRITE"], "revoke": [] }
  • thing:/代表整台 my-demo:device001 设备全部内容:attributes 静态档案、features 传感器 / 执行器数据;
  • READ:允许读取设备所有数据;
  • WRITE:允许修改压力、温度、阀门状态、新增属性等所有写操作;
  • 效果:前端可以读料仓负压,也能下发指令开关风机阀门。

policy:/权限策略本身资源

json

"policy:/": { "grant": ["READ", "WRITE"], "revoke": [] }
  • policy:/代表这份权限配置自己;
  • 读写权限:允许查看、编辑、删除当前这条 Policy 规则;
  • 如果你去掉WRITE,就只能看权限,不能修改权限配置。

message:/消息通道资源

json

"message:/": { "grant": ["READ", "WRITE"], "revoke": [] }
  • 管控设备上下行消息、WebSocket 事件流、MQTT 指令收发;
  • READ:允许订阅 WS 实时事件(你的 Vue+Three.js 前端接收料仓压力变更全靠这个权限);
  • WRITE:允许下发控制指令、手动发送模拟消息(Ditto Explorer 里 Send Message 功能依赖这个权限)。

2.3 revoke 字段

所有"revoke": []为空数组 =没有任何权限被禁止; 如果需要精细化限制,比如禁止写执行器,可以在这里加入权限做回收。

三、整套权限的实际业务效果(对应你的料仓项目)

前端使用账号ditto/ditto访问 Ditto:

  1. ✅ 读取设备静态信息(型号、车间)、实时负压温度;
  2. ✅ 修改传感器压力数值、下发阀门 / 风机控制指令;
  3. ✅ 订阅 WebSocket 实时事件,Three.js 自动刷新 3D 模型数据;
  4. ✅ 在 Ditto Explorer 里编辑、修改这条 Policy 权限本身;
  5. ✅ 使用 Send Message 模拟设备上报、下发控制报文;

四、拓展:精细化权限改造示例(生产环境不能全开放)

比如车间操作员只能看传感器数据,不能操作阀门,修改 resources:

json

"resources": { "thing:/features/sensor": {"grant":["READ"],"revoke":[]}, // 仅允许读压力温度 "thing:/features/actuator": {"grant":[],"revoke":["WRITE"]}, // 禁止写执行器(不能开关阀门) "thing:/attributes": {"grant":["READ"],"revoke":[]}, "message:/": {"grant":["READ"],"revoke":["WRITE"]} // 只能收事件,不能下发指令 }

五、关键概念速记

  1. subjects= 谁来访问(账号 / 客户端)
  2. resources= 能操作什么(设备数据 / 权限 / 消息)
  3. grant= 允许做什么(READ 读 / WRITE 写)
  4. policyId 和 Thing 的 policyId 绑定,决定设备用哪套访问规则
  5. 本地调试全开放权限(你当前这份)适合学习;工厂生产环境必须拆分只读 / 操作账号,收紧 WRITE 写权限。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/6 4:48:52

K8s 配置热更新:配置变了,应用不一定真的生效

K8s 配置热更新:配置变了,应用不一定真的生效 一、配置更新不是自动魔法 K8s ConfigMap 和 Secret 很方便,但很多人误以为配置改了,应用就会立刻使用新值。实际上,环境变量注入的配置不会自动变化,挂载文件…

作者头像 李华
网站建设 2026/7/6 4:47:27

Claude API 成本入门:Token 消耗怎么控制

第一章 重新理解 Token 计费:你的钱到底花在了哪里 想控制成本,第一步就得彻底搞明白Claude API到底是怎么收费的。很多人只盯着模型单价算账,结果月底一看账单,比预期高出30%到50%——钱都花在了那些容易被忽略的细节上。 官方定…

作者头像 李华
网站建设 2026/7/6 4:44:15

GHelper终极指南:如何彻底掌握华硕笔记本性能调控

GHelper终极指南:如何彻底掌握华硕笔记本性能调控 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook, Zenbook, Expert…

作者头像 李华
网站建设 2026/7/6 4:41:38

3大核心功能:GHelper华硕笔记本性能控制完全指南

3大核心功能:GHelper华硕笔记本性能控制完全指南 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook, Zenbook, Expertb…

作者头像 李华
网站建设 2026/7/6 4:41:11

FindSomething:3分钟打造你的终极上网安全卫士

FindSomething:3分钟打造你的终极上网安全卫士 【免费下载链接】FindSomething 基于chrome、firefox插件的被动式信息泄漏检测工具 项目地址: https://gitcode.com/gh_mirrors/fi/FindSomething 在数字时代,个人信息如同散落沙滩的贝壳&#xff0…

作者头像 李华