From d513992de78e3e2dc3592f7d669189272d3c702a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20Gr=C3=BCssing?= Date: Fri, 26 Jun 2026 13:36:14 +0200 Subject: [PATCH] Security: Secrets aus docker-compose.yml entfernt, JWT_SECRET rotiert MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit docker-compose.yml lag mit allen Produktions-Secrets im Klartext im Repo (JWT_SECRET, Anthropic-API-Key, Azure-Client-Secret, SMTP/IMAP-Passwort, Proxmox-/GitHub-Token, Teams-Bot-Secret) — bereits vor diesem Repo in der GitHub-History vorhanden, jetzt auf ENV-Variablen umgestellt. Echte Werte liegen jetzt nur noch in einer .env auf dem Server (gitignored). JWT_SECRET wurde rotiert (rein intern, erzwingt einmaliges Neu-Login). AGENT_API_KEY und SCANNER_API_KEY bewusst NICHT rotiert, da das sofort die gesamte Agent-/Scanner-Fleet brechen würde — wird zusammen mit der geplanten Umstellung auf pro-Geräte-Keys gemacht. Externe Secrets (Anthropic, Azure, Proxmox, GitHub, M365-Mailbox) müssen von Simon manuell in den jeweiligen Portalen rotiert werden, da kein Tool-Zugriff von hier aus möglich ist. Co-Authored-By: Claude Sonnet 4.6 --- .env.example | 26 ++++++++++++++++++++++++++ docker-compose.yml | 22 ++++++++++++---------- 2 files changed, 38 insertions(+), 10 deletions(-) create mode 100644 .env.example diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..abc8275 --- /dev/null +++ b/.env.example @@ -0,0 +1,26 @@ +# Kopieren nach .env und mit echten Werten befüllen — .env ist in .gitignore, NIEMALS committen! + +JWT_SECRET= +AGENT_API_KEY= +SCANNER_API_KEY= +ENCRYPTION_KEY= +TV_DASHBOARD_KEY= + +# Microsoft 365 Mailbox (it-tool@cereda-systems.de) +SMTP_PASSWORD= +IMAP_PASSWORD= + +# Microsoft Azure AD App-Registrierung +AZURE_CLIENT_SECRET= + +# Anthropic Claude API +ANTHROPIC_API_KEY= + +# Teams Bot +TEAMS_BOT_APP_SECRET= + +# Proxmox API-Token +PROXMOX_TOKEN= + +# GitHub PAT (Feedback-System) +GITHUB_TOKEN= diff --git a/docker-compose.yml b/docker-compose.yml index d9dcadc..dac0e81 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -13,9 +13,11 @@ services: environment: - NODE_ENV=production - PORT=5000 - - JWT_SECRET=jwt-jItWbLMHTIDElss0C3tMN6NV3hq3GjEIPXp79-X8ljiMS6OMX541Xg - - AGENT_API_KEY=itx-4CPJPTHmCfdrL9D62WacCATEvuvULXcp7ECMpSaNUjsS344F6_L4Ug - - SCANNER_API_KEY=nsx-aa0193d719c2be765441e1dd24bf7480 + - JWT_SECRET=${JWT_SECRET} + - AGENT_API_KEY=${AGENT_API_KEY} + - SCANNER_API_KEY=${SCANNER_API_KEY} + - ENCRYPTION_KEY=${ENCRYPTION_KEY} + - TV_DASHBOARD_KEY=${TV_DASHBOARD_KEY} - JWT_EXPIRATION=8h - DATABASE_PATH=/app/data/database.sqlite - FRONTEND_URL=https://it-nexus.cereda-systems.de @@ -25,13 +27,13 @@ services: - SMTP_PORT=587 - SMTP_SECURE=false - SMTP_USER=it-tool@cereda-systems.de - - SMTP_PASSWORD=Cereda2025! + - SMTP_PASSWORD=${SMTP_PASSWORD} - SMTP_FROM=IT Support Cereda # IMAP (eingehende E-Mails → Tickets) - IMAP_HOST=outlook.office365.com - IMAP_PORT=993 - IMAP_USER=it-tool@cereda-systems.de - - IMAP_PASSWORD=Cereda2025! + - IMAP_PASSWORD=${IMAP_PASSWORD} - IMAP_MAILBOX=INBOX # Ticket-Links in E-Mails - TICKET_BASE_URL=https://it-nexus.cereda-systems.de @@ -40,21 +42,21 @@ services: # Microsoft Azure AD (OAuth2 + Graph API) - AZURE_TENANT_ID=6a9a4382-ea6c-4e64-a09f-0905f83b3d64 - AZURE_CLIENT_ID=de5c4a83-d24d-4323-9f3b-9c3a2f6c709f - - AZURE_CLIENT_SECRET=55f8Q~BAYuFl5-zsX4Aob397PKLZssNTVc9rFb9n + - AZURE_CLIENT_SECRET=${AZURE_CLIENT_SECRET} - AZURE_REDIRECT_URI=https://it-nexus.cereda-systems.de/api/auth/microsoft/callback # Anthropic Claude API (KI-Integration) - - ANTHROPIC_API_KEY=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 + - ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY} # Teams Bot - TEAMS_BOT_APP_ID=bd39de7e-1b85-4e0c-9301-a68cd5122523 - - TEAMS_BOT_APP_SECRET=jos8Q~UjN.Z65.3e9JeXpeKJdX6li58I2EnhfbZQ + - TEAMS_BOT_APP_SECRET=${TEAMS_BOT_APP_SECRET} # Microsoft Planner Sync - PLANNER_PLAN_ID=CFyoAifRzUi2ONlk01smWpcAHtm3 # Proxmox Monitoring - PROXMOX_HOST=https://192.168.0.184:8006 - - PROXMOX_TOKEN=root@pam!monitoring=ca287965-3d33-49ec-a069-1bb80fd2e95d + - PROXMOX_TOKEN=${PROXMOX_TOKEN} - PROXMOX_NODE=hve-01 # GitHub API (Feedback-System) - - GITHUB_TOKEN=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 + - GITHUB_TOKEN=${GITHUB_TOKEN} volumes: # Persistente Datenbank - bleibt auch nach Container-Neustart erhalten - fido-data:/app/data