Some checks failed
Docs CI / lint-and-preview (push) Has been cancelled
- Implemented PolicyDslValidator with command-line options for strict mode and JSON output. - Created PolicySchemaExporter to generate JSON schemas for policy-related models. - Developed PolicySimulationSmoke tool to validate policy simulations against expected outcomes. - Added project files and necessary dependencies for each tool. - Ensured proper error handling and usage instructions across tools.
73 lines
2.3 KiB
Markdown
73 lines
2.3 KiB
Markdown
# Internal-Only Policy Example (`internal-only.stella`)
|
|
|
|
A relaxed profile for internal services and development environments: allow Medium severities with warnings, rely on VEX more heavily, but still block KEV/actively exploited advisories.
|
|
|
|
```dsl
|
|
policy "Internal Only Policy" syntax "stella-dsl@1" {
|
|
metadata {
|
|
description = "Lenient policy for internal / dev tenants."
|
|
tags = ["internal","dev"]
|
|
}
|
|
|
|
profile severity {
|
|
env exposure_adjustments {
|
|
if env.exposure == "internal" then -0.4
|
|
if env.stage == "dev" then -0.6
|
|
}
|
|
}
|
|
|
|
rule block_kev priority 1 {
|
|
when advisory.has_tag("kev")
|
|
then status := "blocked"
|
|
because "Known exploited vulnerabilities must be remediated."
|
|
}
|
|
|
|
rule allow_medium_with_warning {
|
|
when severity.normalized == "Medium"
|
|
and env.exposure == "internal"
|
|
then warn message "Medium severity permitted in internal environments."
|
|
because "Allow Medium findings with warning for internal workloads."
|
|
}
|
|
|
|
rule accept_vendor_vex {
|
|
when vex.any(status in ["not_affected","fixed"])
|
|
then status := vex.status
|
|
annotate justification := vex.latest().justification
|
|
because "Trust vendor VEX statements for internal scope."
|
|
}
|
|
|
|
rule quiet_low_priority {
|
|
when severity.normalized <= "Low"
|
|
then ignore until "2026-01-01T00:00:00Z"
|
|
because "Quiet low severity until next annual remediation sweep."
|
|
}
|
|
}
|
|
```
|
|
|
|
## Commentary
|
|
|
|
- Suitable for staging/dev tenants with lower blast radius.
|
|
- KEV advisories override lenient behaviour to maintain minimum security bar.
|
|
- Warnings ensure Medium findings stay visible in dashboards and CLI outputs.
|
|
- Quiet rule enforces planned clean-up date; update before expiry.
|
|
|
|
## Try it out
|
|
|
|
```bash
|
|
stella policy lint examples/policies/internal-only.stella
|
|
stella policy simulate P-internal --candidate 1 \
|
|
--sbom sbom:internal-service --env exposure=internal --env stage=dev
|
|
```
|
|
|
|
## Compliance checklist
|
|
|
|
- [ ] Tenant classified as internal-only with documented risk acceptance.
|
|
- [ ] KEV feed synced (Concelier) and tags confirmed before relying on rule.
|
|
- [ ] Quiet expiry tracked; remediation backlog updated prior to deadline.
|
|
- [ ] Developers informed that warnings still affect quality score.
|
|
- [ ] Policy not used for production or internet-exposed services.
|
|
|
|
---
|
|
|
|
*Last updated: 2025-10-26.*
|