fiwarekeystoneidentity-managementfiware-wilma

Fiware: How to restrict user access to specific entity for Orion Context Broker API using keystone & keypass


First of all, I'm using the Telefonica implementations of Identity Manager, Authorization PDP and PEP Proxy, instead of the Fiware reference implementations which are Keyrock, AuthZForce and Wilma PEP Proxy. The source code and reference documentation of each component can be found in the following GitHub repos:

GitHub /telefonicaid/fiware-keystone-spassword

GitHub /telefonicaid/fiware-keypass

GitHub /telefonicaid/fiware-pep-steelskin

Besides, I'm working with my own in-house installation of the components, NO Fi-Lab. In addition to security components, I've an IoT Agent-UL instance and an Orion Context Broker instance.

Starting from that configuration, I've created a domain in keystone (Fiware-Service) and a project inside the domain (Fiware-ServicePath). Then I've one device connected to the platform, sendding data to the IoT Agent behind the PEP Proxy. The whole device message is represented as a single Entity in Orion Context Broker.

So, the question is:

How can I restrict a specific keystone user to access only to the entity associated to this device, at the level of the Orion Context Broker API?

I know that I can allow/deny user acces to specific API via keystone Roles and XACML Policies but that implies that I should create one Policy per User-Device pair.

I could use some help with this, to know if I'm on the right way.


Solution

  • I do not think Access Control can be done to Orion without Security GEs. Each GE has a specific purpose and access control is not one of the Orion's purposes.

    As stated in the Security Considerations from Orion documentation:

    Orion doesn't provide "native" authentication nor any authorization mechanisms to enforce access control. However, authentication/authorization can be achieved the access control framework provided by FIWARE GEs.

    Also, there is something related in another link:

    Orion itself has no security. It’s designed to be run behind a proxy server which provides security and access control. Used within the FIWARE Lab, they run another service build on node.js, “PEP Proxy Wilma”, in front of it. Wilma checks that you have obtained a token from the FIWARE lab and put it in the headers.

    Besides, the link below can endorse my opinion about Orion and access control:

    Fiware-Orion: Access control on a per subscription basis

    My opinion is that you are in the right way using the other security components.

    About "create one Policy per User-Device pair" as you mention, maybe it would be better you thought about "group policies" instead.