SAP_DM_Deprecated_APIS/readme.md

162 lines
No EOL
7.6 KiB
Markdown

# 📖 Deprecated APIs SAP DM
## 📑 Inhaltsverzeichnis
- [📖 Deprecated APIs SAP DM](#-deprecated-apis-sap-dm)
- [📑 Inhaltsverzeichnis](#-inhaltsverzeichnis)
- [🚀 Projektübersicht](#-projektübersicht)
- [🏗 Architektur \& Tech-Stack](#-architektur--tech-stack)
- [Tech-Stack](#tech-stack)
- [Systemarchitektur \& Abläufe](#systemarchitektur--abläufe)
- [1. Architektur-Übersicht](#1-architektur-übersicht)
- [2. Datengewinnung (Phase 1)](#2-datengewinnung-phase-1)
- [3. Datenabruf (Phase 2)](#3-datenabruf-phase-2)
- [🔒 Sicherheit \& Zugriffsschutz](#-sicherheit--zugriffsschutz)
- [1. Umgang mit vertraulichen Daten (Secrets)](#1-umgang-mit-vertraulichen-daten-secrets)
- [2. API-Sicherheit (FastAPI)](#2-api-sicherheit-fastapi)
- [3. Container- \& Infrastruktur-Sicherheit](#3-container---infrastruktur-sicherheit)
- [📁 Projektstruktur](#-projektstruktur)
- [💻 Lokale Entwicklung \& Setup](#-lokale-entwicklung--setup)
- [Voraussetzungen](#voraussetzungen)
- [Installation](#installation)
- [API Starten](#api-starten)
- [🐳 Docker Deployment](#-docker-deployment)
- [🛠 Skripte \& Demos](#-skripte--demos)
- [Hinweise](#hinweise)
---
## 🚀 Projektübersicht
Dieses Projekt dient der Überwachung, dem Vergleich und der Verwaltung von veralteten (deprecated) APIs im Umfeld von SAP Digital Manufacturing (SAP DM). Es kombiniert Web-Scraping zur automatisierten Datenerfassung mit einem FastAPI-Backend, um Endpunkte zu vergleichen und die Ergebnisse bereitzustellen. Zudem bietet es Skripte zum Scannen von Repositories an.
---
## 🏗 Architektur & Tech-Stack
### Tech-Stack
* **Backend:** Python 3, FastAPI (`src/API/fastAPI.py`)
* **Scraping / Automation:** Python, Microsoft Edge WebDriver (`src/msedgedriver.exe`)
* **Containerisierung:** Docker, Docker Compose (`docker/Dockerfile`, `docker/docker-compose.yml`)
* **Skripting:** PowerShell, Node.js (`demo/scan_repositories/`)
### Systemarchitektur & Abläufe
Die folgenden Diagramme veranschaulichen den grundsätzlichen Datenfluss und die Architektur der Anwendung, aufgeteilt in die automatisierte Datengewinnung und den eigentlichen API-Abruf.
#### 1. Architektur-Übersicht
![Architektur](doc/assets/mermaid_diagramms/png/architecture.png)
#### 2. Datengewinnung (Phase 1)
![Sequence_1](doc/assets/mermaid_diagramms/png/sequence_phase_1.png)
#### 3. Datenabruf (Phase 2)
![Sequence_2](doc/assets/mermaid_diagramms/png/sequence_phase_2.png)
---
## 🔒 Sicherheit & Zugriffsschutz
Das System verarbeitet Schnittstellendaten und interagiert mit externen SAP-Diensten.
Folgende Sicherheitsmaßnahmen sind implementiert bzw. beim Deployment zu beachten:
### 1. Umgang mit vertraulichen Daten (Secrets)
- Keine Hardcoded Credentials: Sensible Daten (API-Keys, Passwörter, Tokens) dürfen niemals direkt im Quellcode committet werden.
- Umgebungsvariablen (.env): Die Konfiguration erfolgt ausschließlich über die Datei src/.env.
- Git-Protection: Um versehentliches Hochladen in das Repository zu verhindern, ist die Datei `src/.env` im `.gitignore` eingetragen. Ein Beispiel ist enthalten.
### 2. API-Sicherheit (FastAPI)
- CORS (Cross-Origin Resource Sharing): In der Produktion sollten in src/API/fastAPI.py nur explizit erlaubte Origins zugelassen werden (kein allow_origins=["*"]).
- Input-Validierung: FastAPI nutzt Pydantic zur automatischen Typprüfung und Sanitization eingehender HTTP-Payloads, um Injection-Angriffe zu verhindern.
- HTTPS / TLS: Im Produktionsbetrieb muss die API zwingend über HTTPS bereitgestellt werden (z. B. über einen vorgeschalteten Reverse Proxy wie Nginx oder Traefik mit SSL-Zertifikat).
### 3. Container- & Infrastruktur-Sicherheit
- Non-Root User in Docker: Der Container (docker/Dockerfile) sollte die Anwendung nach Möglichkeit unter einem nicht-privilegierten Benutzer ausführen.
- Minimales Base-Image: Es wird empfohlen, schlanke Base-Images (z. B. python:3.9-slim) zu verwenden, um die Angriffsfläche durch ungenutzte System-Pakete zu minimieren.
- Headless Driver: Der Microsoft Edge Driver (msedgedriver.exe) läuft im isolierten Headless-Modus ohne interaktive Benutzersession.
---
## 📁 Projektstruktur
Hier ist ein detaillierter Überblick über die wichtigsten Verzeichnisse und Dateien im Repository:
* **`src/`**: Hauptverzeichnis des Quellcodes.
* **`.env`**: Umgebungsvariablen für das Projekt (z.B. Zugangsdaten, Ports).
* **`msedgedriver.exe`**: Treiber für automatisierte Browser-Interaktionen.
* **`API/`**: Beinhaltet die Backend-Logik.
* `fastAPI.py`: Haupteinstiegspunkt für den API-Server.
* `endpoint_compare.py`: Logik zum Vergleichen von aktuellen und veralteten API-Endpunkten.
* **`core/`**: Kernfunktionalitäten.
* `fetchWhatsNew.py`: Skript zum Abrufen von Neuigkeiten/Änderungen (Scraping/API-Calls).
* **`docker/`**: Konfiguration für die Container-Bereitstellung.
* `Dockerfile`: Definition des Images für die FastAPI-Anwendung.
* `docker-compose.yml`: Multi-Container-Orchestrierung.
* **`logs/`**: Mount-Point für Container-Logs.
* **`demo/`**: Skripte und Beispiele zur Nutzung und zum Testen.
* **`scan_repositories/`**: Tools zum Durchsuchen von Code-Basen.
* `get_all_repositories.ps1`: PowerShell-Skript zum Abrufen von Repositories.
* `scan_repo.js`: Node.js-Skript zur Analyse der gefundenen Repos.
* **`test_api/`**:
* `testaufruf.js`: JavaScript-Beispielaufruf gegen das FastAPI-Backend.
* **`systemctl_service/`**:
* `sap-api.service`: Vorlage für die Einrichtung als Linux Systemd-Dienst.
* **`requirements.txt`**: Python-Abhängigkeiten.
---
## 💻 Lokale Entwicklung & Setup
### Voraussetzungen
* Python 3.8 oder höher
* Node.js (für Demo-Skripte)
* Microsoft Edge Browser (passend zur `msedgedriver.exe`)
### Installation
1. Repository klonen.
2. Virtuelle Umgebung erstellen und aktivieren:
```bash
# Unter Linux/macOS:
python -m venv venv
source venv/bin/activate
# Unter Windows (PowerShell):
python -m venv venv
. env\Scripts activate
```
3. Abhängigkeiten installieren:
```bash
pip install -r requirements.txt
```
4. Umgebungsvariablen anpassen: Kopiere oder bearbeite die Datei `src/.env` mit den entsprechenden Credentials.
### API Starten
Führe die FastAPI-Anwendung aus dem `src`-Verzeichnis aus:
```bash
cd src
uvicorn API.fastAPI:app --reload
```
---
## 🐳 Docker Deployment
Für eine isolierte und plattformunabhängige Bereitstellung wird Docker empfohlen.
1. Wechsle in das Verzeichnis:
```bash
cd docker
```
2. Starte die Container im Hintergrund:
```bash
docker-compose up -d --build
```
Die API ist nun unter `http://localhost:<PORT>` erreichbar. Logs finden sich im Verzeichnis `docker/logs/`.
*Tipp: Um die Container wieder zu stoppen, nutze `docker-compose down` im gleichen Verzeichnis.*
---
## 🛠 Skripte & Demos
Im Ordner `demo/` befinden sich nützliche Hilfsskripte:
* **Repository Scanner:** Führe `./demo/scan_repositories/get_all_repositories.ps1` aus, um Repositories zu sammeln, und verarbeite diese anschließend mit `node scan_repo.js`.
* **API Test:** Mit `node ./demo/test_api/testaufruf.js` kann ein initialer Funktionstest der laufenden API durchgeführt werden.
## Hinweise
Da aktuell die Abfrage über den Edge-Browser erfolgt, ist das Scraping nur bei installiertem Browser möglich.