我正在使用 Keyrock、Wilma 和 AuthZForce 来保护 FIWARE 系统(Orion、Quantum Leap)的安全。我的目标是基于FIWARE服务实现细粒度的访问控制。
我们系统中的每个实体都属于一个服务,由 Fiware-Service 标头标识。我想根据用户角色限制对这些服务的访问:
**User1**: Can only access *fiwareservice1*
**User2**: Can access *fiwareservice2* and *fiwareservice3*
**User3**: Can access all *services*
我正在努力在 AuthZForce 中创建适当的 XACML 策略来强制执行这些规则。有人成功实施了类似的设置吗?
如果这种方法不理想或者是否有其他方法可以在 FIWARE 中管理基于服务的访问控制,我愿意接受建议。
为此,您不需要 Authzforce,您可以使用 Wilma 作为 PEP,使用 Keyrock 作为 IDM/PDP。在 wilma 中,您需要为
authorization.header
设置适当的配置 - NGSILD-Tenant
或 fiware-service
- 像这样:
config.authorization = {
enabled: true,
pdp: 'idm',
header: fiware-service
location: {
protocol: 'http',
host: 'keyrock',
port: 3000,
path: ''
},
azf: {
custom_policy: undefined,
},
};
如果您使用的是 Docker 映像,则这是由
PEP_PROXY_TENANT_HEADER
环境变量控制的。
在 Keyrock 中,您可以定义使用
Authorization Service header
的权限,因此您可以为 User1、User2 和 User3 制定单独的规则。