--- name: "db-scm-info-compliance" displayName: "DB scm-info and Compliance" description: "Erstellt und validiert die scm-info.yaml für DB-GitLab-Repos und erklärt die Checks der DXP Compliance Suite (Secrets, Dependencies, Lizenzen, DB Compliance). Liefert eine Compliance-Checkliste, damit ein Repo konform zur DB-Vorgabe Source-Control-Management ist." keywords: ["scm-info.yaml", "compliance suite", "betterleaks", "beam id", "dbisl lizenz", "sbom", "syft grype", "source control management", "vmp export"] author: "einfachbahn-lab" --- # DB scm-info and Compliance ## Overview Diese Power hilft, ein DB-GitLab-Repo **compliant** zu machen: die Pflichtdatei `scm-info.yaml` korrekt zu erstellen/validieren und die Checks der **DXP Compliance Suite** (Secrets, Dependencies, Lizenzen, DB Compliance) zu verstehen und zu bestehen. Grundlage ist die DB-Vorgabe „Source-Control- und Software-Repositories". ## scm-info.yaml — harte Regeln - **Dateiendung muss `.yaml` sein** — `.yml` wird **nicht** akzeptiert. - Liegt im **Repo-Root**. - Wird gegen das **scm-info JSON Schema** validiert (`git.tech.rz.db.de/db-inner-source/scm-info-json-schema`). - Am einfachsten per Developer-Portal-Template **`init-app-general`** erzeugen (legt scm-info.yaml + README + LICENSE an). ## Vorlagen ### Minimal ```yaml version: v3 license: LicenseRef-DBISL contacts: DEINE_EMAIL_ADRESSE confidentiality: internal reference-ids: none ``` ### Erweitert (pipeship-Kontext) ```yaml --- version: v3 license: DBISL contacts: team@deutschebahn.com confidentiality: internal reference-ids: A-123456 # eure echte Beam-ID custom: production-branch: main integrity: normal availability: normal confidentiality: normal it-service-id: itaps-service-id-1 ``` ## Felder | Feld | Zweck | |------|-------| | `version` | Schema-Version (z. B. `v3`) | | `license` | Lizenz (`DBISL`/`LicenseRef-DBISL`), geprüft gegen Open-Source-Lizenzkompass | | `contacts` | Kontakt(e) — von pipeship als Container-Annotation `GA_CONTACT` genutzt | | `confidentiality` | Vertraulichkeitsstufe (z. B. `internal`) | | `reference-ids` | **Beam-/Referenz-ID** (Pflicht) — pipeship-Annotation `GA_REFERENCE_ID` | | `custom.production-branch` | Produktions-Branch (z. B. `main`) | | `custom.integrity/availability/confidentiality` | Schutzbedarf | | `custom.it-service-id` | ITAPS-Service-ID | ## Warum sie wichtig ist - Verknüpfung mit **Beam/LeanIX** (Anwendungskontext) - Bessere Erreichbarkeit über Kontaktdaten - **VMP-Export** von Security-Findings nur mit gültiger **Beam ID** möglich - Compliance-Pflicht — fehlt sie, entstehen Findings - pipeship liefert daraus automatisch die Container-Annotations ## Compliance Suite — die Scanner | Scanner | Prüft | |---------|-------| | **Secrets (Betterleaks)** | Passwörter/API-Keys in Code, Job-Logs, Artefakten | | **Dependencies (Syft + Grype)** | Syft erstellt SBOM, Grype scannt auf bekannte Schwachstellen | | **DB Compliance** | Sichtbarkeit, protected Branches, Existenz README/LICENSE/scm-info.yaml + Schema-Validierung | | **Licenses (Grant)** | Lizenzkonformität gemäß DB Open-Source-Lizenzkompass | - Wöchentliche Scans (Di/Do/Sa 18:00), Dependency-Checks alle 12 h, SBOM je Scan. - Findings im Developer Portal: https://dp.dxc.comp.db.de/compliance/repositories - Sichtbarkeit: GitLab-Rolle ≥ `Developer`. Kein DXP Mandant nötig, nur um Findings zu sehen. ## Compliance-Checkliste (vor erstem Release) - [ ] `scm-info.yaml` vorhanden, Endung `.yaml`, schema-valide - [ ] `reference-ids` = echte Beam-ID gesetzt - [ ] `license` korrekt (DBISL o. zulässige Open-Source-Lizenz) - [ ] `contacts` gesetzt (Erreichbarkeit + Container-Annotation) - [ ] `README.md` und `LICENSE` vorhanden - [ ] Default-Branch protected; Sichtbarkeit gemäß Schutzbedarf - [ ] keine Klartext-Secrets im Repo/Logs/Artefakten (Betterleaks grün) - [ ] Dependency-/Lizenz-Findings gesichtet und behandelt - [ ] (Container) SBOM-Job aktiv, Images aktuell gehalten (≤ 14 Tage / Renovate) ## Best Practices - `confidentiality` und Repo-Sichtbarkeit am tatsächlichen Schutzbedarf ausrichten. - Beam-ID früh setzen — ohne sie kein VMP-Export der Findings. - Secrets nie im Klartext; verschlüsselt mit SOPS/age committen. - Findings nicht ignorieren — patchen/mitigieren oder Restrisiko dokumentieren. ## Troubleshooting - **Finding „scm-info invalid"** → Endung `.yaml`? Pflichtfelder (`version`, `reference-ids`) gesetzt? Gegen Schema prüfen. - **VMP-Export geht nicht** → gültige Beam-ID in `reference-ids` fehlt. - **Secret-Finding trotz Verschlüsselung** → false positive dokumentieren oder Wert wirklich entfernen/rotieren. ## Weiterführend Repo `einfachbahn-lab/doku/deployment-doku`: `docs/09-pipeship-setup-guide.md` (Teil B) und `docs/08-dxp-plattform.md` (Kap. 4, Compliance Suite).