Migrate all repos into monorepo context folders

Bahn: aisupport, Analyse-O2C-C2S, awesome-bahn-mcp-servers, beam-mcp,
      Confluence_Bot, db-planet-mcp-server, O2C-Harness, project-audit,
      Projekt-KIQ-HP, teamlandkarte-mcp
Dhive: Jury-Voting
Privat: CV, NoteGraph (NOTE: NoteGraph needs complete redo after consolidation)
Shared: AI-Orchestrator, OrgMyLife, power_skills_and_more
Shared/references: symphony (read-only)

Bahn repos remain available as independent remotes - this monorepo
pulls them in via subtree, the originals are untouched.
This commit is contained in:
2026-06-30 20:39:52 +02:00
parent 2f2b295531
commit a5f8fb49ab
1717 changed files with 447332 additions and 0 deletions
@@ -0,0 +1,106 @@
---
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).