SalsaGate logo SalsaGate

SalsaGate Technical Documentation

Project: SalsaGate — Supply-Chain Security & Verification for DevSecOps Teams
Version 1.0 • Last updated: Nov 2025

Status: Active Owners: DevSecOps Platform Team

1. Abstract

High-level overview of the problem and SalsaGate’s solution.

SalsaGate is a supply-chain security platform that integrates with existing CI/CD pipelines to ensure that software artifacts and infrastructure changes are authenticated, policy-compliant, and auditable from commit to production. The core idea is to treat each build or deployment as a verifiable event backed by cryptographic signatures, SBOMs, and attestations.

This document describes SalsaGate’s architecture, design decisions, security model, and evaluation. It is written for engineers, DevSecOps practitioners, and reviewers who need a deeper technical understanding of the system.

2. Introduction

Background, motivation, and context.

Modern software supply chains rely on a complex mesh of source repositories, build systems, package registries, container registries, and deployment platforms. Compromises at any stage—such as tampered images, malicious dependencies, or misconfigured pipelines—can lead to production incidents and regulatory risk.

Rather than relying on ad-hoc checks and manual approvals, SalsaGate introduces a structured verification layer. Every artifact and configuration must meet a set of machine-readable policies before promotion. Verification results are stored as evidence, enabling both automated gates and human audits.

The design is influenced by principles from SLSA, NIST supply-chain guidance, and real-world DevSecOps workflows, but it focuses on pragmatic integration with tools teams already use.

3. Problem Statement & Goals

What SalsaGate is trying to solve and why.

3.1 Problem Statement

3.2 Project Goals

3.3 Scope

The initial scope covers build artifacts (binaries, containers, bundles) and infrastructure plans (e.g. Terraform). Runtime behavior such as behavior-based anomaly detection is out of scope for this version.

4. System Architecture

Components, interactions, and trust boundaries.

SalsaGate is composed of three main components:

  1. CLI & CI Integrations — Lightweight clients that run in CI to authenticate, register artifacts, and ask SalsaGate to verify them.
  2. Verification Service — A stateless API that performs signature checks, policy evaluation, and logging.
  3. Evidence Store — A durable store for SBOMs, attestations, and verification events.
# Simplified data flow
Developer → CI Build → (sign + attest)
  → SalsaGate Verify API
    → Evidence Store
      → Deploy (K8s admission / release gates)
Component Responsibility
CLI Auth, register, verify, attest
Verify API Signature & policy evaluation
Evidence Store SBOMs, attestations, logs
Admission Controller Runtime enforcement

Typical verification flow for a container image:

  1. CI builds an image and pushes it to a container registry.
  2. CI generates an SBOM and vulnerability scan report, then creates an attestation.
  3. CI signs both the image and attestation using Cosign or another signer.
  4. SalsaGate CLI calls the verification API with references to the image and attestations.
  5. The API fetches signatures/metadata, evaluates policy, and records the result in the evidence store.
  6. Deployment tooling or admission controls check SalsaGate before allowing production deployment.
# CI verification step
salsagate verify \
  --artifact ghcr.io/org/app:sha-1234 \
  --policy strict \
  --sbom sbom.spdx.json \
  --attestation vuln-scan.json

Text-based sequence diagram (GitHub Actions + SalsaGate + Kubernetes):

Developer        GitHub Actions        SalsaGate API        Evidence Store        K8s Admission
    |                   |                     |                    |                    |
    |   git push        |                     |                    |                    |
    |------------------>|                     |                    |                    |
    |                   | build, test, scan   |                    |                    |
    |                   |-------------------->|                    |                    |
    |                   | sign image & SBOM   |                    |                    |
    |                   |-------------------->| verify(image,...)  |                    |
    |                   |                     |----policy checks--->|                    |
    |                   |                     |<---store results---|                    |
    |                   |   deploy manifest   |                    | verify admission   |
    |                   |------------------------------------------->|------------------>|
    |                   |                     |                    | allow / deny       |

