BAM Core · Release

BAM Core 2.0.4: Ein Startbefehl, ein Bericht, und ein Port, der absichtlich zu bleibt

🎧 Artikel anhören

Executive Summary

Was ist passiert
BAM Core 2.0.4 bringt ein Container-Image und einen druckbaren Bericht. Ein Startbefehl ersetzt die Einrichtung von Hand, der Bericht macht aus dem Bewertungsstand ein Dokument statt eines Tabellenblatts.
Wer ist betroffen
Alle, die BAM Core wegen des Einrichtungsaufwands bisher nur gelesen haben. Dazu Revisoren und Verantwortliche, die einem Leitungsorgan etwas vorlegen müssen.
Priorität
Keine regulatorische. Dies ist eine Werkzeugmeldung, keine Rechtsänderung.
Frist
Keine. Die Modellversion bleibt 2.0, bestehende Verweise und Zitate sind nicht betroffen.
Aufwand
Ein docker compose up. Wer kein Docker einsetzt, bleibt bei der bisherigen Einrichtung; der Bericht funktioniert auch dort.
Erster Schritt
Container starten, eine Handvoll Prüffragen bewerten und den Bericht drucken. Das zeigt in fünf Minuten, ob das Modell die eigenen Fragen beantwortet.
BAM-Bezug
Das Datenmodell wurde nicht angefasst. Alle BAM-IDs bleiben gültig, der DOI der Modellversion 2.0 ist unberührt.

Zwei Dinge entscheiden darüber, ob ein offenes Compliance-Modell benutzt wird: wie schnell man hineinkommt und was man am Ende aus der Hand geben kann. BAM Core 2.0.4 arbeitet an beidem. Am Modell selbst ändert sich dabei nichts, und das ist keine Nebensache, sondern eine Zusage.

Zwei Versionsnummern, zwei Bedeutungen

Bevor es um die Neuerungen geht, lohnt ein Blick auf die Nummer selbst, weil daran eine Zusage hängt. BAM Core führt zwei Versionsnummern nebeneinander, und sie bedeuten Verschiedenes.

Die Modellversion bezeichnet den Stand des Datenmodells. Sie ist das, was zitiert und mit einem DOI versehen wird. Sie steht seit dem 8. September auf 2.0 und wurde seitdem nicht angefasst. Die Release-Nummer bezeichnet den Stand des Repositorys einschließlich der Referenzimplementierung. Sie ist inzwischen bei 2.0.4.

Der praktische Nutzen dieser Trennung zeigt sich genau hier: Ein Release kann die Implementierung erweitern, ohne die Modellversion zu berühren, und berührt damit auch keine Zitation. Wer in einem Arbeitspapier auf eine BAM-ID verweist, muss bei jedem Patch-Release nichts prüfen. Erst eine neue Modellversion ist ein Anlass, ins Änderungsprotokoll zu sehen.

Abbildung 1: Modellversion und Release-Nummer laufen getrennt Was sich ändert und was zitiert wird Modellversion zitiert, mit DOI 2.0 unverändert über alle fünf Releases Release Repository-Stand 2.0 Modell 2.0.1 Re-Release 2.0.2 Re-Release 2.0.3 Gap-Export 2.0.4 Container, Bericht Ein Release kann die Implementierung erweitern, ohne die Zitation zu berühren. Brain-Media.de 2026 · CC BY-SA 4.0
Abbildung 1 · Modellversion und Release laufen getrenntDie obere Zusage ist die, auf die sich ein Nachweis stützt. Solange sie unverändert bleibt, sind Verweise auf BAM-IDs gültig, gleichgültig wie oft die untere Reihe weiterzählt. Erst eine neue Modellversion ist ein Anlass, bestehende Bewertungen gegenzulesen.

Eigene Darstellung nach der Unterscheidung von Modellversion und Release-Nummer in CHANGELOG.md des Repositorys brain-media-audit-model.
Darstellung: Brain-Media.de, lizenziert unter CC BY-SA 4.0.

Der Container: ein Startbefehl statt einer Einrichtung

Bisher setzte der Einstieg einen Repository-Klon, eine Python-Umgebung und einen manuellen Start voraus. Ein docker compose up ersetzt das, danach ist das Dashboard unter localhost:5000 erreichbar. Das ist weniger eine Funktion als eine Entscheidung darüber, wie viele Leute BAM überhaupt ausprobieren.

Drei Details sind dabei bemerkenswerter, als eine Patch-Version vermuten lässt. Im Container läuft waitress statt des Flask-Entwicklungsservers, der Prozess läuft nicht als root, und ein Healthcheck prüft den Meta-Endpunkt. Das sind keine Vorkehrungen für ein Spielzeug, sondern für etwas, das jemand versehentlich produktiv nehmen könnte.

Dazu kommt ein Detail für die eigene Arbeit: bam_database.json ist als Volume eingebunden. Ein eigener Modellstand lässt sich damit verwenden, ohne das Image neu zu bauen. Wer das Modell um eigene Objekte erweitert, etwa um branchenspezifische Anforderungen, muss dafür nicht in den Bauprozess.

