Richtlinien Phase 2a: verwaltete Register-Tabellen + Anwender-Handbuch (§7b, §9.7)
Vier neue, in die Bibliothek integrierte Dokumente (öffnen als interaktive Popups):
- Krypto-Register (VA-07): editierbare Tabelle der eingesetzten Verschlüsselung
mit Ablaufüberwachung (läuft-ab/abgelaufen-Markierung), Baseline-Bezug
(BL-CRY-…), voller CRUD (add/edit/delete).
- Risiko-Bewertungsmatrix (R03/VA-09): zentrale Pflegestelle mit FB-80-04-Defaults
— 4×4-Heatmap (Schadensausmaß × EW), Risikoklassen + Akzeptanzinstanz
(Niedrig≤3 / Mittel≤6 / Hoch≤9 / Kritisch≥12, editierbar), EW-Skala,
7 Schadenskategorien. (Rückkopplung in die 5×5-Heatmap der Risikoanalyse folgt.)
- Klassifizierungs-Handhabungsmatrix (R02/VA-08): AA-80-20-Defaults, 4 Schutzklassen
× 14 Aspekte mit eskalierenden Regeln; Zellen inline editierbar, Aspekt/Klasse
hinzufügbar.
- Anwender-Handbuch (§9.7): kuratierte Themen (Passwörter/MFA, Zugriffsrechte,
Klassifizierung, mobiles Arbeiten, E-Mail, Vorfälle) in verständlicher Sprache;
Werte via {{VARIABLE}}-Templating → automatisch synchron zur Baseline; Deep-Links
in die Quellabschnitte (z. B. R08 §4.1.2).
Zusätzlich: Richtlinien/Verfahren, die eine verwaltete Tabelle einbetten
(R09/VA-07, R03/VA-09, R02/VA-08), zeigen im Lesemodus einen „Vollständige Tabelle
öffnen"-Callout auf das jeweilige Register (§7b).
Datenmodell: CryptoEntry, ClassificationClass/HandlingAspect/HandlingRule,
RiskMatrixClass/RiskEwLevel/RiskDamageDimension, HandbookTopic (+ RLS).
Server-Actions mit RBAC (policy:write) + Audit-Log. Seed aus FB-80-04/AA-80-20.
Verifiziert im Browser: alle vier Register gerendert, Ablauf-/Farb-/Deep-Link-Logik,
Krypto-CRUD (add + delete) end-to-end.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -765,3 +765,124 @@ model PolicyEvidence {
|
||||
@@index([tenantId])
|
||||
@@map("policy_evidence")
|
||||
}
|
||||
|
||||
// ── Verwaltete Register-Tabellen (§7b) ───────────────────────────────────────
|
||||
|
||||
// Verschlüsselungsmechanismen-Register (VA-07 Kryptokonzept & Schlüsselverwaltung)
|
||||
model CryptoEntry {
|
||||
id String @id @default(cuid())
|
||||
tenantId String @map("tenant_id")
|
||||
dienst String
|
||||
schluessel String
|
||||
algorithmus String?
|
||||
ablaufdatum DateTime? @map("ablauf_datum")
|
||||
verantwortlich String
|
||||
speicherort String?
|
||||
baselineRef String? @map("baseline_ref") // z. B. BL-CRY-02
|
||||
notes String?
|
||||
orderIdx Int @default(0) @map("order_idx")
|
||||
createdAt DateTime @default(now()) @map("created_at")
|
||||
updatedAt DateTime @updatedAt @map("updated_at")
|
||||
|
||||
@@index([tenantId])
|
||||
@@map("crypto_entries")
|
||||
}
|
||||
|
||||
// Klassifizierungs-Handhabungsmatrix (R02 / VA-08) — Schutzklassen × Aspekte
|
||||
model ClassificationClass {
|
||||
id String @id @default(cuid())
|
||||
tenantId String @map("tenant_id")
|
||||
name String
|
||||
description String?
|
||||
orderIdx Int @default(0) @map("order_idx")
|
||||
createdAt DateTime @default(now()) @map("created_at")
|
||||
|
||||
rules HandlingRule[]
|
||||
|
||||
@@index([tenantId])
|
||||
@@map("classification_classes")
|
||||
}
|
||||
|
||||
model HandlingAspect {
|
||||
id String @id @default(cuid())
|
||||
tenantId String @map("tenant_id")
|
||||
name String
|
||||
category String?
|
||||
orderIdx Int @default(0) @map("order_idx")
|
||||
createdAt DateTime @default(now()) @map("created_at")
|
||||
|
||||
rules HandlingRule[]
|
||||
|
||||
@@index([tenantId])
|
||||
@@map("handling_aspects")
|
||||
}
|
||||
|
||||
model HandlingRule {
|
||||
id String @id @default(cuid())
|
||||
tenantId String @map("tenant_id")
|
||||
classId String @map("class_id")
|
||||
aspectId String @map("aspect_id")
|
||||
text String
|
||||
|
||||
class ClassificationClass @relation(fields: [classId], references: [id], onDelete: Cascade)
|
||||
aspect HandlingAspect @relation(fields: [aspectId], references: [id], onDelete: Cascade)
|
||||
|
||||
@@unique([classId, aspectId])
|
||||
@@index([tenantId])
|
||||
@@map("handling_rules")
|
||||
}
|
||||
|
||||
// Risiko-Bewertungsmatrix (R03 / VA-09) — zentrale Pflegestelle (Defaults FB-80-04)
|
||||
model RiskMatrixClass {
|
||||
id String @id @default(cuid())
|
||||
tenantId String @map("tenant_id")
|
||||
name String // Niedrig | Mittel | Hoch | Kritisch
|
||||
maxScore Int @map("max_score") // obere Schwelle des Risikowerts
|
||||
acceptance String // Akzeptanzinstanz
|
||||
tone String // ok | warn | orange | risk
|
||||
orderIdx Int @default(0) @map("order_idx")
|
||||
createdAt DateTime @default(now()) @map("created_at")
|
||||
|
||||
@@index([tenantId])
|
||||
@@map("risk_matrix_classes")
|
||||
}
|
||||
|
||||
model RiskEwLevel {
|
||||
id String @id @default(cuid())
|
||||
tenantId String @map("tenant_id")
|
||||
level Int
|
||||
label String
|
||||
definition String
|
||||
createdAt DateTime @default(now()) @map("created_at")
|
||||
|
||||
@@index([tenantId])
|
||||
@@map("risk_ew_levels")
|
||||
}
|
||||
|
||||
model RiskDamageDimension {
|
||||
id String @id @default(cuid())
|
||||
tenantId String @map("tenant_id")
|
||||
name String
|
||||
levels Json // { "1": "…", "2": "…", "3": "…", "4": "…" }
|
||||
orderIdx Int @default(0) @map("order_idx")
|
||||
createdAt DateTime @default(now()) @map("created_at")
|
||||
|
||||
@@index([tenantId])
|
||||
@@map("risk_damage_dimensions")
|
||||
}
|
||||
|
||||
// Anwender-Handbuch (§9.7) — kuratierte Themen mit Deep-Links; Werte via Templating
|
||||
model HandbookTopic {
|
||||
id String @id @default(cuid())
|
||||
tenantId String @map("tenant_id")
|
||||
category String
|
||||
title String
|
||||
bodyMd String @map("body_md") // Markdown mit {{VARIABLE}} (bleibt via Baseline synchron)
|
||||
sourceRefs String[] @default([]) @map("source_refs") // Deep-Links, z. B. R08#4.1.2
|
||||
orderIdx Int @default(0) @map("order_idx")
|
||||
createdAt DateTime @default(now()) @map("created_at")
|
||||
updatedAt DateTime @updatedAt @map("updated_at")
|
||||
|
||||
@@index([tenantId])
|
||||
@@map("handbook_topics")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user