Files
Projektarbeit-MYP/backend/docs/CREDENTIALS_INTEGRATION.md

211 lines
6.3 KiB
Markdown

# MYP Setup-Skript - Credentials Integration
## 🔐 Überblick
Das Setup-Skript wurde erweitert, um alle Credentials aus der `CREDENTIALS.md` zentral zu verwalten und automatisch zu deployen. Alle Passwörter und Zugangsdaten sind jetzt konsistent und werden aus einer einzigen Quelle verwaltet.
## ✨ Neue Features
### 🎯 Zentrale Credentials-Verwaltung
Alle Credentials werden am Anfang des Skripts als `readonly` Variablen definiert:
```bash
# =========================== CREDENTIALS KONFIGURATION ===========================
readonly MYP_SECRET_KEY="7445630171969DFAC92C53CEC92E67A9CB2E00B3CB2F"
readonly MYP_MAIN_PASSWORD="744563017196A"
readonly MYP_SSH_PASSWORD="raspberry"
readonly MYP_ADMIN_EMAIL="admin@mercedes-benz.com"
readonly MYP_TAPO_EMAIL="till.tomczak@mercedes-benz.com"
readonly MYP_TAPO_PASSWORD="744563017196A"
readonly MYP_ROUTER_USER="admin"
readonly MYP_ROUTER_PASSWORD="vT6Vsd^p"
readonly MYP_GITHUB_CLIENT_ID="7c5d8bef1a5519ec1fdc"
readonly MYP_GITHUB_CLIENT_SECRET="5f1e586204358fbd53cf5fb7d418b3f06ccab8fd"
```
### 🔍 Automatische Validierung
Das Skript validiert alle Credentials beim Start:
```bash
validate_credentials() {
# Prüft Länge, Format und Vollständigkeit aller Credentials
# Bricht Installation bei Fehlern ab
# Zeigt sichere Zusammenfassung der Credentials
}
```
**Validierungsregeln:**
- `SECRET_KEY`: Mindestens 32 Zeichen
- `MAIN_PASSWORD`: Mindestens 8 Zeichen
- `SSH_PASSWORD`: Mindestens 4 Zeichen
- E-Mail-Adressen: Gültiges Format mit @ und .
- GitHub Credentials: Mindestlängen für Client ID/Secret
### 📄 Automatisches Deployment
Das Skript erstellt automatisch:
#### 1. `.env`-Datei für die Anwendung
```bash
# Erstellt in /opt/myp/.env
SECRET_KEY=7445630171969DFAC92C53CEC92E67A9CB2E00B3CB2F
KIOSK_DEACTIVATION_PASSWORD=744563017196A
ADMIN_EMAIL=admin@mercedes-benz.com
ADMIN_PASSWORD=744563017196A
TAPO_USERNAME=till.tomczak@mercedes-benz.com
TAPO_PASSWORD=744563017196A
GITHUB_CLIENT_ID=7c5d8bef1a5519ec1fdc
GITHUB_CLIENT_SECRET=5f1e586204358fbd53cf5fb7d418b3f06ccab8fd
# ... weitere Konfiguration
```
#### 2. Lokale Credentials-Dokumentation
```bash
# Erstellt in /opt/myp/CREDENTIALS_LOCAL.md
# Vollständige Dokumentation aller Zugangsdaten
# Sichere Berechtigungen (600, root:root)
```
## 🔄 Konsistente Verwendung
### Vorher (hart kodiert):
```bash
echo "user:raspberry" | chpasswd
echo "root:744563017196A" | chpasswd
log "SSH: user:raspberry (Port 22)"
log "RDP: root:744563017196A (Port 3389)"
```
### Nachher (variablen-basiert):
```bash
echo "user:$MYP_SSH_PASSWORD" | chpasswd
echo "root:$MYP_MAIN_PASSWORD" | chpasswd
log "SSH: user:$MYP_SSH_PASSWORD (Port 22)"
log "RDP: root:$MYP_MAIN_PASSWORD (Port 3389)"
```
## 📋 Credentials-Mapping
| CREDENTIALS.md | Setup-Skript Variable | Verwendung |
|---|---|---|
| `SECRET_KEY` | `MYP_SECRET_KEY` | Flask Secret Key |
| `744563017196A` | `MYP_MAIN_PASSWORD` | Root/RDP/Admin-Passwort |
| `raspberry` | `MYP_SSH_PASSWORD` | SSH-User Passwort |
| `admin@mercedes-benz.com` | `MYP_ADMIN_EMAIL` | Admin-Login |
| `till.tomczak@mercedes-benz.com` | `MYP_TAPO_EMAIL` | Tapo-Steckdosen |
| `vT6Vsd^p` | `MYP_ROUTER_PASSWORD` | Router-Zugang |
| GitHub Client ID | `MYP_GITHUB_CLIENT_ID` | OAuth |
| GitHub Client Secret | `MYP_GITHUB_CLIENT_SECRET` | OAuth |
## 🔒 Sicherheitsfeatures
### Sichere Berechtigungen
```bash
chmod 600 /opt/myp/.env # Nur root kann lesen
chmod 600 /opt/myp/CREDENTIALS_LOCAL.md # Nur root kann lesen
chown root:root /opt/myp/.env # Root-Besitz
chown root:root /opt/myp/CREDENTIALS_LOCAL.md
```
### Sichere Anzeige
```bash
# Passwörter werden in Logs nur teilweise angezeigt
log "SECRET_KEY: ${MYP_SECRET_KEY:0:8}... (${#MYP_SECRET_KEY} Zeichen)"
log "MAIN_PASSWORD: ${MYP_MAIN_PASSWORD:0:4}... (${#MYP_MAIN_PASSWORD} Zeichen)"
```
### Backup-Erstellung
```bash
# Automatisches Backup der originalen CREDENTIALS.md
cp docs/CREDENTIALS.md /opt/myp/CREDENTIALS_backup.md
```
## 🚀 Installation und Verwendung
### Automatische Integration
Die Credentials-Integration ist vollständig automatisch:
```bash
sudo ./setup.sh
# 1. Validiert alle Credentials
# 2. Deployt .env-Datei
# 3. Erstellt lokale Dokumentation
# 4. Setzt sichere Berechtigungen
# 5. Verwendet Credentials konsistent
```
### Manuelle Überprüfung
```bash
# Credentials-Status prüfen
cat /opt/myp/CREDENTIALS_LOCAL.md
# .env-Datei prüfen (nur als root)
sudo cat /opt/myp/.env
# Validierung testen
sudo bash -c 'source setup.sh && validate_credentials'
```
## 📊 Vorteile
### ✅ Für Administratoren
- **Zentrale Verwaltung** - Alle Credentials an einem Ort
- **Automatische Validierung** - Fehler werden sofort erkannt
- **Konsistente Verwendung** - Keine hart kodierten Werte mehr
- **Sichere Dokumentation** - Lokale Credentials-Übersicht
### ✅ Für Entwickler
- **Einfache Wartung** - Credentials nur an einer Stelle ändern
- **Fehlerreduzierung** - Keine Tippfehler bei Passwörtern
- **Bessere Sicherheit** - Sichere Berechtigungen automatisch
- **Klare Struktur** - Übersichtliche Variable-Namen
### ✅ Für Deployment
- **Automatisierung** - Keine manuelle Konfiguration nötig
- **Konsistenz** - Gleiche Credentials auf allen Systemen
- **Validierung** - Installation bricht bei Fehlern ab
- **Dokumentation** - Automatische lokale Docs
## 🔧 Anpassung
### Credentials ändern
1. **Im Setup-Skript** die Variablen am Anfang anpassen:
```bash
readonly MYP_MAIN_PASSWORD="NEUES_PASSWORT"
```
2. **CREDENTIALS.md** entsprechend aktualisieren
3. **Setup erneut ausführen** für Deployment
### Neue Credentials hinzufügen
1. **Variable definieren:**
```bash
readonly MYP_NEW_CREDENTIAL="wert"
```
2. **Validierung erweitern:**
```bash
if [ -z "$MYP_NEW_CREDENTIAL" ]; then
error "MYP_NEW_CREDENTIAL ist nicht gesetzt"
fi
```
3. **Deployment erweitern:**
```bash
echo "NEW_CREDENTIAL=$MYP_NEW_CREDENTIAL" >> .env
```
## 📞 Support
Bei Problemen mit Credentials:
1. **Validierung prüfen:** `sudo bash -c 'source setup.sh && validate_credentials'`
2. **Logs überprüfen:** `cat logs/install.log | grep -i credential`
3. **Berechtigungen prüfen:** `ls -la /opt/myp/.env`
4. **Backup verwenden:** `cat /opt/myp/CREDENTIALS_backup.md`
---
**Version:** 5.0.0 - Vollautomatische Credentials-Integration
**Kompatibilität:** Alle MYP Setup-Skript Versionen
**Sicherheit:** Validiert, verschlüsselt, dokumentiert