Initial commit: BizTalk SAP environment inventory

This commit is contained in:
2026-07-27 14:21:50 +02:00
commit 439427cc17
26 changed files with 5281 additions and 0 deletions
+231
View File
@@ -0,0 +1,231 @@
# BEW BizTalk SAP Environment Inventory
`BEW BizTalk SAP Environment Inventory` erzeugt lokal auf einem BizTalk Server 2020 eine Microsoft-Word-Dokumentation (`.docx`) der SAP-Adapterverbindungen und eine vollständige Liste aller BizTalk-Anwendungen.
Das Tool wird einmal auf dem BizTalk Server in `ACC` und einmal auf dem BizTalk Server in `PROD` ausgeführt. Beide Umgebungen bestehen jeweils aus:
- einem BizTalk Server 2020
- einem separaten SQL Server für die BizTalk-Datenbanken
Microsoft Office, Word, PowerShell, ein .NET SDK, Internetzugriff und zusätzliche BizTalk-Programmier-DLLs werden auf dem Zielserver nicht benötigt.
## Erfasster Umfang
### Vollständige BizTalk-Anwendungsliste
- alle Anwendungen aus `MSBTS_Application`
- Anwendungsstatus und Beschreibung
- Anzahl und Zuordnung von Orchestrierungen
- Send Ports und Send Port Groups
- Receive Ports und Receive Locations
- Assemblies, Schemas, Maps und Pipelines, soweit die jeweilige WMI-Klasse verfügbar ist
- SAP-/IDoc-Indikatoren aus bereitgestellten Schemas, Actions und Artefaktnamen
Die Liste ist nicht auf eine bisher bekannte 15-App-Liste begrenzt. Damit werden auch weitere Anwendungen wie beispielsweise `MasterData_SAP_WebGIS`, `MasterDataHeat`, `WoWHeatInvoice` oder `MeterChangeInfo/Order` sichtbar, sofern sie tatsächlich in der jeweiligen BizTalk-Gruppe installiert sind.
### SAP-Adapterverbindungen
Aus dem BizTalk-Gruppenbinding und WMI werden unter anderem dokumentiert:
- BizTalk-Anwendung und Portzuordnung
- Sende- oder Empfangsrichtung
- WCF-SAP bzw. WCF-Custom mit `sapBinding`
- Port-, Receive-Location- und Handlername
- RFC-/Listener-Destination
- SAP-System-ID beziehungsweise R/3-Systemname
- Application Server oder Message Server
- Systemnummer
- Gateway Host und Gateway Service
- SAP Client und Sprache
- Listener Program ID
- SAP Router
- Actions beziehungsweise erkannte RFC-/IDoc-Operationen
- SSO-/Benutzerreferenz, jedoch niemals das Kennwort
### SAP NCo, Hosts und SNC
- konfigurierte SAP-Adapterdefinitionen
- Receive-/Send-Handler und BizTalk Hosts
- bekannte ERP-/ISU-Hostfamilien werden nicht fest verdrahtet, sondern aus der realen Umgebung gelesen
- SAP .NET Connector und Adapter-Pack-Installationen
- `sapnco.dll`, `sapnco_utils.dll` und Dateiversion/Architektur
- `UseSnc`, `SncLibrary`, `SncPartnerName`, `SncMyName` und `SncQop`
- `SNC_LIB`, `SECUDIR` und `SAPNWRFC_HOME`
- PSE-/Zertifikatspfad, Gültigkeit und Fingerprint, soweit lokal lesbar
## Was nicht automatisch aus BizTalk ausgelesen werden kann
Folgende Informationen liegen im SAP-System oder in Betriebsprozessen und werden im Bericht als offene Nachweise ausgewiesen:
- Partnerprofile aus Transaktion `WE20`
- Portdefinitionen aus Transaktion `WE21`
- vollständige SAP-seitige RFC-Destination einschließlich Verbindungstest
- verbindliche Liste der IDoc-Basistypen und Erweiterungen
- tatsächliche SAP-Kennwörter
- Owner und Rotationsprozess für SAP-Credentials bzw. SNC-PSE/Zertifikate
- DR-Verfahren für die SAP-seitige Umschaltung der RFC-Destination nach Frankfurt
Das Tool erfindet hierfür keine Werte. Es dokumentiert nur lokal belegbare Indikatoren und nennt die erforderliche Ergänzung sowie die zuständige Rolle.
## Sicherheitsprinzip
- ausschließlich read-only WMI- und Registry-Abfragen
- `BTSTask ExportBindings /GroupLevel` wird nur zum Lesen verwendet
- temporärer Binding-Export wird nach dem Parsen gelöscht
- BizTalk entfernt Kennwörter bereits beim Binding-Export
- zusätzliche Redigierung von Passwort-, Secret-, Token-, Private-Key- und Connection-String-Feldern
- keine privaten Schlüssel oder PSE-Inhalte im DOCX
- kein SAP-Login und kein aktiver RFC-Verbindungstest
DOCX und Log enthalten trotzdem interne Host-, Anwendungs-, Zertifikats- und Pfadinformationen und müssen geschützt abgelegt werden.
## Voraussetzungen auf ACC und PROD
- lokale Ausführung auf dem jeweiligen BizTalk Server
- administrative `cmd.exe`
- Konto ist Mitglied von `BizTalk Server Administrators` oder besitzt vergleichbare Leserechte
- .NET Framework 4.7.2 oder höher
- Zugriff auf die konfigurierte BizTalk Management Database
- `BTSTask.exe` aus der lokalen BizTalk-Installation
## Schnellstart
1. Deployment-Ordner auf den BizTalk Server kopieren.
2. Administrative `cmd.exe` öffnen.
3. In den Deployment-Ordner wechseln.
4. Self-Test starten.
5. Inventarisierung für die richtige Umgebung ausführen.
Self-Test:
```cmd
BizTalkSapEnvironmentInventory.exe --self-test
```
ACC:
```cmd
run-inventory.cmd ACC C:\BizTalk-Doku\ACC
```
PROD:
```cmd
run-inventory.cmd PROD C:\BizTalk-Doku\PROD
```
Direkter Aufruf:
```cmd
BizTalkSapEnvironmentInventory.exe ^
--environment ACC ^
--output C:\BizTalk-Doku\ACC
```
## Konsolenausgabe
Das Tool zeigt jeden Abschnitt und die erzeugten Dateien direkt auf der Konsole an:
```text
[INFO] Starte Abschnitt: BizTalk-Anwendungen und WMI-Artefakte
[INFO] 34 BizTalk-Anwendung(en) über WMI gefunden.
[INFO] Exportiere BizTalk-Gruppenbindings read-only mit BTSTask.
[INFO] 12 SAP-Endpunkt(e) aus dem Binding-Export ausgewertet.
[INFO] Erzeuge Microsoft-Word-Dokument: C:\BizTalk-Doku\ACC\...
[INFO] Word-Dokument erfolgreich erzeugt: C:\BizTalk-Doku\ACC\...
```
Fehler eines Collectors stoppen die übrigen Abschnitte nicht. Sie erscheinen im Log, im Erfassungsstatus und als Finding im Word-Bericht.
## Ausgabedateien
```text
BizTalk-SAP-Dokumentation-ACC-BIZTALKSERVER-20260727-150000.docx
BizTalk-SAP-Dokumentation-ACC-BIZTALKSERVER-20260727-150000.log
```
Das DOCX wird direkt als Office Open XML erzeugt. Auf dem BizTalk Server wird keine Office-Anwendung benötigt.
## Kommandozeilenoptionen
| Option | Bedeutung |
| --- | --- |
| `--environment NAME` | Umgebung, regulär `ACC` oder `PROD`. |
| `--output PFAD` | Zielordner für DOCX und Log. |
| `--management-server NAME` | SQL-Server der BizTalk Management Database; normalerweise aus Registry. |
| `--management-database NAME` | Name der Management Database; Standard/Fallback `BizTalkMgmtDb`. |
| `--btstask DATEI` | Expliziter Pfad zu `BTSTask.exe`. |
| `--binding-file DATEI` | Vorhandenen Binding-Export offline auswerten, ohne `BTSTask` aufzurufen. |
| `--self-test` | Prüft Secret-Redaktion, SAP-Parser und DOCX-Struktur. |
| `--help` | Hilfe anzeigen. |
## Exitcodes
| Code | Bedeutung |
| ---: | --- |
| `0` | Pflichtabschnitte vollständig und DOCX erzeugt. |
| `1` | DOCX erzeugt, aber mindestens ein Pflichtabschnitt war unvollständig. |
| `2` | Fataler Aufruf-, Ausgabe- oder Berichtserzeugungsfehler. |
## Build für BizTalk Server 2020
Die Solution verwendet bewusst das klassische Visual-Studio-2019-Projektformat:
| Komponente | Vorgabe |
| --- | --- |
| Ziel | .NET Framework 4.7.2 |
| Sprache | C# 7.3 |
| Projektformat | klassisches MSBuild, kein `Microsoft.NET.Sdk` |
| Buildumgebung | Visual Studio 2019/Build Tools, MSBuild 16.x oder neuer |
| Pakete | keine NuGet-Abhängigkeiten |
Build und Tests:
```cmd
scripts\build-release.cmd
scripts\package-release.cmd
```
Deployment:
```text
artifacts\BizTalkSapEnvironmentInventory-deploy\
```
Die Gitea-Workflowdatei `.gitea/workflows/build.yml` baut, testet und veröffentlicht den Deployment-Ordner auf einem Windows-Runner.
## Troubleshooting
### Keine Anwendungen
- lokal auf dem BizTalk Server ausführen
- Konto und Mitgliedschaft in den BizTalk-Administrator-/Operator-Gruppen prüfen
- WMI-Namespace `root\MicrosoftBizTalkServer` prüfen
### BTSTask findet die Management Database nicht
Management SQL Server und Datenbank explizit angeben:
```cmd
BizTalkSapEnvironmentInventory.exe ^
--environment ACC ^
--management-server SQL-ACC ^
--management-database BizTalkMgmtDb
```
Alternativ einen autorisierten Binding-Export bereitstellen:
```cmd
BizTalkSapEnvironmentInventory.exe ^
--environment ACC ^
--binding-file C:\Temp\ACC-GroupBindings.xml
```
### Keine SAP-Endpunkte
- prüfen, ob der Adapter als `WCF-SAP` oder als `WCF-Custom` mit `sapBinding` verwendet wird
- vollständigen Gruppenbindingexport statt nur einer Anwendung verwenden
- DOCX-Findings und Log prüfen
Weitere Architektur- und Sicherheitsdetails stehen in [Dokumentation.md](Dokumentation.md).