Skip to content

add security self-assessment for project kcp#2209

Open
SimonTheLeg wants to merge 1 commit into
cncf:mainfrom
SimonTheLeg:main
Open

add security self-assessment for project kcp#2209
SimonTheLeg wants to merge 1 commit into
cncf:mainfrom
SimonTheLeg:main

Conversation

@SimonTheLeg

@SimonTheLeg SimonTheLeg commented Jun 26, 2026

Copy link
Copy Markdown

add security self-assessment for project kcp

moved per request from #1815 (comment)

@SimonTheLeg SimonTheLeg requested a review from a team as a code owner June 26, 2026 14:42
@github-actions github-actions Bot added needs-triage Indicates an issue or PR that has not been triaged yet (has a 'triage/foo' label applied) needs-kind Indicates an issue or PR that is missing an issue type or kind (a kind/foo label) labels Jun 26, 2026
@github-actions github-actions Bot added the needs-group Indicates an issue or PR that has not been assigned a group (toc or tag/foo label applied) label Jun 26, 2026
Signed-off-by: Simon Bein <simontheleg@gmail.com>
Co-authored-by: Marvin Beckers <mail@embik.me>
@SimonTheLeg SimonTheLeg mentioned this pull request Jun 26, 2026
15 tasks
@evankanderson evankanderson added tag/security-and-compliance TAG Security and Compliance and removed needs-group Indicates an issue or PR that has not been assigned a group (toc or tag/foo label applied) labels Jun 26, 2026
@JustinCappos JustinCappos self-requested a review June 26, 2026 19:44

@JustinCappos JustinCappos left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks pretty good. Can you address the comments I have and integrate those into the text (not just reply to my comments)?

I think this will be ready to merge soon.


#### kcp Server Components

* **Workspaces**: The primary user-facing unit of tenancy and isolation. From a user's perspective, a Workspace is a fully-isolated, Kubernetes-like cluster with its own unique API endpoint, CustomResourceDefinitions (CRDs), and RBAC policies.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you explain more about how this is isolated from other actors? How does one interface with this in a trustworthy manner?


* **Workspaces**: The primary user-facing unit of tenancy and isolation. From a user's perspective, a Workspace is a fully-isolated, Kubernetes-like cluster with its own unique API endpoint, CustomResourceDefinitions (CRDs), and RBAC policies.

* **Logical Clusters**: The underlying implementation construct for a Workspace. A logical cluster is a logical partition within the kcp data store (etcd), ensuring that objects from different workspaces are stored in disjoint key prefixes, which is the primary mechanism for enforcing isolation. The goal is to make creating a logical cluster as cheap and fast as creating a Kubernetes namespace.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do you have other performance / side channel concerns as a result? (This likely goes in non-goals for your system as well.)


* **Virtual Workspaces**: Endpoints that provide a Kubernetes-like API interface, but are not backed by a logical cluster for storage. They provide a computed "view" of certain resources across logical clusters. The exact semantics depend on the virtual workspace implementation, different virtual workspace endpoints provide different views according to their role. Access to virtual workspace endpoint is guarded by RBAC.

* **Shards**: A running instance of the kcp server process. Each shard hosts a set of logical clusters, and a full kcp installation can be composed of many shards to achieve horizontal scalability.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How are these coordinated? Are these trusted by other shards? What happens if a shard is compromised / buggy?


##### kcp Components

* **kcp**: The `kcp` binary provides the means to run a kcp shard (see above). It can either be launched completely standalone and then embeds a "mini" front-proxy, virtual-workspaces and a cache-server to run a fully functional kcp instance, or be run just to serve API endpoints and run controller loops.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this a trusted component? How does this auth?


kcp provides resources dedicated to managing available APIs in a Workspace.

* **APIExport**: Allows a service provider in one workspace to publish an API for consumption by other workspaces.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What if the same API is published for consumption by different parties? Is this namespaced somehow? If so, how is the namespacing securely defined / allocated? If not, what happens if there is a conflict?


#### Security Goals

* **Strict Workspace Isolation:** Ensure that tenants in one Workspace cannot see, access, or affect resources in another Workspace unless explicitly authorized. This is the core security boundary of the system.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think performance interference + side channels are likely out of scope


Security vulnerability reports are handled via GitHub's security issue reporting feature, available [here](https://github.com/kcp-dev/kcp/security). The Security Response Team triage and respond to security issues reported privately through the tool.

Please see the complete [security release process](https://github.com/kcp-dev/kcp/blob/main/SECURITY.md) for further details.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

needs-kind Indicates an issue or PR that is missing an issue type or kind (a kind/foo label) needs-triage Indicates an issue or PR that has not been triaged yet (has a 'triage/foo' label applied) tag/security-and-compliance TAG Security and Compliance

Projects

Status: New
Status: No status
Status: No status
Status: No status

Development

Successfully merging this pull request may close these issues.

4 participants