-
Notifications
You must be signed in to change notification settings - Fork 689
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
Add IP allowlist and blocklist functionality #3693
Comments
Great idea. Just want to add we need to support both IPv4 and v6, specified in both single IPs and CIDR blocks. Another comment is we can either make this available as part of the existing Should we allow setting a deny list instead of an allow list? Or both. @youngnick Regarding the options you listed, I think we have to think about adding these sorts of capabilities to both HTTPProxy and HTTPRoute in the meantime. The best we can do for anything in gateway API is to land a feature request in their upstream for now. I moved this to v1.19, does that feel appropriate? |
Does the I also found this extension for retrieving the original IP address. Can we leverage this if the above aren’t sufficient? |
I think 1.19 for this is fine. Yes, my concern about the source IPs was not that we can't retrieve them, but that there are a few ways to retrieve them, and we need to be specific about how the whole setup works, since there are interactions with upstream LBs as well. |
If we do enable this through a field on the HTTPProxy, how do we apply this globally so we don’t need to specify on every HTTPProxy and add annotation on each Ingress? It would be ideal to have the behavior of applying these settings globally by default when nothing is specified but it almost requires this to be specified in its own CR. Then you can associate this with httpproxies and ingresses as you wish. |
I think it depends on the expected use case. I can see use for each, since you may, for example, want to allow only some IPs to some secure service, but not to all ingresses managed by Contour. Or you may want to block all addresses in some set globally, and not allow that to be overridden. Whatever we start with, we should assume that it's not final, but ideally, choosing what to start with would start with talking to people who actually want this feature about how it should work. |
|
+1 for the use case that requires a global deny and then individual HTTPProxy allow list. I've achieved this with other ingress controllers by setting the allow list in the global config to only 127.0.0.1 and then have the allow list for each Ingress annotated appropriately. |
@youngnick
This is also a must have feature for our organization to be able to migrate to contour. |
Thanks for that @m-yosefpor, that semantic does sound useful. I'll speak to @xaleeks about what the prioritization for this feature looks like. |
We can discuss on this issue or the #contour channel in the Kubernetes slack workspace |
@adityasundaramurthy-maersk @sunjayBhatia, what's the plan about this, we need it too |
as of yet no-one has contributed a design for this feature so that would be the first step |
hey @adityasundaramurthy-maersk, any progress? if you don't have time, I'd like to give it a try |
Configures Envoy's envoy.filters.http.rbac per route via HTTPProxy. See API docs in this commit for details. Fixes projectcontour#3693 Signed-off-by: Evan Cordell <[email protected]>
Configures Envoy's envoy.filters.http.rbac per route via HTTPProxy. See API docs in this commit for details. Fixes projectcontour#3693 Signed-off-by: Evan Cordell <[email protected]>
Configures Envoy's envoy.filters.http.rbac per route via HTTPProxy. See API docs in this commit for details. Fixes projectcontour#3693 Signed-off-by: Evan Cordell <[email protected]>
Configures Envoy's envoy.filters.http.rbac per route via HTTPProxy. See API docs in this commit for details. Fixes projectcontour#3693 Signed-off-by: Evan Cordell <[email protected]>
Configures Envoy's envoy.filters.http.rbac per route via HTTPProxy. See API docs in this commit for details. Fixes projectcontour#3693 Signed-off-by: Evan Cordell <[email protected]>
Configures Envoy's envoy.filters.http.rbac per route via HTTPProxy. See API docs in this commit for details. Fixes projectcontour#3693 Signed-off-by: Evan Cordell <[email protected]>
Configures Envoy's envoy.filters.http.rbac per route via HTTPProxy. See API docs in this commit for details. Fixes projectcontour#3693 Signed-off-by: Evan Cordell <[email protected]>
Configures Envoy's envoy.filters.http.rbac per route via HTTPProxy. See API docs in this commit for details. Fixes projectcontour#3693 Signed-off-by: Evan Cordell <[email protected]>
@izturn I haven't done any work here. Please go ahead. |
Configures Envoy's envoy.filters.http.rbac per route via HTTPProxy. See API docs in this commit for details. Fixes projectcontour#3693 Signed-off-by: Evan Cordell <[email protected]>
Configures Envoy's envoy.filters.http.rbac per route via HTTPProxy. See API docs in this commit for details. Fixes projectcontour#3693 Signed-off-by: Evan Cordell <[email protected]>
Configures Envoy's envoy.filters.http.rbac per route via HTTPProxy. See API docs in this commit for details. Fixes projectcontour#3693 Signed-off-by: Evan Cordell <[email protected]>
Configures Envoy's envoy.filters.http.rbac per route via HTTPProxy. See API docs in this commit for details. Fixes projectcontour#3693 Signed-off-by: Evan Cordell <[email protected]>
Configures Envoy's envoy.filters.http.rbac per route via HTTPProxy. See API docs in this commit for details. Fixes #3693 Signed-off-by: Evan Cordell <[email protected]>
As either a cluster admin or application developer, I want to be able to restrict access to services behind Contour by source IP address.
This issue covers:
The original source issue for this was #62 (way back!), and we have a few things to decide, and I can think of a few things for us to consider.
Firstly, where and how could we implement this?
When implementing it, we need to make sure that we call out the interactions with upstream load balancers, X-Forwarded-For, and Client IPs etc, which can complicate this sort of thing a bit for proxies.
I suspect the answer here is that the IP address we care about is whatever Envoy thinks the Client IP is, but we will need to document how to be sure you have the right one a bit more than we do now, I think.
The text was updated successfully, but these errors were encountered: