feat(datenbank): Datenmodell mit Datenbankregeln und Seed (#003)
Alle Modelle fuer die fuenf Phasen in einer Migration, damit spaetere Phasen keine Umbauten an Kerntabellen brauchen. Was auch an der Service-Schicht vorbei gelten muss, steht als CHECK, partieller Index oder Trigger in der Datenbank: Personen-Keys ohne Private Key, genau ein Instanz-Deployment-Key, ein vertrauter Host-Key je Algorithmus, shell-sichere Zielbenutzer und Pfade. Das Protokoll ist append-only und per Hash-Kette verbunden; den Hash berechnet ein Trigger, damit keine Zeile ohne Verkettung entstehen kann (#005 baut darauf auf). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
import type { Prisma } from "../src/generated/prisma/client";
|
||||
|
||||
/**
|
||||
* Eingebaute Vorlagen (#019). Sie werden beim Seed angelegt, aber nie ueberschrieben:
|
||||
* was ein Admin daran aendert, bleibt.
|
||||
*/
|
||||
export const EINGEBAUTE_VORLAGEN: Prisma.VorlageCreateInput[] = [
|
||||
{
|
||||
name: "Deployment-Zugang",
|
||||
beschreibung:
|
||||
"Projektbezogener Zugang, z. B. für Claude Code: eigener Benutzer deploy, Ablaufdatum, nur von der Quell-IP aus.",
|
||||
eingebaut: true,
|
||||
schluesselTyp: "ED25519",
|
||||
kategorie: "DIENST",
|
||||
standardLaufzeitTage: 90,
|
||||
zielbenutzer: "deploy",
|
||||
zielbenutzerAnlegen: true,
|
||||
sudoModus: "KEINER",
|
||||
authorizedKeysOptionen: 'from="{{quellHostIp}}"',
|
||||
sshConfigAlias: "deploy-{{zielHost}}",
|
||||
knownHostsEintragen: true,
|
||||
},
|
||||
{
|
||||
name: "Backup-Zugang",
|
||||
beschreibung: "Host-zu-Host-Zugang für Sicherungen, typischerweise als root, ohne Weiterleitungen.",
|
||||
eingebaut: true,
|
||||
schluesselTyp: "ED25519",
|
||||
kategorie: "DIENST",
|
||||
zielbenutzer: "root",
|
||||
authorizedKeysOptionen:
|
||||
'from="{{quellHostIp}}",no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no-pty',
|
||||
sshConfigAlias: "backup-{{zielHost}}",
|
||||
knownHostsEintragen: true,
|
||||
},
|
||||
{
|
||||
name: "Admin-Zugang Person",
|
||||
beschreibung: "Persönlicher Schlüssel eines Admins; der Private Key bleibt bei der Person.",
|
||||
eingebaut: true,
|
||||
schluesselTyp: "ED25519",
|
||||
kategorie: "PERSON",
|
||||
standardLaufzeitTage: 365,
|
||||
zielbenutzer: "root",
|
||||
knownHostsEintragen: false,
|
||||
},
|
||||
];
|
||||
Reference in New Issue
Block a user