Der Port, der absichtlich zu bleibt

Der Port ist in der Compose-Datei bewusst auf 127.0.0.1 gebunden. Dahinter steht ein Satz, den man in Produktankündigungen selten liest: BAM Core 2.0.x kennt weder Authentifizierung noch Mandanten und gehört nicht ungeschützt ins Netz.

Das ist keine Entschuldigung, sondern die konsequente Folge der Architektur. Eine Installation, die keinen Bewertungsstand serverseitig hält, braucht keine Benutzerverwaltung. Sobald der Instanz-Layer in Version 2.2 kommt, ändert sich beides zusammen, Persistenz und Zugangsschutz. Bis dahin ist die Bindung auf die eigene Maschine die ehrlichere Voreinstellung als ein Hinweis im Kleingedruckten.

Wer BAM Core dennoch auf einem Server betreiben will, findet im Deployment Guide die Vorlage für den Betrieb hinter Nginx mit TLS. Der Unterschied ist nicht kosmetisch: Vor dem Dienst steht dann etwas, das Zugänge prüfen kann.

Abbildung 2: Warum der Port auf die eigene Maschine gebunden ist Eigene Maschine BAM Core im Container waitress, nicht als root Healthcheck auf /api/v2/meta gebunden an 127.0.0.1:5000 nicht vorgesehen Nginx mit TLS Zugangsschutz davor Netz andere Nutzer BAM Core 2.0.x kennt weder Authentifizierung noch Mandanten. Zugangsschutz und serverseitiger Bewertungsstand kommen gemeinsam mit 2.2. Brain-Media.de 2026 · CC BY-SA 4.0
Abbildung 2 · Warum der Port zu bleibtDie Bindung an die eigene Maschine ist keine Einschränkung, die man wegkonfiguriert, sondern die Voreinstellung, die zum Funktionsumfang passt. Solange eine Installation keine Benutzer kennt, hat sie im Netz nichts verloren. Der zulässige Weg führt über etwas, das Zugänge prüfen kann.

Eigene Darstellung nach den Angaben zum Container-Image in CHANGELOG.md und README.md des Repositorys brain-media-audit-model, Release 2.0.4.
Darstellung: Brain-Media.de, lizenziert unter CC BY-SA 4.0.

Der Bericht: ein Dokument, kein ausgedrucktes Tabellenblatt

Im Reiter Export sitzt neben dem Arbeitspapier jetzt eine Schaltfläche Bericht drucken. Sie erzeugt ein Deckblatt, eine Zusammenfassung je Regulierung und die Feststellungen als Fließtext, nach Risikoscore absteigend, dazu eine Liste der noch nicht bewerteten Prüffragen.

Dahinter liegt ein eigenes Druck-Stylesheet: A4, Seitenumbrüche vor jedem Abschnitt, keine umbrochenen Einzelpositionen. Das PDF entsteht über den Druckdialog des Browsers, es wird keine PDF-Bibliothek und keine zusätzliche Software benötigt. Für ein Projekt, das von Revisoren auf fremden Rechnern benutzt wird, ist das weniger Bequemlichkeit als Verzicht auf eine Abhängigkeit.

Die Trennung zum Export ist Absicht. Der Export liefert eine Tabelle zur Weiterverarbeitung, der Bericht ein Dokument zum Lesen. Zwei Ausgaben für zwei Leser:

 Arbeitspapier (Export)Bericht (Druckansicht)
FormatCSV, XLSX, JSONPDF über den Druckdialog
Aufbau21 Spalten je AnforderungDeckblatt, Zusammenfassung, Fließtext
Sortierungnach RegulierungFeststellungen nach Risikoscore
Gedacht fürWeiterverarbeitung, eigene AuswertungLeitungsorgan, Ablage, Prüfer
Seit2.0.32.0.4

Der serverseitige Berichtsgenerator mit Anwendbarkeitserklärung, Managementbericht und Prüferpaket bleibt Version 2.4 vorbehalten. Was jetzt kommt, ist die Fassung, die ohne Server auskommt.

Der Erfüllungsgrad als Untergrenze

Ein Detail aus dem Änderungsprotokoll verdient mehr Aufmerksamkeit, als es dort bekommt: Der Erfüllungsgrad wird als Untergrenze ausgewiesen, solange nicht alle Prüffragen bewertet sind.

Die Punktlogik ist einfach. Erfüllt zählt 1, teilweise erfüllt 0,5, nicht erfüllt 0, bezogen auf alle Objekte mit Prüffrage. Eine Anforderung, die noch niemand angesehen hat, zählt damit wie eine nicht erfüllte. Das ist rechnerisch streng und fachlich richtig, denn eine ungeprüfte Anforderung ist kein guter Zustand, sondern ein unbekannter.

Der Unterschied zur verbreiteten Praxis ist erheblich. Wer den Erfüllungsgrad nur auf die bereits bewerteten Fragen bezieht, bekommt nach drei beantworteten Prüffragen eine Zahl von 100 Prozent und damit genau das Gegenteil einer Aussage. Die Untergrenze kann im Verlauf einer Bewertung nur steigen. Ein Wert, der im Bericht steht, wird durch weitere Arbeit also nie schlechter, sondern bestenfalls genauer.

