162 lines
No EOL
7.6 KiB
Markdown
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
|
|

|
|
|
|
#### 2. Datengewinnung (Phase 1)
|
|

|
|
|
|
#### 3. Datenabruf (Phase 2)
|
|

|
|
|
|
---
|
|
|
|
## 🔒 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. |