← Alle Beiträge

Open Component Model in der Produktion: Software Bills of Delivery für Cloud-Native Supply Chains erstellen

Matthias Bruns · · 7 Min. Lesezeit
open-component-model software-supply-chain cloud-native security

Das Open Component Model (OCM) stellt einen grundlegenden Wandel in unserem Ansatz zur Software-Supply-Chain-Sicherheit dar. Während die meisten Unternehmen mit mangelnder Transparenz bei den Abhängigkeiten ihrer verteilten Systeme kämpfen, bietet OCM einen offenen Standard für die Erstellung umfassender Software Bills of Delivery (SBOD), die alles von Container-Images bis hin zu Konfigurationsdateien, Signaturen und Versionsbeschränkungen in Ihrer gesamten Delivery-Pipeline erfassen.

Im Gegensatz zu herkömmlichen Software Bills of Materials, die sich auf Quellcode-Abhängigkeiten konzentrieren, verfolgt OCM die tatsächlichen Artefakte, die Sie in die Produktion ausliefern. Diese Unterscheidung ist wichtig, wenn Sie komplexe Cloud-Native-Anwendungen verwalten, bei denen die Lücke zwischen dem, was Sie entwickeln, und dem, was Sie deployen, erhebliche Sicherheitsrisiken mit sich bringen kann.

Was OCM unterscheidet

Die Open Component Model Spezifikation definiert OCM als “einen offenen Standard zur Beschreibung von Software-Bill-of-Deliveries (SBOD)”, der ein “technologie-agnostisches und maschinenlesbares Format ist, das sich auf die Software-Artefakte konzentriert, die für Software-Produkte geliefert werden müssen.”

Dieser Fokus auf Delivery-Artefakte statt auf Quellcode-Abhängigkeiten schließt eine kritische Lücke in den meisten Supply-Chain-Sicherheitsansätzen. Wenn Sie eine Microservices-Anwendung deployen, liefern Sie nicht nur Ihren Anwendungscode aus – Sie stellen Container-Images, Helm-Charts, Konfigurationsdateien, Zertifikate und oft auch Drittanbieter-Komponenten bereit. OCM erfasst all diese Elemente mit ihren Beziehungen und ihrer Herkunft.

Das Modell organisiert alles um Komponenten und Komponentenversionen. Eine Komponente repräsentiert eine logische Software-Einheit (denken Sie an: einen Microservice, eine Bibliothek oder eine ganze Anwendung), während Komponentenversionen spezifische, unveränderliche Releases dieser Komponente darstellen. Jede Komponentenversion enthält:

  • Resources: Die tatsächlichen Artefakte, die Sie ausliefern (Container-Images, Binärdateien, Charts)
  • Sources: Verweise auf Quellcode und Build-Informationen
  • References: Abhängigkeiten zu anderen Komponenten
  • Signatures: Kryptografische Beweise für Authentizität und Integrität

Software Bills of Delivery erstellen

Die Erstellung effektiver Software Bills of Delivery mit OCM beginnt mit der OCM CLI, die die primäre Schnittstelle für die Interaktion mit OCM-Elementen bereitstellt. Die CLI hilft Ihnen dabei, “Komponentenversionen zu erstellen und sie in CI- und CD-Prozesse einzubetten.”

Um mit der CLI zu beginnen, können Sie sie mit dem offiziellen Installer installieren:

curl -sfL https://ocm.software/install-cli.sh | bash

Die CLI unterstützt auch mehrere Installationsmethoden, einschließlich Nix. Laut der Repository-Dokumentation können Sie Nix für Ad-hoc-Ausführung oder permanente Installation verwenden:

# ad-hoc cmd execution
nix run github:open-component-model/ocm -- --help

# install development version
nix profile install github:open-component-model/ocm

Hinweis: Das Haupt-OCM-Projekt ist derzeit als “Work In Progress” markiert mit der Warnung, dass “schwere Änderungen zu erwarten sind, insbesondere in der Library API.” Das Team arbeitet an einer stabilen API, berücksichtigen Sie dies also bei der Planung von Produktions-Deployments.

