Orion Context Broker实体访问安全:如何限制仅创建者修改实体属性
实现方案
你可以通过FIWARE生态内的Keyrock + Wilma PEP + Orion自带的属性透传能力组合实现该权限管控,完整步骤如下:
步骤1:配置Orion实体自动注入创建者标识
首先开启Orion的服务端上下文提供者能力,在实体创建请求触发时自动注入entity-owner属性,属性值取请求头携带的用户ID(由Wilma PEP转发的Keyrock认证后的用户标识,通常是X-User-Id请求头)。
修改Orion启动参数,添加以下配置:
- Orion.ldContext=https://uri.etsi.org/ngsi-ld/v1/ngsi-ld-core-context.jsonld - Orion.corsOrigin=* - Orion.authnHeader=X-User-Id
这样所有经过Wilma转发的合法请求,Orion都会自动从请求头读取用户ID,在新实体创建时自动追加entity-owner属性,该属性默认设为只读,普通用户无法通过更新接口修改。
步骤2:在Keyrock中配置细粒度权限规则
Keyrock支持基于请求路径和请求体内容的细粒度权限校验,你需要新增一条针对Orion更新接口的权限策略:
- 权限作用接口:
POST /v2/entities/*/attrs,PATCH /v2/entities/*/attrs所有实体更新类接口 - 校验规则:请求体中待更新的实体对应的
entity-owner属性值,必须等于请求携带的X-User-Id头对应的用户ID - 权限生效范围:仅给普通用户绑定该策略,管理员账号可以保留全量操作权限
步骤3:配置Wilma PEP的校验策略
在Wilma的配置文件中开启level=advanced的权限校验模式,让PEP在转发请求到Orion之前,先代理请求到Keyrock做策略校验:
pep: port: 1026 proxyHost: orion proxyPort: 1026 idm: host: keyrock port: 3000 ssl: false auth: enabled: true fineGrained: true
配置完成后重启Wilma服务即可生效。
验证逻辑
你可以用测试账号A创建一个实体,再用测试账号B发起该实体的更新请求,预期会返回403 Forbidden错误,只有账号A发起的更新请求能正常执行。
注意:如果有批量实体更新需求,你可以额外在Keyrock中添加例外策略,给指定运维账号开放批量操作权限即可。
内容的提问来源于stack exchange,提问作者gasp
相关产品推荐
相关产品推荐