Abbildung 3: Warum der ausgewiesene Erfüllungsgrad eine Untergrenze ist Alle Anforderungen mit Prüffrage erfüllt zählt 1 teilweise zählt 0,5 nicht erfüllt zählt 0 noch nicht bewertet zählt ebenfalls 0 bewertet, Aussage belastbar unbekannt, nicht günstig gerechnet ausgewiesener Wert die Untergrenze kann nur steigen Bezogen wird immer auf alle Anforderungen, nie nur auf die bereits bearbeiteten. Brain-Media.de 2026 · CC BY-SA 4.0
Abbildung 3 · Der Erfüllungsgrad als UntergrenzeDie Breiten im Bild sind schematisch, die Rechenregel ist es nicht. Entscheidend ist der rechte Block: Er zählt null, obwohl über ihn nichts bekannt ist. Dadurch beschreibt der ausgewiesene Wert den schlechtesten noch möglichen Fall, und jede weitere Bewertung kann ihn nur anheben.

Eigene Darstellung der in CHANGELOG.md zu Release 2.0.3 und 2.0.4 beschriebenen Punktlogik des Dashboards.
Darstellung: Brain-Media.de, lizenziert unter CC BY-SA 4.0.

Was als Nächstes ansteht

Mit 2.0.4 ist der Abschnitt der Roadmap abgearbeitet, der an keiner Modellversion hängt und vorgezogen wurde, weil er die Hürde senkt, BAM überhaupt einzusetzen. Danach beginnt die Arbeit am Modell selbst, und zwar in der dort festgehaltenen Reihenfolge statt nach Terminen.

Zuerst Version 2.1 mit dem Fristenmanagement, das Fristen zu eigenen Objekten macht und zwischen gesetzlichen Stichtagen, wiederkehrenden Pflichten, ereignisgetriebenen Fristen und selbst gesetzten Zieldaten unterscheidet. Danach der Instanz-Layer in 2.2, der Kanon und Zustand trennt und damit Mehrbenutzerbetrieb und Zugangsschutz überhaupt erst möglich macht. Dann der Evidence-Layer in 2.3 mit Nachweisen als eigenen Objekten.

Dass der Zugangsschutz erst mit 2.2 kommt, ist damit kein Versäumnis, sondern dieselbe Reihenfolge von einer anderen Seite betrachtet. Eine Benutzerverwaltung ohne benutzerbezogenen Zustand hätte nichts zu verwalten.

Unsere Empfehlung

Starten Sie den Container, bewerten Sie eine Handvoll Prüffragen aus einem Bereich, den Sie gut kennen, und drucken Sie den Bericht. Der Umweg über eine vollständige Bewertung lohnt am Anfang nicht. Wer die ersten Feststellungen im Fließtext liest, erkennt schneller als über jede Beschreibung, ob die Zuordnungen des Modells zu den eigenen Fragen passen.

Lassen Sie die Portbindung so, wie sie ist, solange Sie allein damit arbeiten. Und wenn Sie das Modell um eigene Objekte erweitern wollen, nutzen Sie das eingebundene Volume, statt das Image neu zu bauen.

Wie sich ein solches Modell in die tägliche Nachweisführung übersetzt, behandelt Executable Compliance. Einzelne Bezeichner lassen sich über Compliance Trace auflösen.

Häufige Fragen

Ändern sich durch 2.0.4 BAM-IDs oder Zitate?

Nein. Die Modellversion bleibt 2.0, das Datenmodell wurde nicht angefasst. Der DOI der Modellversion und bestehende Verweise sind unberührt.

Brauche ich Docker?

Nein. Der Container ist ein zusätzlicher Weg, kein Ersatz. Die bisherige Einrichtung über das Setup-Skript funktioniert unverändert, und der Bericht steht dort ebenso zur Verfügung.

Warum ist der Port nur auf localhost erreichbar?

Weil BAM Core 2.0.x weder Authentifizierung noch Mandanten kennt. Für den Serverbetrieb gehört ein Reverse Proxy mit TLS und Zugangsschutz davor; der Deployment Guide enthält die Vorlage.

Wie entsteht das PDF?

Über den Druckdialog des Browsers, mit einem eigenen Druck-Stylesheet für A4. Es wird keine PDF-Bibliothek und keine zusätzliche Software benötigt.

Warum ist mein Erfüllungsgrad so niedrig?

Weil noch nicht bewertete Prüffragen wie nicht erfüllte zählen. Der ausgewiesene Wert ist eine Untergrenze und steigt mit jeder weiteren Bewertung.

Quellen

  1. Brain-Media Audit Model, CHANGELOG.md zu Release 2.0.4 und 2.0.3, GitHub.
  2. Brain-Media Audit Model, README.md mit den Abschnitten zum Container-Image und zum Bericht, GitHub.
  3. Compliance Trace, Auflösung einzelner BAM-Bezeichner, bam.brain-media.de.