- From: Ulf Bjorkengren <ulfbjorkengren@geotab.com>
- Date: Fri, 14 Feb 2020 09:31:39 +0100
- To: "Schildt Sebastian (CR/AEX1)" <Sebastian.Schildt@de.bosch.com>
- Cc: Isaac Agudo Ruiz <isaac@lcc.uma.es>, Adnan.Bekan@bmwgroup.com, public-automotive <public-automotive@w3.org>
- Message-ID: <CAHfMbK9GbRNv7BGsZz5_jGaamaMUvYL=pp3=Fr3fB38G92pUig@mail.gmail.com>
On vacation today, back in the discussion next week. It seems we are converging:) BR Ulf On Thu, Feb 13, 2020, 23:23 Schildt Sebastian (CR/AEX1) < Sebastian.Schildt@de.bosch.com> wrote: > Thank you, that makes stuff more clear to me. So basically “AGT Server” is > the IAM backend. That makes sense (to me J ). > > > > Then my view would still be, that “roles” should only live in the AGT > world. I agree with @Isaac about the usefulness of roles, just my > conclusion what it means for the system architecture would be (I think) > different. Modelling-vise roles can take away some complexity and give > structure to the different access rights, which is good. What is lost, is > some flexibility (compared to describe everything explicitly, who can > access what rooms/data), which on the other hand may make the system hard > to handle. > > > > So what I would like is to model a system with the concept of “roles”, > because as Isaac pointed out, that is quite useful. At the same time I > think, the actual implementation inside a vehicle should be as dumb/simple > as possible. One rationale is, that updates here are more difficult. While > actual consumers of the out API _*might*_ live in domains in a vehicle, > where updates might be done App-style “just like that”, I assume the > VISS/AT server to be in a more trusted part of the system (as it has some > bindings to in-vehicle sensors and actors), so at the very least at the > system level, which is harder to update. When leaving out the roles out > here, because all access rights are explicitly listed in the AT tokens, it > takes complexity out of the in-vehicle implementation while maintaining > maximum flexibility. The roles can live in the AGT/IAM backend, which can > flatten arbitrarily complex role concepts into AT tokens. As a model, > think of the backend as “code generator”: It takes the nicely modelled > roles thingy and compiles an easily processable token for the in-vehicle > side. > > > > Mit freundlichen Grüßen / Best regards > > > *Dr. Sebastian Schildt * > Communication and Network Technology (DS1) (CR/AEX1) > Robert Bosch GmbH | Renningen | 70465 Stuttgart | GERMANY | www.bosch.com > Tel. +49 711 811-15765 | Mobile +49 173 7124227 | > Sebastian.Schildt@de.bosch.com > > Registered Office: Stuttgart, Registration Court: Amtsgericht Stuttgart, > HRB 14000; > Chairman of the Supervisory Board: Franz Fehrenbach; Managing Directors: > Dr. Volkmar Denner, > Prof. Dr. Stefan Asenkerschbaumer, Dr. Michael Bolle, Dr. Christian > Fischer, Dr. Stefan Hartung, > Dr. Markus Heyn, Harald Kröger, Christoph Kübel, Rolf Najork, Uwe Raschke, > Peter Tyroller > > > *Von:* Ulf Bjorkengren <ulfbjorkengren@geotab.com> > *Gesendet:* Donnerstag, 13. Februar 2020 15:00 > *An:* Schildt Sebastian (CR/AEX1) <Sebastian.Schildt@de.bosch.com> > *Cc:* Isaac Agudo Ruiz <isaac@lcc.uma.es>; Adnan.Bekan@bmwgroup.com; > public-automotive <public-automotive@w3.org> > *Betreff:* Re: Answers to chat comments > > > > Hi Sebastian, > > > > the reason I included the "role" is that I believe it can be used to tie > the access control subsystem together with a policy document/subsystem that > is also being discussed in the W3C automotive group. > > If I am wrong on that it could be removed. > > > > The AGT server is supposed to live in the cloud, while the AT server is > deployed on the same vehicle as the Gen2 server. > > A client first goes to the AGT server, where it is properly authenticated, > and where it also provides input on which vehicle it is asking access to > (VIN). If all goes well, the AGT server returns a signed AGT token to the > client, with which it goes to the AT server on the vehicle, inputs the > token, and requested scope, permission (and role in the token). To assess > whether the request should be granted or not, the AT server may use a > policy document, which could contain access profiles per "role", etc. > > If all goes well here also, the client gets the signed token that will > later be used in requests to the bouncer:). > > > > This model with an AGT server and an AT server is inherited from VIWI , > thanks to the generosity of VW who open sourced it. > > > > This access control model with AGT and AT servers is already available in > the Gen2 implementation project found at > https://github.com/MEAE-GOT/W3C_VehicleSignalInterfaceImpl. > > Some details differ from my latest proposal, but the basic architecture > model is there. > > You are very welcome to have a look at it, and also to help move it > forward:). > > > > BR > > Ulf > > > > On Thu, Feb 13, 2020 at 2:17 PM Schildt Sebastian (CR/AEX1) < > Sebastian.Schildt@de.bosch.com> wrote: > > Hi Ulf, > > > > I like the “validate” approach. It basically gives us the opportunity to > define “restricted” areas, and it even allows for both extremes: Everything > is free, or everything is restricted. > > > > I am not yet clear why here: > > “scope”: “path” > “permission”: “z”, where z is either “read-only” or “read-write” > “role”: Y, where Y is either an integer, enum value, or string (open > design choice) > > > > It needs “role”, but I think it is because I am still confused in your > model about the difference of Access Grant Token, Access grant Token > Server, Access Token and Access token Server. I tried reading the Github > issue and the Gen2 document, but maybe you can still line out for me, what > lives where. > > > > I assume a VISS client has a (JWT) Access token, that is checked by the > server. Here I still do not need the reason to encode (at least as > mandatory) a role, if all permissions are explicit (because my thinking > model is still, a backend service would have “flattened” it from some > internally roles) . But I am confused where the AGT and AGT server live in > your architecture. > > > > Mit freundlichen Grüßen / Best regards > > > *Dr. Sebastian Schildt * > Communication and Network Technology (DS1) (CR/AEX1) > Robert Bosch GmbH | Renningen | 70465 Stuttgart | GERMANY | www.bosch.com > Tel. +49 711 811-15765 | Mobile +49 173 7124227 | > Sebastian.Schildt@de.bosch.com > > Registered Office: Stuttgart, Registration Court: Amtsgericht Stuttgart, > HRB 14000; > Chairman of the Supervisory Board: Franz Fehrenbach; Managing Directors: > Dr. Volkmar Denner, > Prof. Dr. Stefan Asenkerschbaumer, Dr. Michael Bolle, Dr. Christian > Fischer, Dr. Stefan Hartung, > Dr. Markus Heyn, Harald Kröger, Christoph Kübel, Rolf Najork, Uwe Raschke, > Peter Tyroller > > *Von:* Ulf Bjorkengren <ulfbjorkengren@geotab.com> > *Gesendet:* Donnerstag, 13. Februar 2020 10:54 > *An:* Schildt Sebastian (CR/AEX1) <Sebastian.Schildt@de.bosch.com> > *Cc:* Isaac Agudo Ruiz <isaac@lcc.uma.es>; Adnan.Bekan@bmwgroup.com; > public-automotive <public-automotive@w3.org> > *Betreff:* Re: Answers to chat comments > > > > This discussion encouraged me to update my access control proposal as > found here > > https://github.com/w3c/automotive/issues/322 > > > > BR > > Ulf > > > > On Thu, Feb 13, 2020 at 9:34 AM Ulf Bjorkengren <ulfbjorkengren@geotab.com> > wrote: > > Hi Sebastian, > > I like your analogy:). > > And in my story there is no difference in that the guests will have to > come with a signed list of which rooms they want to visit. > > Going back to my original proposal, the only difference is that the > bouncer only requires the guests to show the list for certain rooms (like > the kings more private rooms). > > By just adding one line in the root of the tree, “validate”: “read-write”, > the stories actually become identical, the bouncer will require a list > signed by the king by all visitors, for all rooms. > > But at the same time it gives flexibility in that for certain rooms the > bouncer do not require a list, and for some the bouncer only require the > list if the guest plan to stay over the night (write), not for day visits > (read). > > The concept of roles can still be utilized, in the model described in > chapter 6 of the Gen2 Core spec the guest would have to tell (and prove) > the AGT-server not only its name, but also the role it wants. In the > contact thereafter with the AT-server the guest name and role is on the > (first) list signed by the king, and this server then uses this trusted > information together with a policy document the king has provided it to > assess whether the request for rooms to visit shall be granted to a guest > with that role. If accepted this results in the signed list the guest > brings to the bouncer. > > So I would say that we are aligned in the general concept, the difference > is whether the bouncer shall require a signed list for all rooms per > default, or whether the king shall be able to instruct the bouncer to leave > some rooms unchecked (or only check stayover guests). > > BR > > Ulf > > > > > > On Wed, Feb 12, 2020 at 4:13 PM Schildt Sebastian (CR/AEX1) < > Sebastian.Schildt@de.bosch.com> wrote: > > Hi Ulf, > > > > I think turning this around does not necessarily means to be less open. > Yes, in our use cases we always require/use “mandatory” access control, > however in practice this would not preclude to for example configure parts > of the tree “free for all” (i.e. you can use them if you can reach the vis > server port). That would be like OBD, where the access control model is: If > you have (in case of OBD physical) access, you can get a certain > standardized set of information. In that case the only access/Security kind > of information in the tree nodes would be “public-writable” or > “public-readable” > > > > In another use case you might have a certain amount of access right, if > you run in a specific domain/runtime environment. For examples sake maybe I > am on an autonomous driving ECU, I might assume all > programs/runnable/whatever in that domain have full access. > > > > For some shared ECUs I might really have fine-grained access controls on a > per-app basis. > > > > The main difference here is: We do not provide the bouncer (VIS server) > with a complete list of names and which rooms every guy might access > beforehand, but instead every guest brings his own list of rooms signed > and sealed by the king himself. Whether I got my papers from the king > directly, or whether I just have a default set, because I am member of the > royal guard does not concern the bouncer. Ok, I stop: Let’s not > overstretch the metaphor here J Another advantage is, you can also revoke > those rights, limit them in time etc… > > > > > > Mit freundlichen Grüßen / Best regards > > > *Dr. Sebastian Schildt * > Communication and Network Technology (DS1) (CR/AEX1) > Robert Bosch GmbH | Renningen | 70465 Stuttgart | GERMANY | www.bosch.com > Tel. +49 711 811-15765 | Mobile +49 173 7124227 | > Sebastian.Schildt@de.bosch.com > > Registered Office: Stuttgart, Registration Court: Amtsgericht Stuttgart, > HRB 14000; > Chairman of the Supervisory Board: Franz Fehrenbach; Managing Directors: > Dr. Volkmar Denner, > Prof. Dr. Stefan Asenkerschbaumer, Dr. Michael Bolle, Dr. Christian > Fischer, Dr. Stefan Hartung, > Dr. Markus Heyn, Harald Kröger, Christoph Kübel, Rolf Najork, Uwe Raschke, > Peter Tyroller > > *Von:* Ulf Bjorkengren <ulfbjorkengren@geotab.com> > *Gesendet:* Mittwoch, 12. Februar 2020 15:38 > *An:* Schildt Sebastian (CR/AEX1) <Sebastian.Schildt@de.bosch.com> > *Cc:* Isaac Agudo Ruiz <isaac@lcc.uma.es>; Adnan.Bekan@bmwgroup.com; > public-automotive <public-automotive@w3.org> > *Betreff:* Re: Answers to chat comments > > > > Hi Sebastian, > > > > it is an interesting and valid use case you bring up. With role data in > the VSS tree, if you want to add a new role it becomes necessary to have a > means to modify the tree in the vehicle. > > One possible solution, I do not necessarily recommend it, would be to > incorporate this into the "dynamic registry" mechanism that is a > discussed Gen2 feature. > > I do not see any other realistic solutions. > > This could be taken as an argument to go back to my initial proposal, > where role data was not in the tree:). Roles could still be part of the > complete model, but reside in the backend, as you suggest. > > > > Regarding your proposal, I believe it relies on that the tree has a > default read/write access control on all nodes? > > If so, personally I am not so fond of a "closed" paradigm like that. I > advocate a more "open" paradigm that require active choices to apply access > control. > > > > BR > > Ulf > > > > On Wed, Feb 12, 2020 at 1:48 PM Schildt Sebastian (CR/AEX1) < > Sebastian.Schildt@de.bosch.com> wrote: > > Hi, > > > > Just read through it, but one thing is not quite clear to me. Of course in > a system there are roles (and they can be as fine-grained or coarse as > desired) and those roles imply certain access rights to the VSS data model. > In your GIT discussion I saw: > > > > VSS nodes may be populated with the properties: > > “read-access”: [list-of-roles] > “write-access”: [list-of-roles] > > I understand the semantic to be: “To read this node, you need to be one of > those roles”. But isn’t the VSS tree representation a fundamentally a wrong > place to store this? > > > > I assume inside a vehicle I have the VSS data model and corresponding > server. Maybe I already know about some basic roles (i.e. OEM can do > everything. Third party Android Infotainment App thingy can only read some > non-critical stuff…) > > > > However, if some time after SOP I want to deploy a new > component/function/app with some specific requirements to access data (i.e. > a new role), I have lost, if the data model already lists roles (because I > would also need to update the data model/server in the car). Shouldn’t > rather the software component itself contain a manifest token, that > describes specifically > > > > Read-acces: powertrain.trasnmission.* > > Write-Acces: cabin.doors.* > > > > That way you gain flexibility. I still thing that you need “roles”, > however I would assume that generic roles (“OEM”, “third-party”, > trusted-thirdparty”) live in the backend. So for example a Keycloak server > might be used to model roles and stuff and then generate specific tokens to > be deployed with specific software components. That way would also allow to > change what rights are part of a role after deployment of the base software > stack. > > > > Tldr; VSS data model should not reference “roles” > > > > > > If I misunderstood, please enlighten me J > > > > > > > > > > Mit freundlichen Grüßen / Best regards > > > *Dr. Sebastian Schildt * > Communication and Network Technology (DS1) (CR/AEX1) > Robert Bosch GmbH | Renningen | 70465 Stuttgart | GERMANY | www.bosch.com > Tel. +49 711 811-15765 | Mobile +49 173 7124227 | > Sebastian.Schildt@de.bosch.com > > Registered Office: Stuttgart, Registration Court: Amtsgericht Stuttgart, > HRB 14000; > Chairman of the Supervisory Board: Franz Fehrenbach; Managing Directors: > Dr. Volkmar Denner, > Prof. Dr. Stefan Asenkerschbaumer, Dr. Michael Bolle, Dr. Christian > Fischer, Dr. Stefan Hartung, > Dr. Markus Heyn, Harald Kröger, Christoph Kübel, Rolf Najork, Uwe Raschke, > Peter Tyroller > > *Von:* Ulf Bjorkengren <ulfbjorkengren@geotab.com> > *Gesendet:* Dienstag, 11. Februar 2020 20:00 > *An:* Isaac Agudo Ruiz <isaac@lcc.uma.es> > *Cc:* Adnan.Bekan@bmwgroup.com; public-automotive < > public-automotive@w3.org> > *Betreff:* Re: Answers to chat comments > > > > Hi Isaac, > > > > I got inspired by your proposal to use RBAC, and have modified my proposal > accordingly. > > https://github.com/w3c/automotive/issues/322 > > I would be very interested to hear your comments on it. Any by anyone else > also. > > > > BR > > Ulf > > > > On Wed, Feb 5, 2020 at 5:57 PM Isaac Agudo Ruiz <isaac@lcc.uma.es> wrote: > > Hi, > > > > I don’t want to introduce more noise to this issue but it is important > that we understand the implications of defining access control policies > that are both flexible and effective. I was tempted to comment in the repo > but I think I better explain my point of view by email. > > > > Assuming most nodes would be open, i.e. without any access restriction, it > makes sense to opt for a blacklist-like restriction, where only those nodes > that need some protection are tagged accordingly. However, I still think we > should go for a RBAC-like model, as mentioned in a previous e-mail. > > > > My proposal would be to add the following two properties to the data model: > > > > “write” : [list of roles granted write access] > > “read” : [list of roles granted read access] > > > > This is the definition of an access policy, that applies to a particular > node and all nodes below in the hierarchy, until a conflict is found, in > which case, the properties of the node prevail and will become the default > for nodes below it. > > > > In the token we need to add the path and the roles granted to the user: > > > > "scp": "path" > > “roles": [list of roles issued in the token] > > > > In order to gran explicit access to all nodes easily, we can define a base > role and grant write and read to this role in the root node, so that all > nodes behind it would be accesible, both read and write modes, by the base > role without any explicit annotation. > > > > As an example, we could define only nine roles and name them from 0 to 9, > in order to implement a similar functionality to Ulf proposal. Then, in the > root we can place something like this: > > > > “write": [“0”] > > “read”: [“0”] > > > > That way, all nodes will be granted read and write access by default for > role “0”. However in order to implement the requirement that higher roles > will still gain access to nodes granted to role “0” we need to encode also > a hierarchy in the roles, i.e. “0”<“1”<…<“9”, that in this case is very > simple. If we plant to use general roles we would need to find a place > where to define this role hierarchy. Another, less elegant, solution would > be to grant multiple roles in the same token ... > > > > RBAC might seem more complex but it is also more flexible and allows for > the definition of some meaningful role names, e.g. “CAR_OWNER”, > “CAR_MANUFACTURER”, “ALL”, etc. > > > > If you find some value in my proposal I don’t mind elaborating it a bit > more and describe it in the repo. Also, if you think this could be > something to discuss in the f2f meeting please let me know. I would try to > be there. > > > > As a side proposal, but also in the line of access restriction, I would > like to get your feedback regarding the inclusion of end to end security > guarantees in the model. > > > > Do you think it makes sense to request the values of some nodes encrypted, > so that independently of the transport channel, they won’t be accessed > until they reach their intended destination? > > > > That’s particularly relevant if the final user is requesting data using > some kind of proxy. A solution would be to include in the token the public > key of the requestor, and have the server encrypt the results using this > key. > > > > Again, I’ll be happy to describe that as an issue if you find it > interesting. > > > > Best, > > > > Isaac Agudo > > > > Associate Professor > > Network, Information and Computer Security Lab > > University of Malaga > > www.nics.uma.es/isaac > > > > > > El 5 feb 2020, a las 13:42, Ulf Bjorkengren <ulfbjorkengren@geotab.com> > escribió: > > > > >> How would you keep 3 different scenarios in parallel, T1, T2, T3 with > C1 C2 and C3? > > Only one of the scenarios A, B, or C is possible at a given time. > > > > >> In proposal we have option to specify only 1 Tag, for actuator, sensor > or branch. I did not understand how to handle several Tags per actuator for > varipus clients. > > A tag is inherited by underlying nodes, unless a different tag exists in a > node. > > In the scenario I described, a tag was added to the vehicle.cabin.door > branch node, thus all leaf nodes below it inherited the tag property. > > It is only possible to assign one tag per node. > > > > >> Proposal would work if we would have only 1 client. > > Please explain why it would not work as described in the scenarios. > > > > >> As well how to handle complexity users x tags x paths? > > With flexibility comes some level of complexity, that is unavoidable. > > If flexibility is not a desired feature, then the VIWI model could be > applied, and all nodes are statically assigned read-write access > restriction, i. e. every client request must contain a valid token. Then > this tag design can be scrapped. > > > > BR > > Ulf > > > > On Wed, Feb 5, 2020 at 12:02 PM <Adnan.Bekan@bmwgroup.com> wrote: > > >> how flow would look like for 4 diff clients, with tag read, write only, > read/write and "no tag", and they would access to exactly same branch > vehicle.cabin.door. Story with tokens I understand and all good, but with > tags I did not see any additional benefit. > > Excluding the write-only case, the following I believe shows the benefits > it can provide. > > The vehicle.cabin.door branch node has three different tagging options: > > T1: No tag > > T2: Validate: write-only > > T3: Validate: read-write > > The three clients have respectively: client 1:no token,client 2: > read-only token, client 3: read-write token (tokens have a scope containing > this subtree, and are non-expired). > > A: For the T1 scenario all clients are able to both read and write the > leaf nodes of the subtree. > > B: For the T2 scenario clients 1 and 2 can read leaf nodes, client 3 can > both read and write leaf nodes. > > C: For the T3 scenario client 1 can neither read nor write any leaf nodes, > client 2 can read leaf nodes, and client 3 can both read and write leaf > nodes. > > ----------- > > How would you keep 3 different scenarios in parallel, T1, T2, T3 with C1 > C2 and C3? In proposal we have option to specify only 1 Tag, for actuator, > sensor or branch. I did not understand how to handle several Tags per > actuator for varipus clients. Proposal would work if we would have only 1 > client. As well how to handle complexity users x tags x paths? > > > > Thank you > > > > -- > > *BMW Group* > > Adnan Bekan > > Research, New Technologies, Innovations > > E/E Architecture, Technologies (LT-3) > > IoT and Software Technologies > > > > Parkring 19, 85748 Garching > > > > Telefon: +49-89-382-56368 > > Mobile: +49-151-601-56368 > > Mail: adnan.bekan@bmwgroup.com > > Web: http://www.bmwgroup.com > > -------------------------------------------------------------------- > Bayerische Motoren Werke Aktiengesellschaft > Vorstand/Board of Management: Oliver Zipse (Vorsitzender/Chairman), > > Klaus Fröhlich, Ilka Horstmeier, Milan Nedeljković, > > Pieter Nota, Nicolas Peter, Andreas Wendt. > > Vorsitzender des Aufsichtsrats/Chairman of the Supervisory Board: Norbert > Reithofer > > Sitz und Registergericht/Domicile and Court of Registry: München HRB 42243 > -------------------------------------------------------------------- > > > > *From: *Ulf Bjorkengren <ulfbjorkengren@geotab.com> > *Date: *Wednesday, 5. February 2020 at 11:42 > *To: *public-automotive <public-automotive@w3.org> > *Subject: *Answers to chat comments > *Resent-From: *<public-automotive@w3.org> > *Resent-Date: *Wednesday, 5. February 2020 at 11:38 > > > > >> how flow would look like for 4 diff clients, with tag read, write only, > read/write and "no tag", and they would access to exactly same branch > vehicle.cabin.door. Story with tokens I understand and all good, but with > tags I did not see any additional benefit. > > Excluding the write-only case, the following I believe shows the benefits > it can provide. > > The vehicle.cabin.door branch node has three different tagging options: > > T1: No tag > > T2: Validate: write-only > > T3: Validate: read-write > > The three clients have respectively: client 1:no token,client 2: > read-only token, client 3: read-write token (tokens have a scope containing > this subtree, and are non-expired). > > A: For the T1 scenario all clients are able to both read and write the > leaf nodes of the subtree. > > B: For the T2 scenario clients 1 and 2 can read leaf nodes, client 3 can > both read and write leaf nodes. > > C: For the T3 scenario client 1 can neither read nor write any leaf nodes, > client 2 can read leaf nodes, and client 3 can both read and write leaf > nodes. > > > > > -- > > *Ulf Bjorkengren* > > *Geotab* > > Senior Connectivity Strategist | Ph. D. > > Mobile > > +45 53562142 > > Visit > > www.geotab.com > > > > > > > -- > > *Ulf Bjorkengren* > > *Geotab* > > Senior Connectivity Strategist | Ph. D. > > Mobile > > +45 53562142 > > Visit > > www.geotab.com > > > > > > > -- > > *Ulf Bjorkengren* > > *Geotab* > > Senior Connectivity Strategist | Ph. D. > > Mobile > > +45 53562142 > > Visit > > www.geotab.com > > > > > > > -- > > *Ulf Bjorkengren* > > *Geotab* > > Senior Connectivity Strategist | Ph. D. > > Mobile > > +45 53562142 > > Visit > > www.geotab.com > > > > > -- > > *Ulf Bjorkengren* > > *Geotab* > > Senior Connectivity Strategist | Ph. D. > > Mobile > > +45 53562142 > > Visit > > www.geotab.com > > > > > > > -- > > *Ulf Bjorkengren* > > *Geotab* > > Senior Connectivity Strategist | Ph. D. > > Mobile > > +45 53562142 > > Visit > > www.geotab.com > > >
Received on Friday, 14 February 2020 08:32:07 UTC