-
Notifications
You must be signed in to change notification settings - Fork 487
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
Route inclusion/delegation security and policy implications #1042
Comments
Also I would like some discussion if this is really a core feature that all implementations must support, or can be expressed as an optional feature - and use a separate resource and the normal policy attachment. For example, it could be a 'example.com Delegate' CR, that is attached to a HttpRoute and defines any label selector you want, with implementations supporting this extended policy implementing what is described in the proposal, i.e. merge routes based on the labels to the main route. |
Thanks for raising these points, @costinm, this is a great discussion. Okay, easy one first.
I think we can easily make this an optional feature by making the I am a -1 on either having a separate CR, using another struct that At the end of the day, all of these constructs are a way to break up a data plane configuration to make it easy for multiple personas to control different parts of it. Routes are not routing hops, they're a mechanism to ensure we meet our goals of separating roles and being able to migrate between implementations. In terms of merging semantics for the Routes themselves, we already have merging semantics defined for the Gateway<->Route process, we can reuse the same rules to manage conflict resolution for the basic Route<->Route attachments as well. In terms of the more complex interactions, like policy attachment, I agree that it's very possible to create conflicts in many ways. I think that we need to be clear that implementations can and should disallow attachments that produce outcomes like this. Since Policy attachment objects are currently by definition implementation specific, the handling of the behavior there must also be implementation specific. I'll grant that we could provide some better guidance in the Policy attachment documentation about what to do with sibling policies that conflict - but the policy attachment documentation is the place to do that, not here. You didn't mention it in the above comments, but we discussed cross-namespace references in the meeting, and I think it's worth reiterating why we have this two-way handshake mechanism - explicitly it's to allow cross namespace references in as secure a way as possible. The referring object (in this case the child Route attaching to a parent, whether Gateway or Route) must specify the exact name of the thing it wants to attach to, while the parent can (and must in the case of Route<->Route attachment) specify what it will allow. It's requiring the referred object to also consent to the attachment that makes the cross-namespace references okay. (And that's why we built the ReferencePolicy object for cross-namespace references to things that we can't change the In terms of having an explicit list of named namespaces instead of a label selector, my concerns (and the reasons that these are not recommended in other API resources) are:
That was a long commment, sorry. tl;dr I think that using the same |
The Kubernetes project currently lacks enough contributors to adequately respond to all issues and PRs. This bot triages issues and PRs according to the following rules:
You can:
Please send feedback to sig-contributor-experience at kubernetes/community. /lifecycle stale |
This is held up along with the actual inclusion work until after v0.5.0, keeping unstale. /remove-lifecycle stale |
The Kubernetes project currently lacks enough contributors to adequately respond to all issues and PRs. This bot triages issues and PRs according to the following rules:
You can:
Please send feedback to sig-contributor-experience at kubernetes/community. /lifecycle stale |
The Kubernetes project currently lacks enough active contributors to adequately respond to all issues and PRs. This bot triages issues and PRs according to the following rules:
You can:
Please send feedback to sig-contributor-experience at kubernetes/community. /lifecycle rotten |
The Kubernetes project currently lacks enough active contributors to adequately respond to all issues and PRs. This bot triages issues according to the following rules:
You can:
Please send feedback to sig-contributor-experience at kubernetes/community. /close not-planned |
@k8s-triage-robot: Closing this issue, marking it as "Not Planned". In response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. |
https://docs.google.com/document/d/1iumYQQMaB9y-PCtMsRwVfzKlZXZDejr_fO0krXn3F90/edit defines a mechanism to delegate and include routes.
There are several security and policy concerns:
The text was updated successfully, but these errors were encountered: