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>
130 lines
7.4 KiB
TypeScript
130 lines
7.4 KiB
TypeScript
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>
|
|
</>
|
|
)
|
|
}
|