2.9 KiB
2.9 KiB
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.
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_runtimerule name ensures it sorts before the require-VEX rule, keeping alerts visible without flipping toRequiresVex. - Works well as shared
tenant-globalbaseline; use tenant overrides for stricter tolerant environments.
Try it out
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 lintwithout 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.