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

Documentation: Security/authorization model for Tekton users in a multi-tenant cluster #2257

Closed
jcmcken opened this issue Mar 19, 2020 · 5 comments
Labels
help wanted Denotes an issue that needs help from a contributor. Must meet "help wanted" guidelines. kind/documentation Categorizes issue or PR as related to documentation. kind/question Issues or PRs that are questions around the project or a particular feature lifecycle/rotten Denotes an issue or PR that has aged beyond stale and will be auto-closed. lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale.

Comments

@jcmcken
Copy link

jcmcken commented Mar 19, 2020

I'm not sure this is the appropriate avenue to ask this question, but I'm wondering about Tekton and multi-tenancy.

We have some general purpose clusters with RBAC enabled and customer workloads completely namespaced, using OPA policy and some other mechanisms to prevent customers from executing privileged operations in the cluster (e.g. accessing the host, accessing other customers' workloads, etc.)

In such a set up, how does Tekton come into the picture? For example, can we deloy Tekton as a "cluster-wide service" while still maintaining namespace separation for cluster tenants? Can we prevent cluster tenants from using Tekton to escalate privileges within the cluster (e.g. use privileged Linux capabilities, run privileged containers, etc.)?

Based on the history of the project (Knative Build + kaniko for unprivileged image builds), I'm thinking Tekton does fit into this picture. But I'm looking for specifics or documentation that explains it in more depth. I took a look at the Kubernetes objects in the Tekton installation files, and I see Tekton receives some elevated privileges. But it's not particularly clear what the workflow looks like.

@ghost ghost added kind/documentation Categorizes issue or PR as related to documentation. kind/question Issues or PRs that are questions around the project or a particular feature labels Mar 20, 2020
@ghost ghost added the help wanted Denotes an issue that needs help from a contributor. Must meet "help wanted" guidelines. label Apr 20, 2020
@ghost
Copy link

ghost commented Apr 20, 2020

I think it's fair to say that support for multi-tenant scenarios is somewhat nascent in Tekton Pipelines.

We've started by creating separate roles for the Pipelines controller:

Notice that currently both of these are bound using ClusterRoleBindings. This is intentional for backwards-compatibility with Tekton's existing behaviour. However, in a multi-tenant scenario you could modify tekton-pipelines-controller-tenant-access to be a RoleBinding instead, assigning the role to only those namespaces where tenant CI/CD workloads live.

I think there's still a fair amount of work to be done both on the Tekton side as well as the Knative side to fully support locked down multi-tenant situations. But to be honest I'm also not an expert on this stuff. Help would be very much appreciated if anyone wants to tackle this.

@tekton-robot
Copy link
Collaborator

Stale issues rot after 30d of inactivity.
Mark the issue as fresh with /remove-lifecycle rotten.
Rotten issues close after an additional 30d of inactivity.
If this issue is safe to close now please do so with /close.

/lifecycle rotten

Send feedback to tektoncd/plumbing.

@tekton-robot
Copy link
Collaborator

Issues go stale after 90d of inactivity.
Mark the issue as fresh with /remove-lifecycle stale.
Stale issues rot after an additional 30d of inactivity and eventually close.
If this issue is safe to close now please do so with /close.

/lifecycle stale

Send feedback to tektoncd/plumbing.

@tekton-robot
Copy link
Collaborator

Rotten issues close after 30d of inactivity.
Reopen the issue with /reopen.
Mark the issue as fresh with /remove-lifecycle rotten.

/close

Send feedback to tektoncd/plumbing.

@tekton-robot tekton-robot added lifecycle/rotten Denotes an issue or PR that has aged beyond stale and will be auto-closed. lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. labels Aug 14, 2020
@tekton-robot
Copy link
Collaborator

@tekton-robot: Closing this issue.

In response to this:

Rotten issues close after 30d of inactivity.
Reopen the issue with /reopen.
Mark the issue as fresh with /remove-lifecycle rotten.

/close

Send feedback to tektoncd/plumbing.

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted Denotes an issue that needs help from a contributor. Must meet "help wanted" guidelines. kind/documentation Categorizes issue or PR as related to documentation. kind/question Issues or PRs that are questions around the project or a particular feature lifecycle/rotten Denotes an issue or PR that has aged beyond stale and will be auto-closed. lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale.
Projects
None yet
Development

No branches or pull requests

2 participants