refactor(developer-portal): split iace, docs, byoeh pages
Extract each page into colocated _components/ sections to bring page.tsx files from 1008/891/769 LOC down to 57/23/21 LOC, well within the 500-line hard cap. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,129 @@
|
||||
import { CodeBlock, InfoBox } from '@/components/DevPortalLayout'
|
||||
|
||||
export function MultiTenancyLlmAuditSection() {
|
||||
return (
|
||||
<>
|
||||
<h2 id="multi-tenancy">9. Multi-Tenancy und Zugriffskontrolle</h2>
|
||||
<p>
|
||||
Das System ist <strong>mandantenfaehig</strong> (Multi-Tenant): Mehrere Organisationen
|
||||
koennen es gleichzeitig nutzen, ohne dass sie gegenseitig auf ihre Daten zugreifen koennen.
|
||||
</p>
|
||||
|
||||
<h3>9.1 Rollenbasierte Zugriffskontrolle (RBAC)</h3>
|
||||
<div className="not-prose my-4 overflow-x-auto">
|
||||
<table className="min-w-full divide-y divide-gray-200 text-sm">
|
||||
<thead className="bg-gray-50">
|
||||
<tr>
|
||||
<th className="px-4 py-3 text-left font-medium text-gray-500">Rolle</th>
|
||||
<th className="px-4 py-3 text-left font-medium text-gray-500">Darf</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody className="divide-y divide-gray-200">
|
||||
<tr><td className="px-4 py-3 font-medium">Mitarbeiter</td><td className="px-4 py-3">Anwendungsfaelle einreichen, eigene Bewertungen einsehen</td></tr>
|
||||
<tr><td className="px-4 py-3 font-medium">Teamleiter</td><td className="px-4 py-3">E1-Eskalationen pruefen, Team-Assessments einsehen</td></tr>
|
||||
<tr><td className="px-4 py-3 font-medium">DSB (Datenschutzbeauftragter)</td><td className="px-4 py-3">E2/E3-Eskalationen pruefen, alle Assessments einsehen, Policies aendern</td></tr>
|
||||
<tr><td className="px-4 py-3 font-medium">Rechtsabteilung</td><td className="px-4 py-3">E3-Eskalationen pruefen, Grundsatzentscheidungen</td></tr>
|
||||
<tr><td className="px-4 py-3 font-medium">Administrator</td><td className="px-4 py-3">System konfigurieren, Nutzer verwalten, LLM-Policies festlegen</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<h3>9.2 PII-Erkennung und -Schutz</h3>
|
||||
<p>
|
||||
Bevor Texte an ein Sprachmodell gesendet werden, durchlaufen sie eine automatische
|
||||
<strong> PII-Erkennung</strong>. Das System erkennt ueber 20 Arten personenbezogener Daten
|
||||
(E-Mail-Adressen, Telefonnummern, Namen, IP-Adressen, etc.).
|
||||
Je nach Konfiguration werden erkannte PII-Daten <strong>geschwuerzt</strong>, <strong>maskiert</strong>
|
||||
oder nur im Audit-Log <strong>markiert</strong>.
|
||||
</p>
|
||||
|
||||
<h2 id="llm-nutzung">10. Wie das System KI nutzt (und wie nicht)</h2>
|
||||
<div className="not-prose my-6 overflow-x-auto">
|
||||
<table className="min-w-full divide-y divide-gray-200 text-sm">
|
||||
<thead className="bg-gray-50">
|
||||
<tr>
|
||||
<th className="px-4 py-3 text-left font-medium text-gray-500">Aufgabe</th>
|
||||
<th className="px-4 py-3 text-left font-medium text-gray-500">Entschieden von</th>
|
||||
<th className="px-4 py-3 text-left font-medium text-gray-500">Rolle der KI</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody className="divide-y divide-gray-200">
|
||||
<tr><td className="px-4 py-3">Machbarkeit (YES/CONDITIONAL/NO)</td><td className="px-4 py-3 font-medium">Deterministische Regeln</td><td className="px-4 py-3 text-gray-400">Keine</td></tr>
|
||||
<tr><td className="px-4 py-3">Risikoscore berechnen</td><td className="px-4 py-3 font-medium">Regelbasierte Berechnung</td><td className="px-4 py-3 text-gray-400">Keine</td></tr>
|
||||
<tr><td className="px-4 py-3">Eskalation ausloesen</td><td className="px-4 py-3 font-medium">Schwellenwerte + Regellogik</td><td className="px-4 py-3 text-gray-400">Keine</td></tr>
|
||||
<tr className="bg-blue-50"><td className="px-4 py-3">Ergebnis erklaeren</td><td className="px-4 py-3 text-gray-400">--</td><td className="px-4 py-3 font-medium text-blue-800">LLM + RAG-Kontext</td></tr>
|
||||
<tr className="bg-blue-50"><td className="px-4 py-3">Rechtsfragen beantworten</td><td className="px-4 py-3 text-gray-400">--</td><td className="px-4 py-3 font-medium text-blue-800">LLM + RAG (Rechtskorpus)</td></tr>
|
||||
<tr className="bg-blue-50"><td className="px-4 py-3">Dokumente generieren (DSFA, TOM, VVT)</td><td className="px-4 py-3 text-gray-400">--</td><td className="px-4 py-3 font-medium text-blue-800">LLM + Vorlagen</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<h3>LLM-Provider und Fallback</h3>
|
||||
<ol>
|
||||
<li><strong>Primaer: Ollama (lokal)</strong> -- Qwen 2.5 32B bzw. Mistral, laeuft direkt auf dem Server. Keine Daten verlassen das lokale Netzwerk.</li>
|
||||
<li><strong>Fallback: Anthropic Claude</strong> -- Wird nur aktiviert, wenn das lokale Modell nicht verfuegbar ist.</li>
|
||||
</ol>
|
||||
|
||||
<h2 id="audit-trail">11. Audit-Trail: Alles wird protokolliert</h2>
|
||||
<p>Saemtliche Aktionen im System werden revisionssicher protokolliert:</p>
|
||||
<ul>
|
||||
<li>Jede Compliance-Bewertung mit allen Ein- und Ausgaben</li>
|
||||
<li>Jede Eskalationsentscheidung mit Begruendung</li>
|
||||
<li>Jeder LLM-Aufruf (wer hat was wann gefragt, welches Modell wurde verwendet)</li>
|
||||
<li>Jede Aenderung an Controls, Evidence und Policies</li>
|
||||
<li>Jeder Login und Daten-Export</li>
|
||||
</ul>
|
||||
|
||||
<InfoBox type="info" title="Datenschutz des Audit-Trails">
|
||||
Der Use-Case-Text wird <strong>nur mit Einwilligung des Nutzers</strong> gespeichert.
|
||||
Standardmaessig wird nur ein SHA-256-Hash des Textes gespeichert.
|
||||
</InfoBox>
|
||||
|
||||
<h2 id="security">12. Security Scanner: Technische Sicherheitspruefung</h2>
|
||||
<ul>
|
||||
<li><strong>Container-Scanning (Trivy):</strong> Prueft Docker-Images auf bekannte Schwachstellen (CVEs)</li>
|
||||
<li><strong>Statische Code-Analyse (Semgrep):</strong> Sucht im Quellcode nach Sicherheitsluecken</li>
|
||||
<li><strong>Secret Detection (Gitleaks):</strong> Findet versehentlich eingecheckte Passwoerter, API-Keys und Tokens</li>
|
||||
<li><strong>SBOM-Generierung:</strong> Erstellt eine vollstaendige Liste aller verwendeten Bibliotheken und deren Lizenzen</li>
|
||||
</ul>
|
||||
|
||||
<h2 id="zusammenfassung">13. Zusammenfassung: Der komplette Datenfluss</h2>
|
||||
|
||||
<CodeBlock language="text" filename="Der komplette Compliance-Workflow">
|
||||
{`SCHRITT 1: FAKTEN SAMMELN
|
||||
Nutzer fuellt Fragebogen aus: Welche Daten? Welcher Zweck? Welche Branche? Wo gehostet?
|
||||
|
||||
SCHRITT 2: ANWENDBARKEIT PRUEFEN
|
||||
Obligations Framework: DSGVO? AI Act? NIS2?
|
||||
|
||||
SCHRITT 3: REGELN PRUEFEN (45+ Regeln)
|
||||
R-001 (WARN): Personenbezogene Daten +10 Risiko
|
||||
R-060 (WARN): KI-Transparenz fehlt +15 Risiko
|
||||
→ Gesamt-Risikoscore: 35/100 (LOW), Machbarkeit: CONDITIONAL
|
||||
|
||||
SCHRITT 4: CONTROLS ZUORDNEN
|
||||
C_EXPLICIT_CONSENT, C_TRANSPARENCY, C_DATA_MINIMIZATION
|
||||
|
||||
SCHRITT 5: ESKALATION (bei Bedarf)
|
||||
Score 35 → Stufe E1 → Teamleiter, SLA 24h
|
||||
|
||||
SCHRITT 6: ERKLAERUNG GENERIEREN
|
||||
LLM + RAG: Gesetzesartikel suchen, Erklaerungstext generieren
|
||||
|
||||
SCHRITT 7: DOKUMENTATION
|
||||
DSFA, TOM, VVT, Compliance-Report (PDF/ZIP/JSON)
|
||||
|
||||
SCHRITT 8: MONITORING
|
||||
Controls regelmaessig pruefen, Nachweise auf Ablauf ueberwachen`}
|
||||
</CodeBlock>
|
||||
|
||||
<InfoBox type="success" title="Das Wichtigste in einem Satz">
|
||||
Der Compliance Hub nimmt die Beschreibung eines KI-Vorhabens entgegen, prueft es gegen
|
||||
ueber 45 deterministische Regeln und 400+ Gesetzesartikel, berechnet ein Risiko, ordnet
|
||||
Massnahmen zu, eskaliert bei Bedarf an menschliche Pruefer und dokumentiert alles
|
||||
revisionssicher -- wobei die KI nur fuer Erklaerungen und Zusammenfassungen eingesetzt wird,
|
||||
niemals fuer die eigentliche Compliance-Entscheidung.
|
||||
</InfoBox>
|
||||
</>
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user