DQC Logo
|

Anbindung über den DQC Proxy

Der DQC Proxy verbindet Ihre Datenbanken mit der DQC-Plattform, ohne dass Sie einen einzigen eingehenden Firewall-Port öffnen müssen. Er läuft als kleiner Dienst in Ihrem Netzwerk und baut eine ausgehende, TLS-verschlüsselte Verbindung (WSS über Port 443) zum DQC Tunnel-Gateway auf. Alle Datenbankzugriffe der Plattform laufen durch diesen Tunnel — Ihre Firewall bleibt zu.

In einem Satz: Die DQC-Plattform erreicht Ihre Datenbank ausschließlich durch den Tunnel, den Ihr Proxy von innen nach außen aufgebaut hat — und auch dann nur die Ziele, die Sie explizit freigegeben haben.


Systemvoraussetzungen

  • Linux-Server oder -VM (x86_64 oder ARM64) — 1 vCPU / 256 MB RAM genügen

  • Ausgehender HTTPS-Zugang (Port 443) zu gw.shared.app.dqc.ai

  • Netzwerkzugriff vom Proxy-Host auf die freizugebende(n) Datenbank(en)

  • Keine eingehenden Firewall-Freigaben erforderlich

Download & Installation

Laden Sie das Archiv für Ihre Architektur von der DQC-Proxy-Releases-Seite:

Prüfsumme verifizieren, dann installieren:

sha256sum --check --ignore-missing SHA256SUMS
tar -xzf dqcproxy-linux-<arch>.tar.gz
sudo install -m 0755 dqcproxy /usr/local/bin/dqcproxy

Aktuelle Prüfsummen (v0.1.0): amd64 e3b8e49004dd771d16c49bcd3027539116cd8fe9469fe0811252c4e0b8e7c76b, arm64 ebf774d7ad2d3d4b2debc488c0c586d0c056743ce8496b36af1d481ddcd5ef78.

Betrieb als eigene VM (cloud-init)

Wenn Sie eine dedizierte Proxy-VM in Ihrer Infrastruktur bevorzugen: Erstellen Sie eine Ubuntu-22.04/24.04-Minimal-VM (1 vCPU / 1 GB RAM / 10 GB Disk) und hängen Sie unsere cloud-init.yaml als user-data an — Token und Allowlist eintragen, booten, fertig. Die VM installiert den Proxy (Checksum-verifiziert), härtet den Dienst und aktiviert automatische OS-Sicherheitsupdates. Für eine bereits laufende VM gibt es ein install.sh:

curl -fsSLO https://github.com/dataqcompany/dqcproxy-releases/raw/main/vm/install.sh
sudo bash install.sh --token dqcpx_IHR_TOKEN --allow "db1.intern.example.com:5432"

Das Betriebssystem bleibt unter Ihrer Kontrolle und Patch-Richtlinie — der Proxy ist nur ein einzelnes statisches Binary obendrauf.

Betrieb als Container

Wenn Sie Docker oder Kubernetes betreiben, nutzen Sie statt einer VM das öffentliche Multi-Arch-Image ghcr.io/dataqcompany/dqcproxy:

docker run -d --name dqcproxy --restart always \
  -e DQCPROXY_MODE=client \
  -e DQCPROXY_GATEWAY_URL=wss://gw.shared.app.dqc.ai \
  -e DQCPROXY_TOKEN=dqcpx_IHR_TOKEN \
  -e DQCPROXY_ALLOW="db1.intern.example.com:5432" \
  ghcr.io/dataqcompany/dqcproxy:latest

Es werden keine Ports veröffentlicht — der Proxy kommuniziert nur ausgehend. Das Image ist distroless (keine Shell, kein Paketmanager) und läuft als Non-Root-User.

Proxy starten

Sie erhalten von DQC einen einmaligen Enrollment-Token (dqcpx_…). Er weist Ihren Proxy gegenüber dem Gateway aus — behandeln Sie ihn wie ein Passwort.

dqcproxy --mode=client \
  --gateway wss://gw.shared.app.dqc.ai \
  --token dqcpx_IHR_TOKEN \
  --allow "db1.intern.example.com:5432,db2.intern.example.com:1433"

Bei erfolgreicher Verbindung erscheint im Log:

