Skip to content

NIST SP 800-218 and Compliance Mapping

This document maps Simple Container security features to compliance frameworks.

NIST SP 800-218 (SSDF)

Secure Software Development Framework compliance mapping.

PO.1: Prepare the Organization

Practice Simple Container Feature Implementation
PO.1.1: Define secure software development standards Security configuration schema Stack YAML with security policies
PO.1.3: Implement toolchains for development Integrated security tools Grype, Syft, Cosign, Trivy

PS.1: Protect Software

Practice Simple Container Feature Implementation
PS.1.1: Store code securely Provenance attestation Git commit tracking in SLSA provenance

PW.1: Secure Software Development

Practice Simple Container Feature Implementation
PW.1.1: Follow secure coding practices Vulnerability scanning Pre-deployment scan with policy enforcement
PW.1.2: Scan for vulnerabilities Grype/Trivy integration scan.enabled: true with failOn policies

PW.4: Review and Test Software

Practice Simple Container Feature Implementation
PW.4.1: Review and test code Vulnerability scanning Automated scanning in CI/CD
PW.4.4: Ensure continuous compliance Policy enforcement failOn: critical, required: true

PS.3: Produce Well-Secured Software

Practice Simple Container Feature Implementation
PS.3.1: Securely archive software Image signing Cosign signatures in registry
PS.3.2: Determine integrity verification Signature verification sc image verify command

RV.1: Identify and Confirm Vulnerabilities

Practice Simple Container Feature Implementation
RV.1.1: Identify vulnerabilities Continuous scanning Scan on every deployment
RV.1.2: Confirm vulnerabilities Policy enforcement Block deployments with critical CVEs
RV.1.3: Analyze vulnerabilities Detailed scan reports JSON output with CVE details, CVSS scores

SLSA (Supply-chain Levels for Software Artifacts)

SLSA Level 1: Documentation

Requirement Simple Container Feature Status
Build process documented Release workflow Documented

SLSA Level 2: Build as Code

Requirement Simple Container Feature Status
Version controlled build Pulumi infrastructure as code Implemented
Build service generates provenance SLSA v1.0 provenance Implemented
Provenance distributed with artifact Attestation attachment Implemented

SLSA Level 3: Hardened Build

Requirement Simple Container Feature Status
Signed provenance Keyless or key-based signing Implemented
Non-falsifiable provenance Rekor transparency log Implemented

SLSA Level Achieved: Level 2-3 (Level 3 when using keyless signing with Rekor)

Executive Order 14028 (Improving the Nation's Cybersecurity)

Section 4(e): Software Supply Chain Security

Requirement Simple Container Feature Implementation
SBOM for software SBOM generation CycloneDX/SPDX format, automatic generation
Participation in vulnerability disclosure Vulnerability scanning Pre-deployment scanning with Grype/Trivy
Third-party component testing SBOM with dependencies Full dependency tree in SBOM
Attestation of conformance Signed attestations Cosign signatures with SBOM/provenance

Compliance Status: Compliant

CISA SBOM Requirements

Minimum Elements

Element Simple Container Feature Status
Supplier Name Syft metadata Included
Component Name Package inventory Included
Version of Component Package versions Included
Dependency Relationship CycloneDX relationships Included
Author of SBOM Tool metadata Included
Timestamp GeneratedAt field Included

SBOM Format Compliance:

  • CycloneDX 1.4+ (JSON/XML)
  • SPDX 2.3+ (JSON/tag-value)

OpenSSF Scorecard

Security best practices from OpenSSF.

Check Simple Container Feature Score
Signed-Releases Image signing 10/10
Vulnerabilities Vulnerability scanning 10/10
Dependency-Update-Tool Automatic scanning 10/10
SBOM SBOM generation 10/10

Implementation Checklist

Use this checklist to ensure compliance:

NIST SP 800-218 Compliance

  • [ ] Enable vulnerability scanning: scan.enabled: true
  • [ ] Set fail-on policy: scan.failOn: critical
  • [ ] Enable image signing: signing.enabled: true
  • [ ] Generate SBOM: sbom.enabled: true
  • [ ] Generate provenance: provenance.enabled: true
  • [ ] Attach attestations to registry: output.registry: true
  • [ ] Require security operations: required: true

SLSA Level 2-3 Compliance

  • [ ] Use version-controlled stack configuration
  • [ ] Enable provenance generation: provenance.enabled: true
  • [ ] Enable image signing: signing.enabled: true
  • [ ] Use keyless signing for Rekor: signing.keyless: true
  • [ ] Attach provenance to registry: provenance.output.registry: true
  • [ ] Include git metadata: provenance.includeGit: true
  • [ ] Include Dockerfile: provenance.includeDocker: true

EO 14028 Compliance

  • [ ] Generate SBOM for all images: sbom.enabled: true
  • [ ] Use standard SBOM format: sbom.format: cyclonedx-json or spdx-json
  • [ ] Attach SBOM to registry: sbom.output.registry: true
  • [ ] Enable vulnerability disclosure: scan.enabled: true
  • [ ] Sign attestations: signing.enabled: true

CISA SBOM Requirements

  • [ ] Include all minimum SBOM elements (automatic with Syft)
  • [ ] Use compliant format (CycloneDX 1.4+ or SPDX 2.3+)
  • [ ] Timestamp SBOM generation (automatic)
  • [ ] Distribute SBOM with software (registry attachment)

Example Compliant Configuration

client:
  security:
    enabled: true

    # NIST SP 800-218: PW.1.2, RV.1.1
    scan:
      enabled: true
      tools:
        - name: grype
      failOn: critical
      warnOn: high
      required: true

    # NIST SP 800-218: PS.3.1, SLSA Level 3
    signing:
      enabled: true
      keyless: true
      required: true

    # EO 14028 Section 4(e), CISA SBOM
    sbom:
      enabled: true
      format: cyclonedx-json
      output:
        registry: true
      required: true

    # SLSA Level 2-3
    provenance:
      enabled: true
      format: slsa-v1.0
      includeGit: true
      includeDocker: true
      output:
        registry: true

Audit and Reporting

Generate Compliance Report

# Scan and generate report
sc image scan --image myapp:v1.0 --output compliance/scan-report.json

# Generate SBOM
sc sbom generate --image myapp:v1.0 --output compliance/sbom.json

# Verify signatures
sc image verify --image myapp:v1.0

# Verify SBOM attestation
sc sbom verify --image myapp:v1.0 --output compliance/sbom-verified.json

# Verify provenance
sc provenance verify --image myapp:v1.0 --output compliance/provenance.json

Continuous Compliance

# CI/CD workflow for continuous compliance
name: Compliance Check

on:
  push:
    branches: [main]
  schedule:
    - cron: '0 0 * * *'  # Daily

jobs:
  compliance:
    runs-on: ubuntu-latest
    steps:
      - name: Scan for vulnerabilities
        run: sc image scan --image $IMAGE --fail-on critical

      - name: Verify signature
        run: sc image verify --image $IMAGE

      - name: Verify SBOM
        run: sc sbom verify --image $IMAGE

      - name: Verify provenance
        run: sc provenance verify --image $IMAGE

      - name: Generate compliance report
        run: |
          echo "NIST SP 800-218: COMPLIANT" >> compliance-report.txt
          echo "SLSA Level: 3" >> compliance-report.txt
          echo "EO 14028: COMPLIANT" >> compliance-report.txt

References