Gegenbuch: Dienstkonto statt Token, .env mit gueltigen Werten
Blocker behoben: Ich hatte ein dauerhaftes API-Token vorausgesetzt - das gibt es in OpenCRM nicht. Zugangstoken leben 15 Minuten, der Gegenbuch-Container waere nach dem ersten Durchlauf gestorben. Aufgefallen erst durch die Frage des Betreibers, woher er den Token nimmt. Loesung: Das Gegenbuch meldet sich bei jedem Lauf selbst an, mit einem eigenen Benutzerkonto, dessen Rolle ausschliesslich audit:read traegt. Damit kann es nur Pruefwerte lesen - keine Kundendaten, keine Aenderungen. CRM_TOKEN bleibt fuer Tests moeglich, ist aber nicht mehr der Normalweg. Fehlerfaelle (falsches Passwort, Anmelde-Bremse, CRM nicht erreichbar) werden unterschieden und im Klartext gemeldet. .env.example nennt jetzt zu jedem Schalter die gueltigen Werte - bisher liess sich nur raten, ob es prod oder production heisst. Einschliesslich des Falls "erst nur Staging testen, Prod spaeter dazunehmen". Beide READMEs um "Zugang einrichten" ergaenzt: Rolle mit nur audit:read, Benutzer damit, Zugangsdaten in die .env. Mit dem Hinweis, dass jede Anmeldung im Audit-Log erscheint - gewollt, denn so faellt auch auf, wenn das Gegenbuch aufhoert zu arbeiten. Verifiziert gegen eine Attrappe, die wie das echte CRM eine Anmeldung verlangt. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -6,41 +6,68 @@
|
||||
# Was hier passiert: Der Rechner holt regelmäßig einen kurzen Kontrollwert von
|
||||
# OpenCRM ab und schreibt ihn in ein Buch, das nur hier liegt. Wird später im
|
||||
# CRM etwas nachträglich verändert, widerspricht das dem Buch.
|
||||
#
|
||||
# Welche Bücher sollen laufen?
|
||||
COMPOSE_PROFILES=prod,staging
|
||||
|
||||
# Nur Kosmetik – steht in den Einträgen des Buchs.
|
||||
|
||||
# ============================================================
|
||||
# Welche Bücher sollen laufen?
|
||||
# ============================================================
|
||||
# Gültige Werte: prod | staging | prod,staging | (leer = keins)
|
||||
# Genau so geschrieben – nicht "production" oder "test".
|
||||
#
|
||||
# Nur Staging testen: COMPOSE_PROFILES=staging
|
||||
# Später Prod dazunehmen: COMPOSE_PROFILES=prod,staging
|
||||
# Danach: docker compose up -d (der laufende Dienst bleibt unberührt)
|
||||
COMPOSE_PROFILES=staging
|
||||
|
||||
# Steht in den Einträgen des Buchs. Beliebiger Text, nur Kosmetik.
|
||||
NOTAR_EMAIL=gegenbuch@example.de
|
||||
|
||||
# ---------------- Produktion ----------------
|
||||
# Von welcher OpenCRM-Instanz wird geholt?
|
||||
|
||||
# ============================================================
|
||||
# Produktion
|
||||
# ============================================================
|
||||
# Adresse der OpenCRM-Instanz, von der geholt wird.
|
||||
# Gültig: vollständige URL mit https:// und OHNE Schrägstrich am Ende.
|
||||
PROD_CRM_URL=https://crm.example.de
|
||||
|
||||
# Token eines Benutzers mit dem Recht audit:read – MEHR NICHT.
|
||||
# Damit lassen sich ausschließlich Prüfwerte lesen: keine Kundendaten, keine
|
||||
# Änderungen. Selbst wenn es abhandenkommt, ist damit nichts anzufangen.
|
||||
PROD_CRM_TOKEN=
|
||||
# Zugang: ein eigenes Benutzerkonto im CRM, das NUR das Recht "audit:read" hat.
|
||||
# Wie man es anlegt, steht in der README unter "Zugang einrichten".
|
||||
#
|
||||
# Das Gegenbuch meldet sich damit bei jedem Durchlauf selbst an. Ein fest
|
||||
# hinterlegtes Token gibt es bewusst nicht – Zugangstoken laufen nach
|
||||
# 15 Minuten ab und wären beim nächsten Durchlauf längst ungültig.
|
||||
PROD_CRM_EMAIL=gegenbuch@deine-domain.de
|
||||
PROD_CRM_PASSWORD=
|
||||
|
||||
# Wie oft geprüft wird (Sekunden). 3600 = stündlich.
|
||||
# Wie oft geprüft wird, in Sekunden.
|
||||
# Gültig: ganze Zahl > 0. Üblich: 3600 (stündlich), 900 (viertelstündlich)
|
||||
# Kürzer heißt: kleineres Zeitfenster, in dem eine Änderung unbemerkt bliebe.
|
||||
PROD_INTERVAL=3600
|
||||
|
||||
# Beim ALLERERSTEN Start einmalig auf true setzen, danach wieder leeren.
|
||||
# Beim ALLERERSTEN Start einmalig setzen, danach wieder leeren.
|
||||
# Gültige Werte: true | (leer)
|
||||
# Grund: Die erste Eintragung legt fest, was als Ausgangszustand gilt – das
|
||||
# soll nicht versehentlich passieren.
|
||||
PROD_GENESIS_ACK=
|
||||
|
||||
# Normalerweise leer lassen. Nur nötig, wenn das Gedächtnis des Gegenbuchs
|
||||
# verlorenging (z. B. Verzeichnis gelöscht) und du geklärt hast, warum.
|
||||
# Normalerweise leer lassen.
|
||||
# Gültige Werte: true | (leer)
|
||||
# Nur nötig, wenn das Datenverzeichnis verlorenging (z. B. gelöscht) UND du
|
||||
# geklärt hast, warum. Siehe README, Abschnitt "Wenn das Gedächtnis fehlt".
|
||||
PROD_ADOPT_ACK=
|
||||
|
||||
# Wo das Buch liegt. DIESES VERZEICHNIS GEHÖRT INS BACKUP.
|
||||
# Wo das Buch liegt – relativ zu diesem Verzeichnis.
|
||||
# DIESES VERZEICHNIS GEHÖRT INS BACKUP (enthält Buch und Signaturschlüssel).
|
||||
PROD_DIR=./data/prod
|
||||
|
||||
# ---------------- Test / Staging ----------------
|
||||
|
||||
# ============================================================
|
||||
# Test / Staging
|
||||
# ============================================================
|
||||
# Gleiche Regeln wie oben, eigenes Konto und eigenes Verzeichnis.
|
||||
STAGING_CRM_URL=https://staging.example.de
|
||||
STAGING_CRM_TOKEN=
|
||||
STAGING_CRM_EMAIL=gegenbuch@deine-domain.de
|
||||
STAGING_CRM_PASSWORD=
|
||||
STAGING_INTERVAL=3600
|
||||
STAGING_GENESIS_ACK=
|
||||
STAGING_ADOPT_ACK=
|
||||
|
||||
Reference in New Issue
Block a user