{"level":"INFO","msg":"tunnel established","gateway":"wss://gw.shared.app.dqc.ai"}

Betrieb als systemd-Dienst (empfohlen)

/etc/systemd/system/dqcproxy.service:

[Unit]
Description=DQC Proxy (Reverse-Tunnel zur DQC-Plattform)
After=network-online.target
Wants=network-online.target

[Service]
ExecStart=/usr/local/bin/dqcproxy --mode=client
Environment=DQCPROXY_GATEWAY_URL=wss://gw.shared.app.dqc.ai
EnvironmentFile=/etc/dqcproxy/env
Restart=always
RestartSec=5
DynamicUser=yes
NoNewPrivileges=yes
ProtectSystem=strict

[Install]
WantedBy=multi-user.target

/etc/dqcproxy/env (Rechte 600, Eigentümer root):

DQCPROXY_TOKEN=dqcpx_IHR_TOKEN
DQCPROXY_ALLOW=db1.intern.example.com:5432

Aktivieren mit sudo systemctl enable --now dqcproxy.

Konfigurationsreferenz

Jedes Flag kann alternativ als Umgebungsvariable gesetzt werden:

  • --mode / DQCPROXY_MODE — in Ihrem Netzwerk immer client

  • --gateway / DQCPROXY_GATEWAY_URL — Gateway-URL: wss://gw.shared.app.dqc.ai

  • --token / DQCPROXY_TOKEN — Ihr Enrollment-Token (dqcpx_…)

  • --allow / DQCPROXY_ALLOW — Allowlist der erreichbaren Ziele (siehe unten)

Ziel-Allowlist

Der Proxy verbindet sich ausschließlich zu Zielen, die Sie hier freigeben — alles andere wird abgelehnt (Default-Deny). Kommagetrennte Einträge, drei Formen:

  • host:port — genau dieser Host und Port, z. B. db1.intern.example.com:5432

  • *.domain:port — alle Subdomains, fester Port, z. B. *.sql.example.com:1433

  • host:* — fester Host, alle Ports, z. B. dwh.example.com:*

Pauschale Freigaben wie *:5432 werden bewusst nicht akzeptiert.

Sicherheit

  • Nur ausgehend: Der Proxy öffnet keinen einzigen Listening-Port. Er wählt sich per WSS (TLS, Port 443) beim DQC-Gateway ein.

  • Keine Zugangsdaten im Proxy: Datenbank-Credentials verbleiben verschlüsselt in der DQC-Plattform. Der Proxy leitet nur Bytes weiter; bei aktiviertem Datenbank-TLS sieht er ausschließlich verschlüsselten Verkehr.

  • Allowlist in Ihrer Hand: Die Zielfreigabe wird in Ihrem Netzwerk durchgesetzt. Selbst ein vollständig kompromittiertes Cloud-Gegenüber könnte nur die von Ihnen gelisteten host:port-Ziele erreichen.

  • Server-autoritative Routen: Welche Ziele angefragt werden, bestimmen die in der DQC-Plattform konfigurierten Connectoren — der Tunnel transportiert keine frei wählbaren Adressen von außen.

  • Kein Code, keine Ausführung: Der Proxy enthält keine Geschäftslogik und führt nichts aus. Ein einzelnes statisches Binary.

Troubleshooting

  • tunnel established erscheint nicht — ausgehender Port 443 zu gw.shared.app.dqc.ai blockiert (Firewall/Web-Proxy prüfen) oder Token ungültig. DQC-Support kontaktieren.

  • Log zeigt Ablehnung eines Ziels — das Ziel host:port fehlt in --allow. Ergänzen und Dienst neu starten. Hinweis: localhost und 127.0.0.1 sind unterschiedliche Einträge.

  • Verbindung bricht ab — der Proxy verbindet sich automatisch mit Backoff neu; kurze Unterbrechungen heilen selbst. Dauerhafter Reconnect-Loop: DQC-Support.

  • Fehlermeldung „refusing plaintext ws://“ — die Gateway-URL muss mit wss:// beginnen (TLS). ws:// ist nur für Entwicklungsumgebungen zulässig.

Fragen? support@dqc.ai — bitte Logauszug und Release-Version mitschicken.