Die CLI arbeitet mit Komponentenbeschreibungen – JSON- oder YAML-Dateien, die Ihre Komponentenversionen definieren. Diese Beschreibungen erfassen nicht nur, was Sie ausliefern, sondern auch, wie es sich zu anderen Komponenten verhält und woher es stammt.

Repository-Mappings und Speicherung

OCM unterstützt mehrere Speicher-Backends durch sein Repository-Mapping-System. Die aktuelle Implementierung unterstützt:

  • OCI-Repositories: Verwendung des Repository-Präfix-Pfads eines OCI-Repositorys zur Implementierung eines OCM-Repositorys
  • CTF (Common Transport Format): Dateibasierte Bindung zur Darstellung von Komponentenversionen als Dateisystem-Inhalt (Verzeichnis, tar, tgz)

Diese Flexibilität bedeutet, dass Sie Ihre Software Bills of Delivery neben Ihren Container-Images in bestehenden OCI-Registries speichern oder sie als portable Dateien für Air-Gapped-Umgebungen verpacken können. Das OCI-Mapping ist besonders leistungsstark, da es bestehende Registry-Infrastruktur nutzt und gleichzeitig OCMs Metadaten-Ebene hinzufügt.

Kryptografische Signierung und Verifizierung

Supply-Chain-Sicherheit erfordert mehr als nur Verfolgung – Sie benötigen kryptografische Beweise dafür, dass Artefakte nicht manipuliert wurden. OCM bietet integrierte Signierungs- und Verifizierungsfähigkeiten, die in allen unterstützten Repository-Implementierungen funktionieren.

Der Signierungsprozess erfasst nicht nur einzelne Artefakte, sondern die gesamte Komponentenversion einschließlich ihrer Beziehungen. Das bedeutet, Sie können nicht nur verifizieren, dass ein Container-Image authentisch ist, sondern auch, dass seine Konfiguration, Abhängigkeiten und Metadaten ebenfalls unverändert sind.

OCMs Ansatz zur Signierung adressiert ein häufiges Problem in Cloud-Native-Umgebungen: Wie verifizieren Sie die Integrität komplexer, multi-artefakt Deployments? Traditionelle Ansätze könnten einzelne Container-Images signieren, aber OCM signiert das vollständige Delivery-Paket.

Automatisierte Deployments mit OCM-Controllern

Für Produktions-Deployments skalieren manuelle CLI-Operationen nicht. Die OCM Controllers sind “darauf ausgelegt, das automatisierte Deployment von Software mit dem Open Component Model und Flux zu ermöglichen.”

Das OCM K8s Toolkit stellt einen Kubernetes-Operator bereit, der OCM-Ressourcen in Ihren Cluster deployed. Sie können es mit dem bereitgestellten Helm-Chart installieren:

helm install ocm-k8s-toolkit oci://ghcr.io/open-component-model/kubernetes/controller/chart \
    --namespace ocm-k8s-toolkit-system \
    --create-namespace

Die Controller integrieren sich in GitOps-Workflows, insbesondere in Kombination mit FluxCD. Diese Integration ermöglicht das Deployment von Helm-Charts oder Kustomizations aus OCM-Ressourcen bei vollständiger Rückverfolgbarkeit von der Quelle bis zum Deployment.

Umgebungsübergreifender Transport

Eine der mächtigsten Funktionen von OCM ist die Fähigkeit, Komponentenversionen zwischen verschiedenen Umgebungen zu transportieren, während Integrität und Rückverfolgbarkeit erhalten bleiben. Diese Fähigkeit ist essentiell für Unternehmen, die Software zwischen Entwicklungs-, Staging- und Produktionsumgebungen oder zwischen verschiedenen Cloud-Anbietern bewegen müssen.

Der Transport-Mechanismus funktioniert auf der Komponentenversionsebene, was bedeutet, dass Sie ganze Anwendungen mit allen ihren Abhängigkeiten und Metadaten intakt bewegen können. Dies umfasst Szenarien wie:

  • Beförderung von Anwendungen von Staging zur Produktion
  • Deployment in Air-Gapped-Umgebungen
  • Verschiebung von Workloads zwischen Cloud-Anbietern
  • Disaster-Recovery-Szenarien

