DB Hooks
Security-Hooks die direkte Datenbankzugriffe blockieren und MCP-Server erzwingen.
| Pfad | /opt/scripts/hooks/ |
|---|---|
| Hook-Typ | PreToolUse (Bash) |
| Verhalten | Blocking (Exit 1 bei Violation) |
Übersicht
| Hook | Blockiert | Empfehlung |
|---|---|---|
| block_direct_db.py | mysql/mariadb mit Passwort | MCP-DB Tools |
| block_direct_task_db.py | INSERT/UPDATE/DELETE auf Task-Tabellen | MCP-Tasks Tools |
block_direct_db.py
Verhindert Bash-Befehle mit direktem Datenbank-Login.
Blockierte Patterns
mysql -u user -ppassword
mariadb -u user -p
mysql --password=xxx
mariadb --password=xxx
Fehlermeldung
BLOCKIERT: Direkte Datenbankzugriffe sind aus Sicherheitsgründen nicht erlaubt.
Verwende stattdessen die MCP-DB Tools:
- db_select(query, params) : SELECT-Abfragen ausführen
- db_schema() : Datenbank-Schema anzeigen
- db_stats() : Statistiken abrufen
Vorteile von MCP-DB:
- Keine Credentials im Code/Verlauf
- Automatische Query-Validierung
- SQL-Injection Schutz
- Audit-Logging aller Abfragen
- Enforced Read-Only Zugriff
block_direct_task_db.py
Verhindert direkte SQL-Operationen auf Task-Tabellen.
Blockierte Patterns
INSERT INTO tasks ...
UPDATE tasks SET ...
DELETE FROM tasks ...
INSERT INTO task_assignments ...
UPDATE task_results ...
DELETE FROM task_comments ...
Fehlermeldung
BLOCKIERT: Direkte SQL-Operationen auf Task-Tabellen sind nicht erlaubt.
Verwende stattdessen die MCP-Tasks Tools:
- tasks_list() : Tasks auflisten
- tasks_create(title, ...) : Task erstellen
- tasks_get(id) : Task-Details abrufen
- tasks_update(id, ...) : Task aktualisieren
- tasks_status(id, status) : Status ändern
- tasks_assign(id, ...) : Task zuweisen
- tasks_result(id, ...) : Ergebnis speichern
- tasks_execute(id, model) : Mit Ollama ausführen
Verhalten
Erfolg (erlaubt)
{
"allowed": true,
"message": ""
}
Exit Code: 0
Blockiert
{
"allowed": false,
"message": "BLOCKIERT: ..."
}
Exit Code: 1
Fehler (Fail-Open)
{
"allowed": true,
"message": "Hook error (fail-open): ..."
}
Exit Code: 0
Konfiguration
In .claude/settings.local.json:
{
"hooks": {
"PreToolUse": [
"/opt/scripts/hooks/block_direct_db.py",
"/opt/scripts/hooks/block_direct_task_db.py"
]
}
}
Sicherheitskonzept
┌─────────────────────────────────────────────┐
│ Claude Code │
│ └─ Bash Tool → mysql -u root -p... │
└─────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────┐
│ PreToolUse Hook │
│ └─ block_direct_db.py │
│ └─ Pattern Match? → BLOCK (Exit 1) │
└─────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────┐
│ MCP-Server (stattdessen) │
│ ├─ MCP-DB: db_select(), db_schema() │
│ └─ MCP-Tasks: tasks_*(), quality_*() │
└─────────────────────────────────────────────┘