5. Technology Stack

Languages, frameworks, and infrastructure services.

Core Services

  • Backend: Go or TypeScript (Node.js), packaged as stateless services.
  • API: REST + JSON responses, with optional gRPC for internal use.
  • Storage: PostgreSQL for metadata, object storage (e.g. S3) for large artifacts.
  • Caching: Redis for hot verification results (optional but recommended).

Integrations

  • SalsaGate CLI distributed as a single binary.
  • GitHub Actions / GitLab CI / Jenkins templates.
  • Kubernetes admission controller for runtime gating.

Security & Identity

  • OIDC workload identity from GitHub, GitLab, or cloud providers.
  • Cosign / Sigstore, KMS/HSM, and GPG as signing backends.
  • mTLS for internal service-to-service communication.

Observability

  • Structured JSON logs with correlation IDs.
  • Prometheus metrics for latency, error rate, and throughput.
  • OpenTelemetry-compatible tracing hooks.

6. Design & Implementation

Key design choices and how they are implemented.

6.1 Policy-as-Code

Policies are stored as versioned YAML files in the same repositories as the services they govern. Each policy can be associated with a project, environment (dev/stage/prod), or artifact type.

# policy.yml
require_signatures: true
allowed_signers:
  - ci-bot@salsagate.dev
  - release-manager@salsagate.dev
enforce_sbom: true
checks:
  - name: unit-tests
    must_pass: true
  - name: vuln-scan
    severity_max: "medium"

6.2 Stateless Verification Service

The verification API is stateless with respect to client sessions. Requests carry all necessary identifiers (artifact URIs, policy name, attestation locations). This simplifies scaling and makes the service easy to deploy in containerized environments.

Stateless design allows horizontal scaling and blue/green deployments without migrating session state.

6.3 CI/CD Integration Pattern

Integration aims to be minimal and tool-agnostic. CI pipelines:

# GitHub Actions example
- name: Build
  run: make build

- name: Sign artifact
  run: cosign sign-blob --key ${{ secrets.COSIGN_KEY }} dist/app.tar.gz

- name: SalsaGate Verify
  run: salsagate verify \
    --artifact dist/app.tar.gz \
    --policy strict

7. Security, Privacy & Ethics

Threat model, mitigations, and ethical considerations.

SalsaGate sits in the critical path of deployments. A compromise could enable malicious releases or block legitimate ones. Hardened deployment and ongoing monitoring are essential.

7.1 Threat Model

7.2 Mitigations

7.3 Privacy & Ethics

SalsaGate primarily manages metadata and security-relevant information (hashes, identities, SBOMs). It is not designed to store personal data. Teams should avoid logging secrets and follow internal data classification guidelines when exporting evidence.

Ethically, SalsaGate aims to increase transparency and accountability in software releases, reducing the risk of harmful incidents caused by unnoticed supply-chain manipulations.

8. Testing & Evaluation

Verification correctness, performance, and integration tests.

8.1 Unit & Integration Tests

# Run Go tests
go test ./...

# or language-specific
npm test
pytest

8.2 Performance Evaluation

Key targets for v1:

8.3 CI Validation

Reference pipelines exist for:

9. Challenges & Limitations

Known constraints and lessons learned.

Diverse signing approaches

Organizations often mix Cosign, GPG, and cloud KMS signing. SalsaGate addresses this through pluggable verification backends, but configuration can still be complex in multi-cloud environments.

Developer experience vs strict policies

If policies are too strict from day one, teams may view SalsaGate as a blocker. To mitigate this, policies support different enforcement modes (observe, warn, enforce) that can be rolled out gradually.

Evidence storage growth

Evidence can grow quickly in high-velocity environments. Retention policies, tiered storage, and export-to-archive workflows are required to keep storage costs manageable.

10. Future Work

Planned enhancements and research directions.

11. References

Standards, tools, and related work.