oscerd opened a new pull request, #6:
URL: https://github.com/apache/camel-kit/pull/6

   ## Summary
   
   Adds the project-level security model and threat model requested in #5, 
following the precedent of the Apache Camel Security Model 
([CAMEL-23496](https://issues.apache.org/jira/browse/CAMEL-23496) / 
[apache/camel#23181](https://github.com/apache/camel/pull/23181)) and the 
sub-project documents of Camel Quarkus and Camel K. The model was produced with 
the threat-model-producer procedure in draft-first mode: every claim carries a 
`(documented — source)` or `(inferred — Qn)` provenance tag, and every inferred 
claim routes to an open question for the maintainers.
   
   Closes #5.
   
   ## What is in the PR
   
   | File | Content |
   |---|---|
   | `SECURITY.md` *(new)* | Supported versions, the ASF private reporting 
process (`[email protected]`, explicit "no public issue or 
PR"), pointer to the model, related projects (Camel JBang MCP → Apache Camel, 
Knowledge MCP → its repository, Citrus MCP → Citrus). |
   | `docs/security-model.md` *(new)* | The canonical model, as the additive 
sub-project expansion of the umbrella Apache Camel Security Model: header with 
version binding and provenance legend; caller roles and an eight-row 
component-family table (CLI, graph parsers, skills/templates, Ship controller, 
Ship resolver/payloads, MCP servers, generated projects, 
shipped-but-unsupported); explicit non-goals; trust boundaries, data flow and 
per-family reachability preconditions; environment assumptions and the negative 
side-effect inventory; configuration knobs that move the envelope (generated 
harness allow-lists, MCP auto-approval, snapshot repositories, Ship 
`--ask`/`--backend`/`--accept-experimental`, `CAMEL_KIT_SHIP_STATE_HOME`); a 
per-entry-point input trust table; the adversary model (untrusted source-tree 
author, model output as attacker-influenced input, network peer, other local 
accounts); eleven claimed properties with violation symptom and severity tier 
(inherited source-readin
 g contract, hardened XML, `init` write confinement, pinned supply chain, Ship 
controller authority, tree policy, secret redaction, isolated validation, 
expression gate, generated least-privilege assets, stated resource bounds); 
disclaimed properties and false friends; downstream responsibilities including 
deployment hardening; known misuse patterns; known non-findings usable as a 
scanner suppression list; revision triggers; the closed set of triage 
dispositions with the mapping for the categories named in #5 (framework 
vulnerability vs. LLM hallucination vs. user-directed insecure design vs. 
operator misconfiguration); 13 open questions in three waves; a provenance 
back-map appendix. |
   | `docs/security-model.yaml` *(new)* | Derived machine-readable sidecar 
(roles, families, entry points, knobs, claimed/disclaimed properties, 
non-findings, dispositions, open questions, revision triggers) for automated 
and AI-assisted triage, as the umbrella model and Camel K ship. |
   | `.github/ISSUE_TEMPLATE/config.yml` *(new)* | Contact link "Report a 
security vulnerability" pointing at the ASF process, so the public issue form 
warns before a report is filed. |
   | `README.md`, `CONTRIBUTING.md`, `CLAUDE.md` | Pointers: README 
documentation list and a Security section; CONTRIBUTING issue guideline, "Where 
to Document" row and a Security section listing the changes that must update 
the model; CLAUDE.md "Security model" section (an agent must never open a 
public issue or PR about a suspected vulnerability) and a definition-of-done 
item. |
   | `CHANGELOG.md`, `docs/architecture.md` | Unreleased entry; the decision 
and rejected alternatives recorded under "Key Design Decisions". |
   
   ## Decisions taken in this PR
   
   - **File names.** `docs/security-model.md` as named in #5, with the sidecar 
named after it (`docs/security-model.yaml`), matching the umbrella 
`security-model.adoc` / `security-model.yaml` pairing. Camel K uses 
`docs/threat-model.md`; either name works for the ASF index registration.
   - **Structure.** The threat-model rubric's section numbering (4.1–4.15) is 
kept, as Camel K did, so triagers familiar with the rubric and the umbrella's 
disposition labels can map them one-to-one.
   - **Status is DRAFT.** 125 documented / 0 maintainer / 23 inferred tags. The 
inferred claims are hypotheses until the §4.14 questions are answered; the 
document says so in its header and marks what still needs a maintainer ruling.
   - **"Templates" in the issue's deliverable list** was read as GitHub issue 
templates (contributor-facing), hence the `config.yml` contact link. The 
generated per-agent workspace templates were deliberately not changed: they 
already carry the operative rules (Iron Laws, `context-authority.md`, the 
security checklist), and linking a user's project instructions to this 
repository's model adds little (open question Q13).
   
   ## Review path
   
   The fastest way to turn the draft into an accepted model is to answer wave 1 
of §4.14 (Q1–Q5): the source-reading contract for all nine graph parsers, the 
termination/symlink stance for graph analysis, whether the generated Claude 
allow-list and MCP auto-approval are the supported posture, the status of 
snapshot repositories in the defaults, and the model/harness boundary for 
prompt injection. Each question states a proposed answer to confirm, correct or 
strike. Once accepted, the Camel PMC can register the document in 
`apache/security-site` (`scripts/project-coordinates.json`) under Apache Camel, 
as Camel K, Camel Quarkus, Camel Karaf, Kamelets and Kafka Connector are (Q10).
   
   ## Verification
   
   - Documentation-only change: no Java, skill, template or trait files 
touched, so no module test run applies.
   - `./mvnw -B -Psourcecheck validate` passes (CI format gate).
   - `docs/security-model.yaml` parses with a YAML loader; section references 
are strings; every `(inferred — Qn)` tag in the prose names a question defined 
in §4.14; all relative links and anchors in the touched Markdown files resolve.
   
   🤖 Generated with [Claude Code](https://claude.com/claude-code)
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to