MCP-Origin-, Authentisierungs- und Exposure-Modell
Sicherheitsgrenzen
Es existieren zwei getrennte Authentisierungsebenen:
| Verbindung | Mechanismus | Zweck |
|---|---|---|
| MCP-Client → vorgeschalteter Reverse-Proxy | vom Betreiber bereitgestellte Authentisierung | Benutzer-/Clientzugang zum MCP-Endpunkt |
private-proxy → Reverse Connector |
TLS-Serverprüfung plus private_proxy.shared_key als Bearer |
Maschinenzugang zum Tunnel |
Der MCP-Prozess selbst implementiert derzeit keine Benutzeranmeldung und kein
OAuth. Der Connector-Key darf niemals als MCP-Client-Token verwendet werden.
private_proxy.identity ist nur ein nicht geheimes Log-Label.
Sichere Standardtopologie
mcp.listen_address ist standardmäßig 127.0.0.1:9334. Lokale Clients dürfen
direkt zugreifen. Für Remote-Zugriff steht davor ein Reverse-Proxy, der TLS und
Zugangskontrolle erzwingt und erst danach zu Port 9334 weiterleitet.
Eine Non-Loopback-Bindung wird beim Start abgelehnt, solange nicht gleichzeitig
mcp.tls_terminated_by_proxy=true und mindestens eine exakte
mcp.allowed_origins gesetzt sind. Diese Bestätigung konfiguriert selbst kein
TLS und keine Authentisierung; sie dokumentiert eine vorhandene externe
Sicherheitsgrenze.
Origin-Prüfung
- Erlaubte Werte sind exakte absolute Origins aus Schema, Host und optionalem Port, ohne Pfad, Query, Fragment oder Wildcard.
- Ein vorhandener ungültiger oder nicht erlaubter
Originwird mit HTTP 403 vor dem MCP SDK abgewiesen. - Ein fehlender
Originist für nicht-browserbasierte MCP-Clients zulässig. - Origin-Prüfung begrenzt Browser-Cross-Origin-Zugriff, ist aber keine Authentisierung und keine Autorisierung.
- Query-Strings und unbekannte Pfade werden mit 404 abgewiesen.
Die explizite Prüfung bleibt Anwendungscode, weil SDK-Security-Defaults sich zwischen Releases ändern können. Sie wird bei SDK-Upgrades getestet.
Forwarded-Header
Eingehende Forwarded- und X-Forwarded-*-Werte sind nicht vertrauenswürdig.
Der aktuelle Listener verwendet sie nicht. mcp.trusted_proxy_cidrs validiert
Konfiguration für eine spätere kontrollierte Auswertung, aktiviert heute aber
keine implizite Headerauswertung. Der Edge-Proxy soll fremde Forwarded-Header
immer entfernen und selbst neu setzen.
Protokoll- und Ressourcenbegrenzung
Nur MCP Streamable HTTP auf dem konfigurierten Endpoint ist registriert; der separate Legacy-HTTP+SSE-Transport ist deaktiviert. Das offizielle Go SDK prüft MCP-Methoden, Medientypen, Protokollrevision und Sessionzustand. Header-, Idle- und Shutdown-Timeout sowie maximale Headergröße begrenzen den HTTP- Server. Requestheader, Requestbodies und Secrets werden nicht geloggt.
GET /health/live enthält nur {"status":"live"}. GET /health/ready
enthält nur ready oder not_ready und wird erst mit authentisiertem aktiven
Proxy bereit. Beide Endpunkte ersetzen keine Zugangskontrolle.
Weitere Implementierungsdetails: MCP-Endpunkt sicher exponieren.