OCMs Transport bewahrt Signaturen und Verifizierungsketten, sodass Sie beweisen können, dass das, was Sie in der Produktion deployen, genau das ist, was in Ihrer Staging-Umgebung getestet und genehmigt wurde.

Integrationsmuster

OCMs Designphilosophie betont die Integration mit bestehenden Toolchains anstatt deren Ersetzung. Das Modell bietet eine gemeinsame Sprache, die verschiedene Tools verwenden können, um Informationen über Software-Artefakte auszutauschen.

Beispielsweise könnte Ihre CI-Pipeline OCM verwenden, um Build-Artefakte mit ihren Metadaten zu verpacken, Ihre Security-Scanning-Tools könnten Vulnerability-Informationen als OCM-Labels hinzufügen, und Ihre Deployment-Tools könnten OCM-Komponentenversionen konsumieren, um zu verstehen, was sie deployen.

Dieser Ansatz ermöglicht es Ihnen, umfassende Supply-Chain-Verfolgung aufzubauen, ohne Ihre gesamte Toolchain zu ersetzen. OCM fungiert als Integrationsebene, die Ihre bestehenden Tools mit konsistenten Metadaten und Herkunftsverfolgung verbindet.

Produktionsüberlegungen

Bei der Implementierung von OCM in der Produktion erfordern mehrere Faktoren sorgfältige Überlegung:

Repository-Strategie: Wählen Sie zwischen OCI-basierter Speicherung für die Integration mit bestehenden Registries oder CTF für Szenarien, die dateibasierten Transport erfordern. Viele Unternehmen verwenden OCI-Repositories für aktive Entwicklung und CTF für Archivierung oder Air-Gapped-Deployments.

Signierungsinfrastruktur: Etablieren Sie klare Richtlinien dafür, wer Komponentenversionen signieren kann und wie Signierungsschlüssel verwaltet werden. OCM unterstützt sowohl Public-Key- als auch zertifikatbasierte Verifizierung, was die Integration mit bestehender PKI-Infrastruktur ermöglicht.

Automatisierungsintegration: Planen Sie, wie OCM in Ihre bestehenden CI/CD-Pipelines passt. Die CLI kann in Build-Prozesse eingebettet werden, während die Controller die Deployment-Automatisierung handhaben.

Governance und Compliance: OCMs umfassende Metadatenerfassung unterstützt Compliance-Anforderungen, aber Sie benötigen Richtlinien, die definieren, welche Informationen erfasst werden sollen und wie sie für Audit-Zwecke verwendet werden.

Die Zukunft der Software-Supply-Chain-Sicherheit

OCM repräsentiert einen reifenden Ansatz zur Supply-Chain-Sicherheit, der über einfaches Dependency-Scanning hinausgeht. Durch den Fokus auf Delivery-Artefakte und ihre Beziehungen bietet es Transparenz darüber, was tatsächlich in Produktionsumgebungen deployed wird.

Das Engagement des Projekts für offene Standards und die Integration mit bestehenden Tools macht es zu einer praktischen Wahl für Unternehmen, die es ernst meinen mit Supply-Chain-Sicherheit. Da Cloud-Native-Umgebungen komplexer werden, wird eine standardisierte Methode zur Verfolgung, Signierung und Verifizierung ganzer Anwendungsdeployments unerlässlich.

Für Teams, die verteilte Systeme entwickeln, bietet OCM einen Weg zu umfassender Supply-Chain-Transparenz, ohne grundlegende Änderungen an bestehenden Entwicklungs- und Deployment-Prozessen zu erfordern. Der Schlüssel liegt darin, mit klaren Zielen für das zu beginnen, was Sie verfolgen und verifizieren möchten, und dann OCM-Integration schrittweise in Ihre bestehenden Workflows zu integrieren.

Die Kombination aus standardisierten Metadaten, kryptografischer Verifizierung und umgebungsübergreifenden Transport-Fähigkeiten positioniert OCM als Grundlagentechnologie für sichere Software-Auslieferung in Cloud-Native-Umgebungen.

Lesebarkeit

Schriftgröße