Sicherheit von innen heraus Security from the inside out
Bei plate-software ist Sicherheit kein Feature — es ist das Fundament. Jede Code-Zeile durchläuft eine automatisierte Pipeline aus Tests, Security Reviews und Dependency Scanning, bevor sie jemals einen Server berührt. At plate-software, security isn't a feature — it's the foundation. Every line of code passes through an automated pipeline of tests, security reviews, and dependency scanning before it ever touches a server.
Von Commit zu Production — automatisch abgesichert
From commit to production — automatically secured
Jeder Push durchläuft diese Pipeline. Kein manuelles Eingreifen, keine Shortcuts.
Every push runs through this pipeline. No manual intervention, no shortcuts.
Acht Schichten, ein Versprechen
Eight layers, one promise
Sicherheit ist kein einzelner Schritt — sie ist in jede Phase des Entwicklungszyklus eingebettet.
Security isn't a single step — it's embedded into every phase of the development lifecycle.
CI/CD Pipeline Automated
Jeder Commit wird automatisch gebaut und getestet — Backend (Java/Maven mit 113+ Tests) und Frontend (Next.js Production Build). Integrationstests mit PostgreSQL 18 in Testcontainern stellen sicher, dass Migrationen und Queries gegen eine echte Datenbank validiert werden.
Every commit is automatically built and tested — backend (Java/Maven with 113+ tests) and frontend (Next.js production build). Integration tests with PostgreSQL 18 in Testcontainers ensure migrations and queries are validated against a real database.
Dependency Scanning npm audit
npm audit läuft bei jedem Build. Kritische CVEs wie CVE-2025-66478 (Next.js RCE) werden am selben Tag identifiziert und gepatcht. Wir upgraden nicht nur auf die minimale Patch-Version, sondern auf die neueste stabile Version, um zukünftige Advisories vorzubauen.
npm audit runs on every build. Critical CVEs like CVE-2025-66478 (Next.js RCE) are identified and patched the same day. We don't just upgrade to the minimal patch version — we go to the latest stable to get ahead of future advisories.
Security Review Gate PASS/FAIL
Bevor Code gemergt wird, durchläuft er einen dedizierten Security Review gegen SEC-* Regeln und projektspezifische Patterns. Nur mit PASS-Ergebnis wird die funktionale Code Review gestartet. Security FAIL blockiert die Pipeline — keine Ausnahmen.
Before code is merged, it passes through a dedicated security review against SEC-* rules and project-specific patterns. Only with a PASS result does the functional code review begin. Security FAIL blocks the pipeline — no exceptions.
Authentication Layer OAuth + HMAC
Zweischichtige Authentifizierung: Google OAuth für die Benutzerauthentifizierung, plus ein HMAC-signierter Token-Exchange zwischen Frontend und Backend. Environment Variables werden beim Modul-Laden validiert (fail-fast) — eine fehlende Secret bringt den Build zum Absturz, nicht die Produktion.
Two-layer authentication: Google OAuth for user authentication, plus an HMAC-signed token exchange between frontend and backend. Environment variables are validated at module load (fail-fast) — a missing secret crashes the build, not production.
Container Security Distroless
Alle Container verwenden Distroless-Base-Images ohne Shell, ohne Package Manager, ohne Angriffsfläche. Multi-Stage Builds trennen Build-Tools von der Runtime. Der Container läuft als non-root User. Nur das standalone Binary und statische Assets erreichen die Produktion.
All containers use distroless base images — no shell, no package manager, no attack surface. Multi-stage builds separate build tools from runtime. The container runs as non-root user. Only the standalone binary and static assets reach production.
Database Integrity PostgreSQL
Schema-Änderungen ausschließlich über Flyway-Migrationen mit Versionskontrolle. PostgreSQL IMMUTABLE-Constraints verhindern illegale Index-Predicates. Cross-Tenant IDOR wird durch automatische Integrationstests verifiziert — kein User kann jemals Daten einer anderen Organisation sehen.
Schema changes exclusively through version-controlled Flyway migrations. PostgreSQL IMMUTABLE constraints prevent illegal index predicates. Cross-tenant IDOR is verified by automated integration tests — no user can ever see another organization's data.
Secrets Management Gitea Actions
Alle Secrets liegen in Gitea Actions Encrypted Secrets — nie im Code, nie in Dockerfiles, nie in docker-compose. CI/CD referenziert sie über ${{ secrets.* }}. Der GITEA_-Prefix ist reserviert und wird vom System abgelehnt — ein zusätzliches Sicherheitsnetz gegen Fehlkonfiguration.
All secrets live in Gitea Actions encrypted secrets — never in code, never in Dockerfiles, never in docker-compose. CI/CD references them via ${{ secrets.* }}. The GITEA_ prefix is reserved and rejected by the system — an additional safety net against misconfiguration.
Self-Hosted Infrastructure No Cloud
Der gesamte Quellcode liegt auf einem selbst gehosteten Gitea-Server im Homelab. Kein Cloud-Anbieter hat Zugriff auf den Code, die CI-Pipeline oder die Secrets. Backups werden verschlüsselt auf einem separaten TrueNAS-Storage gepflegt. vendor-Lock-in: null.
All source code lives on a self-hosted Gitea server in the homelab. No cloud provider has access to the code, the CI pipeline, or the secrets. Backups are maintained encrypted on a separate TrueNAS storage. Vendor lock-in: zero.
Sicherheit in Zahlen
Security by the numbers
🤝 Unser SicherheitsversprechenOur security commitment
- ✓ Fail-fast, not fail-silent: Fehlende Secrets und invalide Konfigurationen bringen den Build zum Absturz — nicht die Produktion.Fail-fast, not fail-silent: Missing secrets and invalid configurations crash the build — not production.
- ✓ Defense in Depth: Auth, IDOR-Schutz, Container-Isolation und Database-Constraints arbeiten unabhängig voneinander.Defense in depth: Auth, IDOR protection, container isolation, and database constraints work independently.
- ✓ Keine manuellen Deploys: Jede Änderung erreicht die Produktion ausschließlich über die CI/CD-Pipeline.No manual deploys: Every change reaches production exclusively through the CI/CD pipeline.
- ✓ Versionierte Migrationen: Datenbankschema-Änderungen sind versioniert, getestet und rollback-fähig.Versioned migrations: Database schema changes are versioned, tested, and rollback-capable.
- ✓ Transparenz: Sicherheitsrelevante Änderungen werden in PRs dokumentiert mit Root-Cause-Analysis.Transparency: Security-relevant changes are documented in PRs with root cause analysis.
- ✓ Selbst gehostet: Keine Abhängigkeit von Cloud-Anbietern für Quellcode, CI/CD oder Secrets.Self-hosted: No cloud provider dependency for source code, CI/CD, or secrets.