80 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			80 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
# Baseline Policy Example (`baseline.stella`)
 | 
						||
 | 
						||
This sample policy provides a balanced default for production workloads: block critical findings, require strong VEX justifications to suppress advisories, and warn on deprecated runtimes. Use it as a starting point for tenants that want guardrails without excessive noise.
 | 
						||
 | 
						||
```dsl
 | 
						||
policy "Baseline Production Policy" syntax "stella-dsl@1" {
 | 
						||
  metadata {
 | 
						||
    description = "Block critical, escalate high, enforce VEX justifications."
 | 
						||
    tags = ["baseline","production"]
 | 
						||
  }
 | 
						||
 | 
						||
  profile severity {
 | 
						||
    map vendor_weight {
 | 
						||
      source "GHSA" => +0.5
 | 
						||
      source "OSV" => +0.0
 | 
						||
      source "VendorX" => -0.2
 | 
						||
    }
 | 
						||
    env exposure_adjustments {
 | 
						||
      if env.exposure == "internet" then +0.5
 | 
						||
      if env.runtime == "legacy" then +0.3
 | 
						||
    }
 | 
						||
  }
 | 
						||
 | 
						||
  rule block_critical priority 5 {
 | 
						||
    when severity.normalized >= "Critical"
 | 
						||
    then status := "blocked"
 | 
						||
    because "Critical severity must be remediated before deploy."
 | 
						||
  }
 | 
						||
 | 
						||
  rule escalate_high_internet {
 | 
						||
    when severity.normalized == "High"
 | 
						||
         and env.exposure == "internet"
 | 
						||
    then escalate to severity_band("Critical")
 | 
						||
    because "High severity on internet-exposed asset escalates to critical."
 | 
						||
  }
 | 
						||
 | 
						||
  rule require_vex_justification {
 | 
						||
    when vex.any(status in ["not_affected","fixed"])
 | 
						||
         and vex.justification in ["component_not_present","vulnerable_code_not_present"]
 | 
						||
    then status := vex.status
 | 
						||
         annotate winning_statement := vex.latest().statementId
 | 
						||
    because "Respect strong vendor VEX claims."
 | 
						||
  }
 | 
						||
 | 
						||
  rule alert_warn_eol_runtime priority 1 {
 | 
						||
    when severity.normalized <= "Medium"
 | 
						||
         and sbom.has_tag("runtime:eol")
 | 
						||
    then warn message "Runtime marked as EOL; upgrade recommended."
 | 
						||
    because "Deprecated runtime should be upgraded."
 | 
						||
  }
 | 
						||
}
 | 
						||
```
 | 
						||
 | 
						||
## Commentary
 | 
						||
 | 
						||
- **Severity profile** tightens vendor weights and applies exposure modifiers so internet-facing/high severity pairs escalate automatically.
 | 
						||
- **VEX rule** only honours strong justifications, preventing weaker claims from hiding issues.
 | 
						||
- **Warnings first** – The `alert_warn_eol_runtime` rule name ensures it sorts before the require-VEX rule, keeping alerts visible without flipping to `RequiresVex`.
 | 
						||
- Works well as shared `tenant-global` baseline; use tenant overrides for stricter tolerant environments.
 | 
						||
 | 
						||
## Try it out
 | 
						||
 | 
						||
```bash
 | 
						||
stella policy new --policy-id P-baseline --template blank --open
 | 
						||
stella policy lint examples/policies/baseline.stella
 | 
						||
stella policy simulate P-baseline --candidate 1 --sbom sbom:sample-prod
 | 
						||
```
 | 
						||
 | 
						||
## Compliance checklist
 | 
						||
 | 
						||
- [ ] Policy compiled via `stella policy lint` without diagnostics.
 | 
						||
- [ ] Simulation diff reviewed against golden SBOM set.
 | 
						||
- [ ] Approval note documents rationale before promoting to production.
 | 
						||
- [ ] EOL runtime tags kept up to date in SBOM metadata.
 | 
						||
- [ ] VEX vendor allow-list reviewed quarterly.
 | 
						||
 | 
						||
---
 | 
						||
 | 
						||
*Last updated: 2025-10-26.*
 |