Skip to content
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

Multi-tenancy support #6175

Closed
aliok opened this issue Feb 22, 2022 · 8 comments
Closed

Multi-tenancy support #6175

aliok opened this issue Feb 22, 2022 · 8 comments
Assignees
Labels
kind/feature-request triage/accepted Issues which should be fixed (post-triage)

Comments

@aliok
Copy link
Member

aliok commented Feb 22, 2022

Problem
We have seen requests like these from users:

  1. We would like to make sure our broker/channel/sink is not accessible (no POST possible) from outside the resources in our namespace.
  2. We would like to keep our data in our specific Kubernetes nodes. This is to comply with the GDPR and data sovereignty regulations. A large cluster of ours is used by our departments in different countries and law requires us to keep the data on the nodes that are in the country where the data belongs to.
  3. We would like to isolate our dataplane.

These are the the things we have heard from our users over the past couple of months.

There are additional requests like these but I would like to skip them for now:

  • We want to install different versions of CRDs and Knative eventing
  • ...

Persona:
Which persona is this feature for?

Exit Criteria
A measurable (binary) test that would indicate that the problem has been resolved.

Time Estimate (optional):
How many developer-days do you think this may take to resolve?

Additional context (optional)
Add any other context about the feature request here.

@aliok
Copy link
Member Author

aliok commented Feb 22, 2022

The definition of "multitanency" is actually a bit confusing. Some users use the term to have complete isolation/separation of resources while others and Knative community use it for sharing resources but serving multiple tenants. I think we first need to address this.

  1. We would like to make sure our broker/channel/sink is not accessible (cannot POST) from outside the resources in our namespace.

A similar discussion is happening for (1) at Serving here: knative/serving#12533.

  1. We would like to keep our data in our specific Kubernetes nodes. This is to comply with the GDPR and data sovereignty regulations. A large cluster of ours is used by our departments in different countries and law requires us to keep the data on the nodes that are in the country where the data belongs to.

They cannot do that if the dataplane is handling resources from multiple tenants.

  1. We would like to isolate our dataplane.

Users are not sure if we need complete separation of dataplane pods or if they are ok with some sublevel separation (like separate threads)

@matzew
Copy link
Member

matzew commented Feb 22, 2022

One option might be provide some abstraction on top of istio, where we find things like:

apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
  name: blah
  namespace: knative-eventing
spec:
  action: ALLOW
  rules:
  - from:
    - source:
        namespaces: ["default", "knative-eventing"]
    to:
    - operation:
        methods: ["POST"]

for the different components we could that way ensure that only a given set of namespaces can POST to them. As an example

@pierDipi pierDipi moved this to Ready To Work in Eventing WG Roadmap Mar 3, 2022
@pierDipi pierDipi moved this from Ready To Work to In Design in Eventing WG Roadmap Mar 3, 2022
@matzew
Copy link
Member

matzew commented Mar 15, 2022

Here is an issue to document the Istio case: knative/docs#4823

@matzew
Copy link
Member

matzew commented Mar 15, 2022

Tenants could be users. another issue for documentation: knative/docs#4824

@github-actions
Copy link

This issue is stale because it has been open for 90 days with no
activity. It will automatically close after 30 more days of
inactivity. Reopen the issue with /reopen. Mark the issue as
fresh by adding the comment /remove-lifecycle stale.

@github-actions github-actions bot added the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label Aug 24, 2022
@pierDipi pierDipi moved this from In Design to Icebox / Wishlist in Eventing WG Roadmap Sep 6, 2022
Repository owner moved this from Icebox / Wishlist to Done in Eventing WG Roadmap Sep 23, 2022
@pierDipi pierDipi reopened this Sep 23, 2022
Repository owner moved this from Done to Ready To Work in Eventing WG Roadmap Sep 23, 2022
@pierDipi
Copy link
Member

/triage accepted

@knative-prow knative-prow bot added the triage/accepted Issues which should be fixed (post-triage) label Sep 23, 2022
@github-actions github-actions bot removed the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label Sep 24, 2022
@evankanderson
Copy link
Member

Another option we're exploring in Serving for making NetworkPolicy work is to use different destination ports on the same Pod. You can then use L4 (TCP) NetworkPolicy to control access to specific ports on the Broker.

Note that this still doesn't provide any type of authn/authz about which identities can send which types of events, but it at least ensures that entities not in the same Namespace aren't authorized to send to that endpoint.

Kubernetes Services can point to a targetPort which isn't listed in the containers[*].ports for the Pod, which allows you to expand to several thousand available ports on a multi-tenant destination if desired while maintaining network isolation (assuming you restrict end-users ability to create Endpoints directly).

@pierDipi pierDipi moved this from Ready To Work to Icebox / Wishlist in Eventing WG Roadmap Apr 11, 2023
@aliok
Copy link
Member Author

aliok commented Jul 6, 2023

We're going to have some kind of traffic limiting instead with the internal TLS work we're doing.

@creydr any issues can you link here?

@aliok aliok closed this as completed Jul 6, 2023
@github-project-automation github-project-automation bot moved this from Icebox / Wishlist to Done in Eventing WG Roadmap Jul 6, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind/feature-request triage/accepted Issues which should be fixed (post-triage)
Projects
Development

No branches or pull requests

4 participants