6.3 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	
			6.3 KiB
		
	
	
	
	
	
	
	
Imposed rule: Work of this type or tasks of this type on this component must also be applied everywhere else it should be applied.
Pack Signing & RBAC Controls
This document defines signing, verification, and authorization requirements for Task Packs across the CLI, Packs Registry, Task Runner, and Offline Kit. It aligns with Authority sprint tasks (AUTH-PACKS-41-001, AUTH-PACKS-43-001) and security guild expectations.
1 · Threat Model Highlights
| Threat | Mitigation | 
|---|---|
| Unsigned or tampered pack uploaded to registry | Mandatory cosign/DSSE verification before acceptance. | 
| Unauthorized user publishing or promoting packs | Authority scopes (Packs.Write) + registry policy checks. | 
| Privilege escalation during approvals | Approval gates require Packs.Approve + audit logging; fresh-auth recommended. | 
| Secret exfiltration via pack steps | Secrets injection sandbox with redaction, sealed-mode network guardrails, evidence review. | 
| Replay of old approval tokens | Approval payloads carry plan hash + expiry; Task Runner rejects mismatches. | 
| Malicious pack in Offline Kit | Mirror verification using signed manifest and DSSE provenance. | 
2 · Signing Requirements
- Cosign signatures required for all bundles. Keys can be:
- Keyless (Fulcio OIDC).
 - KMS-backed (HSM, cloud KMS).
 - Offline keys stored in secure vault (air-gapped mode).
 
 - DSSE Attestations recommended to embed:
- Manifest digest.
 - Build metadata (repo, commit, CI run).
 - CLI version (
stella/pack). 
 - Signatures stored alongside bundle in registry object storage.
 stella pack pushrefuses to publish without signature (unless--insecure-publishused in dev).- Registry enforces trust policy:
 
| Policy | Description | 
|---|---|
anyOf | 
Accepts any key in configured trust store. | 
keyRef | 
Accepts specific key ID (kid). | 
oidcIssuer | 
Accepts Fulcio certificates from allowed issuers (e.g., https://fulcio.sigstore.dev). | 
threshold | 
Requires N-of-M signatures (future release). | 
3 · RBAC & Scopes
Authority exposes pack-related scopes:
| Scope | Description | 
|---|---|
Packs.Read | 
View packs, download manifests/bundles. | 
Packs.Write | 
Publish, promote, deprecate packs. | 
Packs.Run | 
Execute packs (Task Runner, CLI). | 
Packs.Approve | 
Approve pack gates, override tenant visibility. | 
3.1 Role Mapping
| Role | Scopes | Use Cases | 
|---|---|---|
pack.viewer | 
Packs.Read | 
Inspect packs, plan runs. | 
pack.publisher | 
Packs.Read, Packs.Write | 
Publish new versions, manage channels. | 
pack.operator | 
Packs.Read, Packs.Run | 
Execute packs, monitor runs. | 
pack.approver | 
Packs.Read, Packs.Approve | 
Fulfil approvals, authorize promotions. | 
pack.admin | 
All | Full lifecycle management (rare). | 
Roles are tenant-scoped; cross-tenant access requires explicit addition.
3.2 CLI Enforcement
- CLI requests scopes based on command:
stella pack plan→Packs.Read.stella pack run→Packs.Run.stella pack push→Packs.Write.stella pack approve→Packs.Approve.
 - Offline tokens must include same scopes; CLI warns if missing.
 
4 · Approvals & Fresh Auth
- Approval commands require recent fresh-auth (< 5 minutes). CLI prompts automatically; Console enforces via Authority.
 - Approval payload includes:
runIdgateIdplanHashapprovertimestamp
 - Task Runner logs approval event and verifies plan hash to prevent rerouting.
 
5 · Secret Management
- Secrets defined in pack manifest map to Authority secret providers (e.g., HSM, Vault).
 - Task Runner obtains secrets using service account with scoped access; CLI may prompt or read from profile.
 - Secret audit trail:
secretRequestedevent with reason, pack, step.secretDeliveredevent omitted (only aggregate metrics) to avoid leakage.- Evidence bundle includes hashed secret metadata (no values).
 
 
Sealed mode requires secrets to originate from sealed vault; external endpoints blocked.
6 · Audit & Evidence
- Registry, Task Runner, and Authority emit audit events to central timeline.
 - Required events:
pack.version.publishedpack.version.promotedpack.run.started/completedpack.approval.requested/grantedpack.secret.requested
 - Evidence Locker stores DSSE attestations and run bundles for 90 days (configurable).
 - Auditors can use 
stella pack audit --run <id>to retrieve audit trail. 
7 · Offline / Air-Gap Policies
- Offline Kit includes:
- Pack bundles + signatures.
 - Trusted key store (
trust-bundle.pem). - Approval workflow instructions for manual signing.
 
 - Air-gapped approvals:
- CLI generates approval request file (
.approval-request.json). - Approver uses offline CLI to sign with offline key.
 - Response imported to Task Runner.
 
 - CLI generates approval request file (
 - Mirror process verifies signatures prior to import; failure aborts import with 
ERR_PACK_SIGNATURE_INVALID. 
8 · Incident Response
- Compromised pack signature:
- Revoke key via Authority trust store.
 - Deprecate affected versions (
registry deprecate). - Notify consumers via Notifier (
pack.security.alert). - Forensically review run evidence for impacted tenants.
 
 - Unauthorized approval:
- Review audit log for 
Packs.Approveevents. - Trigger 
pack.run.freeze(pauses run pending investigation). - Rotate approver credentials and require fresh-auth.
 
 - Review audit log for 
 - Secret leak suspicion:
- Quarantine evidence bundles.
 - Rotate secrets referenced by pack.
 - Run sealed-mode audit script to confirm guardrails.
 
 
9 · Compliance Checklist
- Signing requirements (cosign/DSSE, trust policies) documented.
 - Authority scope mapping and CLI enforcement captured.
 - Approval workflow + fresh-auth expectations defined.
 - Secret lifecycle (request, injection, audit) described.
 - Audit/evidence integration noted (timeline, Evidence Locker).
 - Offline/air-gap controls outlined.
 - Incident response playbook provided.
 - Imposed rule reminder retained at top.
 
Last updated: 2025-10-27 (Sprint 43).