Wir haben alle schon viel darüber gehört SBOMs kürzlich. Wir hörten von ihrem Nutzen, ihrer Zusammensetzung und ihren Anforderungen an Sicherheit und Regulierung. Dieses Mal möchte ich mir die Zeit nehmen, über einen etwas weniger bekannten Abschnitt des CyclonDX SBOM zu sprechen – den Abhängigkeitsgraphen.
Anders als der Name vermuten lässt, ist das Abhängigkeitsdiagramm kein visueller Aspekt der SBOM. Sein Zweck besteht darin, die Abhängigkeit von Komponenten von anderen Komponenten zu beschreiben. Dies beruht auf einer Komponente Stück-Ref – eine eindeutige Kennung für jede SBOM-Komponente. Die Idee besteht darin, zu zeigen, welche Elemente voneinander abhängig oder miteinander verbunden sind. Klingt einfach genug, oder?
Scribe verwendet den Abhängigkeitsgraphen häufig, um zu entscheiden, was Elemente der SBOM wichtig sind und worauf wir achten sollten. In diesem Artikel werden wir uns mit der Art und Weise befassen Schreiber nutzt das SBOM-Abhängigkeitsdiagramm und die praktischen Vorteile, die wir daraus ziehen können. Wir werden uns einige JSON-Beispiele eines SBOM-Abhängigkeitsdiagramms ansehen und abschließend einen Blick darauf werfen, was wir in Zukunft sonst noch damit machen können.
Was ist das Abhängigkeitsdiagramm?
Der Abhängigkeitsgraph wurde 2019 zum CyclonDX-Format hinzugefügt. Sein erklärter Zweck bestand darin, Komponenten mithilfe einer eindeutigen Kennung miteinander zu verknüpfen, die später als a bekannt wurde Stück-Ref. In dem Beispiel für CycloneDX-Anwendungsfällekönnen wir sehen, wie die Abhängigkeiten die Referenz-ID der Komponenten verwenden, um zu zeigen, was von was abhängt:
Auch ohne auf Beispiele einzugehen, können Sie sicher erkennen, dass die Möglichkeit, ein Element mit anderen zu verbinden, nützlich sein kann. Zum einen ermöglicht es Ihnen, als häufigster Anwendungsfall, sofort alle Abhängigkeiten einer Bibliothek an einem einzigen Ort anzuzeigen.
Ein Abhängigkeitsgraph kann sowohl direkte als auch transitive Beziehungen darstellen und ist typischerweise einen Knoten tief.
Obwohl ein vollständiger Abhängigkeitsbaum dargestellt werden kann, wird dies nicht empfohlen, da dies aufgrund zirkulärer Abhängigkeiten oder anderer komplexer Beziehungen zu Endlosschleifen führen könnte. Es wird empfohlen, Ihre Diagramme einfach zu halten und einen einzelnen Knoten darzustellen.
Wie verwendet Scribe das Abhängigkeitsdiagramm?
Scribe nutzt in großem Umfang Metadaten, die zusammen mit der SBOM erfasst werden, um den Beweisen einen Kontext zu geben. Der Kontext der Beweise umfasst, wo und wann sie gesammelt wurden, was ihr Gegenstand ist und so weiter. Da Scribe bestrebt ist, zuverlässige, wiederverwendbare Informationen bereitzustellen, nutzen wir das Abhängigkeitsdiagramm, um Verbindungen herzustellen, die über verschiedene Kunden und Projekte hinweg verwendet werden können.
Hier sind die Abhängigkeitsdiagramm-Links, die Scribe unterstützt:
- Paketdatei: Diese Verbindung ermöglicht es uns zu sehen, welche Dateien zu jedem Paket gehören. Wenn wir eine Datei in einem Paket finden, wo sie nicht hingehört, ist das natürlich ein klarer Hinweis auf ein Problem.
- Layer-Angabe und Paket-Layer: Zu wissen, welche Pakete sich in welcher Image-Ebene befinden, ist praktisch, da wir auf diese Weise die Schwachstellen nach Ebenen ordnen können. Probleme, die Sie von Ihrem Basis-Image oder Ihrem übergeordneten Image geerbt haben, hätten nicht die gleiche Dringlichkeit und Ihre direkte Einflussmöglichkeit wie Probleme, die auf von Ihnen selbst erstellten Ebenen zu finden sind.
- Layer-Datei: Ähnlich wie bei der Paket-Datei-Verbindung ermöglicht uns diese Verbindung zu sehen, welche Dateien jeder Ebene zugeordnet sind. Zusammen mit den anderen Verbindungen können wir überprüfen, ob Dateien dem richtigen Paket und der richtigen Ebene zugeordnet sind und dass sich keine Dateien an Orten befinden, an denen sie nicht sein sollten.
- Commit und Commit-Datei: Durch die Identifizierung, welche Dateien von welchem Commit stammen, können wir sicherstellen, dass keine unnötigen Änderungen an den Commit-Dateien vorgenommen wurden, bevor sie zum Erstellen des endgültigen Images verwendet wurden.
Wenn wir all diese Informationen zusammen verwenden, können wir aus der SBOM ein ziemlich umfassendes Bild darüber zeichnen, welche Dateien wo zu finden sein sollten. Dadurch haben wir eine bessere Chance, Ausreißer oder Aberrationen zu erkennen, die auf ein Problem in Ihrem Bild hinweisen könnten – entweder ein Integritätsproblem oder einen möglichen Angriff.
Abhängigkeitsdiagramm und Richtliniendurchsetzung
Scribe nutzt dieses umfassende Abhängigkeitsdiagramm, um komplexe Richtlinien effektiv durchzusetzen. Zum Beispiel die Commit-Datei Die Abhängigkeit wird genutzt, um die Richtlinien des Codeeigentümers einzuhalten. Dadurch können wir überprüfen, wer wann welche Datei übertragen hat. Der Paketdatei Abhängigkeit wird verwendet, um Paketintegritätsrichtlinien sicherzustellen. Damit können wir überprüfen, welche Dateien mit den einzelnen Paketen verknüpft werden sollen, und sicherstellen, dass dies tatsächlich der Fall ist. Darüber hinaus ist die Paketschicht Abhängigkeit wird verwendet, um Paketrichtlinien an die spezifischen Anforderungen jeder Schicht anzupassen. Da jedes Software-Image seine Schichten unterschiedlich aufbauen kann, ist es von unschätzbarem Wert, genau zu wissen, welche Pakete mit welcher Schicht des Bildes verknüpft sind.
Anpassen der Informationen Ihres Abhängigkeitsdiagramms
Wir wissen, dass nicht jeder daran interessiert ist, alle diese Informationen zu teilen, oder dass es ihm egal ist, sie zu sehen oder in irgendeiner Weise zu nutzen.
Um dieses Problem zu lösen, können Sie mit Scribe spezifischere Versionen Ihrer SBOM erstellen. Hier sind die Anpassungsoptionen, die Sie mit unserem nutzen können Valint Tool beim Erstellen von SBOMs, das wir derzeit unterstützen. In Zukunft werden weitere Optionen verfügbar sein:
- Um nur bestimmte Komponentengruppen einzubeziehen, verwenden Sie –Komponenten um zwischen den Gruppentypen zu wählen.
- Um bestimmte Pakettypen einzuschließen oder auszuschließen, verwenden Sie –Pakettyp or –Paket-Ausschlusstyp um einen bestimmten Pakettyp auszuwählen.
- Um die gefundenen installierten Pakete einzuschließen (Paketgruppe installieren) oder die Pakete, auf die von Quellen verwiesen wird (Paketgruppe Index), Verwenden Sie –Paketgruppe um zwischen Optionen zu wählen.
- Um Komponenten auszuschließen, verwenden Sie –filter-regex, –Filterbereich, und –filter-purl um jede Komponente auszuschließen, die Sie ausschließen möchten.
- Um Dateiinhalte anzuhängen, verwenden Sie –attach-regex um den Inhalt externer Dateien einzubinden.
- Um benutzerdefinierte Umgebungen und Beschriftungen einzuschließen, verwenden Sie –env und -Etikett um Ihre benutzerdefinierten Felder anzuhängen. Dadurch können Sie der von Ihnen erstellten SBOM benutzerdefinierte Metadaten hinzufügen.
In die Zukunft schauen
Für Scribe sind der Kontext und die Verbindungen, die wir zwischen den verschiedenen Komponenten Ihrer SBOM herstellen, von größter Bedeutung. Mit der Fähigkeit unseres Valint unterschreiben, verifizieren und Richtlinien verwalten Wir halten es für durchaus möglich, dass in der Zukunft mehr getan werden kann als nur Sicherheitsrichtlinien zu verwalten. Wir können uns eine Zukunft vorstellen, in der die Informationen des Abhängigkeitsdiagramms in der Qualitätskontrolle, bei spezifischen Compliance-Anforderungen und sogar in unabhängigen Bereichen wie Fintech und Landwirtschaft verwendet werden können.
Die Plattform von Scribe verfügt über eine kostenlose Stufe, in der Sie sie jetzt ausprobieren und alle Funktionen nutzen können, die Ihnen zum Spielen zur Verfügung stehen. Ich ermutige Sie dazu Versuche esSehen Sie sich den Nutzen dieser im Laufe der Zeit gesammelten Informationen an und finden Sie heraus, wofür Sie die Informationen verwenden können. Ich hoffe, dass Sie sich uns anschließen, denn wir begrüßen eine sicherere Zukunft für uns alle.
Diese Inhalte werden Ihnen von Scribe Security zur Verfügung gestellt, einem führenden Anbieter von End-to-End-Sicherheitslösungen für die Software-Lieferkette, der modernste Sicherheit für Code-Artefakte sowie Code-Entwicklungs- und Bereitstellungsprozesse in der gesamten Software-Lieferkette bietet. Weitere Informationen.