-
Notifications
You must be signed in to change notification settings - Fork 195
Reconsider Node to Participant mapping #250
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Signed-off-by: ivanpauno <[email protected]>
Signed-off-by: ivanpauno <[email protected]>
Signed-off-by: ivanpauno <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A few thoughts on the security front.
… node information Signed-off-by: ivanpauno <[email protected]>
We had a meeting with @artivis @hidmic @kyrofa @dirk-thomas @ruffsl @wjwwood and @drastx about how DDS Security API would look like after changing Node to Participant mapping to one Participant per Context. Here are the meeting notes. Please, correct me if something is wrong or missing. Items
Notes
Proposals
|
@ivanpauno, my github id is drastx |
That looks like a great plan! I have a few questions to help me picture how this will all fit together:
Is it possible that context would span multiple participants in the future?
Could you clarify what this would mean in terms of governance file's content?
Sorry the notion of context is still unclear to me. Where would that be done? Will the context name be set at the launchfile level or in code? Then I assume that rcl would retrieve the context name, the corresponding security directory and pass it down to rmw to set up the participant's security plugins, is that right?
This would be a great next step 👍. As @kyrofa pointed out in the past, the node author is the most knowledgeable person to list all the resources the node needs access to, and offloading to each integrator to figure out the permissions of each node in the system can quickly result in a lot of extra work for each user. |
In the notes, I think @ivanpauno is confusing policy/permissions/governances that we discussed. We worked towards an idea where we'll add an grouping of multiple profiles by say including a
I haven't formed an opinion on that, but it seems to me that if context would span multiple participants, the participant could just load the same permissions/governance. I'm not sure what boundary context would have outside of DDS rmw, but I think we'd like to use the process boundary as the line, given the implications of secure memory access.
I think the launch file level, as that is where the composition of nodes is configured/declared, yes?
On the money 💵 . I think we'll have to expand upon the keystore file tree structure, similar to the policy document tree I mentioned with the tags above, so that paths to contexts are resolvable. I'm not sure how that all should be nested, say in conjunction with nodes not composed, but we should open a separate issues for these details. Perhaps it makes sense to always declare a context for consistency, but I'm not sure how that should fold with node name uniqueness?
Again, I think this per context is applicable to access control permission/governace files, but not (SROS2) policy files, as we'd likely want a document tree that can reflect intersection between multiple contexts. As composed node interactions are likely not going to be limited to only nodes of a common context, we linkly want to verify the correctness/completeness such orchestrations. |
Sorry for the error. I've edited the original comment.
I think we don't want to introduce the concept of
IMO, in code and with the possibility of remapping it.
Explicitly or implicitly constructed, a |
Great thanks for the insighful answers. I didn't mean to bring implementation details here, I just wanted to make sure there will be an easy way at the launchfile level to remap and group nodes under a specific context name to be able to set permissions without having to touch / compile any code. And that seem to be the case 👍 |
Signed-off-by: ivanpauno <[email protected]>
This pull request has been mentioned on ROS Discourse. There might be relevant details there: https://discourse.ros.org/t/improving-ros-2-cpu-by-simplifying-the-ros-2-layers/13808/1 |
@ivanpauno Can this be closed? (If there is anything pending it might be better to summarize that in a new ticket.) |
This pull request has been mentioned on ROS Discourse. There might be relevant details there: https://discourse.ros.org/t/ros-foxy-fitzroy-released/14495/1 |
Closed or merged? If there's a desire to have a rendered version of this documentation together with the release, feel free to merge and I will follow-up in another PR. |
Certainly merged.
👍
Just depends on the time frame. It can wait until next week. If it takes you longer please feel free to merge this and follow up with a separate PR. |
Signed-off-by: Ivan Santiago Paunovic <[email protected]>
@hidmic I've cleaned up the document, can you take another look? |
That information would be enough to satisfy ros2 required graph API. | ||
This mechanism will also avoid to have a topic where all nodes need to have write and read access. | ||
|
||
This alternative wasn't implemented because of lack of support in some of the currently supported DDS vendors. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I remember when I started the implementation of this, some of the user data qos weren't implemented in FastRtps.
It seems that now they are, @richiware can you clarify? If it's supported now, I want to make that clear in the document.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sorry for the delay. I missed the mention.
Yes, FastDDS supports Participant/Reader/Writer UserData QoS.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@ivanpauno I left a bunch of comments here and there, mostly related to phrasing. Also, I noticed we use a variety of styles for the same terms (e.g. capitalized, lowercase, uppercase, literal, non-literal). Consider standardizing that.
Signed-off-by: Ivan Santiago Paunovic <[email protected]>
@hidmic PTAL, I think I've addressed all your comments. |
@hidmic friendly ping |
Signed-off-by: Ivan Santiago Paunovic <[email protected]>
@hidmic all comments have been addressed, PTAL |
Signed-off-by: Ivan Santiago Paunovic <[email protected]>
Signed-off-by: ivanpauno <[email protected]>
Signed-off-by: ivanpauno <[email protected]>
This pull request has been mentioned on ROS Discourse. There might be relevant details there: https://discourse.ros.org/t/sros2-api-after-moving-to-one-participant-per-context/10448/1 |
Adding a document analyzing the drawbacks of enforcing a one-to-one mapping between
ROS Nodes
andDDS Participants
and proposing alternative approaches.