Summary
Set up the plugin signing pipeline using cosign / Sigstore per doc 13 §7.2. Plugin .wasm modules are signed at publish time with the publisher's cosign identity (Sigstore keyless OIDC or KMS-backed). The host loads plugin.signing.trusted_keys (PEM bundle, identity regex/exact match) from the secret store. Unsigned plugins are blocked by default. Plugins from unknown publishers require admin confirmation (type publisher name) plus an audit-log event. Plugins whose signature does not verify are refused to load.
Design reference
- docs/13-security-baseline.md §7.2 (plugins signing), §7.9 (tradeoffs — keyless vs KMS)
Acceptance criteria
Dependencies
#105
Complexity
L
Summary
Set up the plugin signing pipeline using
cosign/ Sigstore per doc 13 §7.2. Plugin.wasmmodules are signed at publish time with the publisher's cosign identity (Sigstore keyless OIDC or KMS-backed). The host loadsplugin.signing.trusted_keys(PEM bundle, identity regex/exact match) from the secret store. Unsigned plugins are blocked by default. Plugins from unknown publishers require admin confirmation (type publisher name) plus an audit-log event. Plugins whose signature does not verify are refused to load.Design reference
Acceptance criteria
cosign signstep for plugin.wasmartifacts (Sigstore keyless via GitHub OIDC, or KMS-backed)cosign verifyagainst identities inplugin.signing.trusted_keysDependencies
#105
Complexity
L