chore(docs): add SECURITY.md and expand security model in ARCHITECTURE.md#14
chore(docs): add SECURITY.md and expand security model in ARCHITECTURE.md#14abhijeet-dhumal wants to merge 3 commits into
Conversation
84dee52 to
1758ef5
Compare
|
@abhijeet-dhumal: you cannot LGTM your own PR. DetailsIn 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. |
1758ef5 to
fbe71be
Compare
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:Approvers can indicate their approval by writing |
There was a problem hiding this comment.
Pull request overview
Adds project security guidance covering vulnerability reporting, threat modeling, RBAC, deployment hardening, and resilience.
Changes:
- Adds
SECURITY.mdwith security and deployment guidance. - Links security and roadmap documentation from the README.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 7 comments.
| File | Description |
|---|---|
SECURITY.md |
Adds security policy, threat model, RBAC examples, and hardening checklist. |
README.md |
Adds documentation links. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
|
||
| - **Email:** [kubeflow-discuss@googlegroups.com](mailto:kubeflow-discuss@googlegroups.com) | ||
| - **Subject:** `[SECURITY] kubeflow/mcp-server — <brief description>` |
| The `run_custom_training` tool accepts a Python script as a string. The script is embedded inside a `train_func()` closure that is serialized by `cloudpickle` and executed **inside the Kubernetes training pod**, not on the MCP host. | ||
|
|
||
| The `exec(compile(script, ...))` call is **deferred** — it runs inside `train_func()` at pod runtime, not at submission time on the host. However, the closure is constructed on the host and serialized, so malformed scripts could theoretically cause issues during serialization. |
|
|
||
| ### What the MCP Server Does NOT Control | ||
|
|
||
| - **Kubernetes RBAC** — the server operates under the caller's permissions; it cannot grant access beyond what the Kubeconfig allows |
| # Discovery: list/get runtimes | ||
| - apiGroups: ["trainer.kubeflow.org"] | ||
| resources: ["clustertrainingruntimes"] | ||
| verbs: ["list", "get"] |
| - apiGroups: [""] | ||
| resources: ["nodes"] | ||
| verbs: ["list"] |
| - apiGroups: ["trainer.kubeflow.org"] | ||
| resources: ["trainjobs", "clustertrainingruntimes"] | ||
| verbs: ["list", "get"] |
| roleRef: | ||
| apiGroup: rbac.authorization.k8s.io | ||
| kind: ClusterRole | ||
| name: kubeflow-mcp-server |
Signed-off-by: abhijeet-dhumal <abhijeetdhumal652@gmail.com>
Signed-off-by: abhijeet-dhumal <abhijeetdhumal652@gmail.com>
Signed-off-by: abhijeet-dhumal <abhijeetdhumal652@gmail.com>
a3a1148 to
436359d
Compare
|
@andreyvelich @thesuperzapper @astefanutti @kramaranya @szaher |
Description
Adds vulnerability reporting policy and expands security documentation:
Checklist
make test-python)make verify)Related Issues
Fixes: #12