Secure connections

Encrypt the connection, and keep the credentials out of reach

TLS on every connection type, an assistant that sets up an encrypted IRIS or Caché connection, and stored passwords protected by Windows DPAPI.

  • TLS-Reiter in beiden Verbindungsdialogen
  • TLS-Assistent für IRIS und Caché
  • Passwörter mit Windows DPAPI geschützt
  • Passwort nie speichern, je Verbindung
  • Team-Profile ohne Zugangsdaten darin

Bis 4.00 hätte diese Seite schreiben müssen, dass Transportverschlüsselung auf der Roadmap steht. Das ist vorbei: 4.01 verschlüsselt Verbindungen — und führt Sie für InterSystems IRIS und Caché, wo das Einrichten von TLS bisher eine Properties-Datei, keytool und einen Neustart bedeutete, Schritt für Schritt hindurch.

Die andere Hälfte desselben Themas sind die Zugangsdaten. Eine Verbindung ist nicht durch einen verschlüsselten Transport geschützt, wenn das Passwort dahinter in einer Datei liegt, die jeder vom Rechner kopieren kann. Beide Hälften haben sich in diesem Release geändert.

Der TLS-Reiter

Beide Verbindungsdialoge — der für InterSystems und der generische JDBC-Dialog — haben einen Reiter TLS mit denselben drei Einstellungen:

Einstellung Was sie bedeutet
Treiber-Standard Was der JDBC-Treiber von sich aus tut. Beim Microsoft-SQL-Server-Treiber ist das verschlüsselt mit Zertifikatsprüfung; bei anderen ist es unterschiedlich.
Keine Verschlüsselung Die richtige Antwort für einen Server, der gar kein TLS anbietet — und eine ausdrückliche Wahl statt eines Versehens.
Verschlüsselt (TLS) Ein TLS-Handshake ist Pflicht. Dazu „Serverzertifikat vertrauen" bei einem selbstsignierten Zertifikat, oder ein erwarteter Zertifikats-Hostname, wenn der Name im Zertifikat nicht der ist, mit dem Sie sich verbinden.

Daneben stehen Serverzertifikat vertrauen und ein erwarteter Zertifikats-Hostname für generische JDBC-Verbindungen sowie ein Name der SSL-Konfiguration für IRIS und Caché. Scheitert ein Handshake, sagt die Meldung, was passiert ist und welcher dieser Schalter hilft — der Unterschied zwischen einer Fünf-Minuten-Korrektur und einem Nachmittag mit einem Paketmitschnitt.

Eine Folge sollten Sie vor dem Update kennen: SQL-Server- und Azure-SQL-Verbindungen folgen jetzt der Vorgabe des Microsoft-Treibers, und die ist verschlüsselt mit Zertifikatsprüfung. Bis 4.00 wurde jede SQL-Server-Verbindung zwangsweise unverschlüsselt geführt. Für einen Server mit selbstsigniertem Zertifikat wählen Sie Verschlüsselt (TLS) plus Serverzertifikat vertrauen; für einen Server ohne TLS Keine Verschlüsselung, dann verhält sich die Verbindung wie zuvor. Mehr zu diesem Weg unter Azure SQL und Fabric.

Der TLS-Assistent für IRIS und Caché

Eine InterSystems-JDBC-Verbindung zu verschlüsseln bedeutete bisher: eine SSL-Konfigurationsdatei von Hand schreiben, mit keytool einen Truststore bauen, die Hostnamenprüfung richtig treffen und den Client neu starten, um zu erfahren, ob irgendetwas davon funktioniert hat. Der Assistent erledigt die Reihenfolge und endet mit dem einzigen Test, der zählt.

Zu öffnen über Assistant… auf dem TLS-Reiter einer Verbindung oder über Einstellungen > InterSystems IRIS / Caché > TLS > Set up…. Er hat vier Schritte:

  1. Quelle wählen für das Serverzertifikat: vom Server holen, eine vorhandene PEM-, DER- oder P7B-Datei importieren oder einen bestehenden .p12/.jks-Truststore verwenden. Jede Option hat ihre eigenen Felder direkt darunter; Host und Port stehen in einem eigenen Abschnitt darüber, weil Hostnamenprüfung und Testverbindung sie in jedem Fall brauchen.
  2. Zertifikat bestätigen. Beim Holen vom Server ist das Trust-on-First-Use, und der Assistent sagt das auch: Er zeigt die Kette — Subject, Aussteller, Gültigkeit, SHA-256-Fingerabdruck — zusammen mit der nüchternen Feststellung, dass ein Abholen nur belegt, was die Gegenstelle präsentiert hat, nicht, dass sie die richtige ist. Prüfen Sie den Fingerabdruck auf einem anderen Weg nach, bevor Sie vertrauen. Die Standardschaltfläche dieses Dialogs ist Abbrechen, und es gibt kein Häkchen und keinen Timer, an dem man vorbeiklicken kann.
  3. Abschnitt benennen und Vorschau ansehen. Sie sehen die genauen Zeilen, die angehängt werden, und in welche Datei. Der Assistent hängt ausschließlich an — er schreibt keine von Hand gesetzte Zeile um und überschreibt keinen bestehenden Truststore.
  4. Anwenden und testen. Vor dem Test prüft eine SAN-Vorabprüfung, ob der Host, mit dem Sie sich verbinden, im Zertifikat als DNS-Eintrag steht — dieselbe Prüfung, die der Treiber macht, hier abgefangen statt später am Ende eines Stacktrace. Sie warnt, statt zu blockieren; die Schaltfläche wird zu Try anyway. Danach werden Truststore geschrieben, der Abschnitt angehängt, SSL-Konfigurationsdatei gesetzt und eine echte Testverbindung aufgebaut.

Der Abschlussbericht wiederholt den Fingerabdruck für Ihre Unterlagen und ist bei einer Grenze deutlich, die leicht übersehen wird: Der eben gebaute Truststore deckt die Superserver-Verbindung zu IRIS oder Caché ab. Er gilt nicht für den Atelier-REST-Endpunkt, den der Quellcode-Reiter und die Klassenaktionen benutzen — das ist ein eigener HTTPS-Endpunkt mit eigenem Truststore.

Passwörter, geschützt von Windows statt von der Anwendung

Gespeicherte Verbindungspasswörter sind mit Windows DPAPI geschützt. Windows verschlüsselt sie gegen Ihr eigenes Windows-Benutzerprofil, der Schlüssel ist also nicht mehr Teil der Anwendung. Daraus folgen zwei Dinge, und beide sind der Punkt:

  • Eine kopierte oder gesicherte config.json gibt Ihre Passwörter nicht mehr her. Bisher reiste der Schutz mit der Datei — womit er eigentlich keiner war.
  • Ein anderes Windows-Konto auf demselben Rechner kann sie nicht lesen, auch mit Zugriff auf die Datei nicht.

Die Migration passiert beim ersten Start von selbst — es geht nichts verloren, und Sie verbinden sich weiter, ohne etwas einzutippen. Weil der Schutz an Rechner und Windows-Konto gebunden ist, behält eine auf einen anderen Rechner oder in ein anderes Konto übertragene Konfiguration jede Verbindung und fragt einmal je Passwort nach. Zwei zugehörige Aufräumarbeiten kommen dazu: Extras > Alle Server-Passwörter kodieren ist entfallen, weil ein noch im Klartext gespeichertes Passwort jetzt beim Laden der Konfiguration von selbst geschützt wird — und Extras > Alte Konfigurationsdateien entfernen… listet die alten Dateien auf, in denen noch Passwörter im Format vor 4.01 liegen, mit Pfad, Größe und dem Grund der Aufnahme, und löscht nichts, bevor Sie bestätigen. Ihre aktuelle config.json wird nie angefasst.

Lesen Sie diese Bestätigung. Das Entfernen alter Konfigurationsdateien lässt sich nicht rückgängig machen. Es lohnt sich — genau diese Dateien wären es, die ein Backup oder ein kopiertes Profil nach außen getragen hätte —, aber tun Sie es bewusst.

Oder gar nichts speichern

Passwort nie speichern ist ein Schalter auf dem neuen Reiter Passwort der Verbindungseigenschaften, mit einer Vorgabe für neu angelegte Verbindungen unter Einstellungen > Verbindungen. Ist er aktiv, wird für diese Verbindung kein Passwort geschrieben: SQL DATA LENS fragt einmal und behält es nur für die laufende Sitzung. In einem Unternehmen, dessen Richtlinie gespeicherte Zugangsdaten schlicht verbietet, beendet das einmalige Setzen der Vorgabe die Diskussion.

Eine Verbindung teilen, ohne Zugangsdaten zu teilen

Üblicherweise verteilt ein Team Verbindungsdaten per Screenshot eines Dialogs oder indem jemand eine Portnummer vorliest. Team-Profile ersetzen das: Export server profile… auf einer Verbindung oder einer ganzen Gruppe schreibt eine lesbare *.sdlprofile.json, die Sie auf ein Share legen, an eine Mail hängen oder in ein Wiki kopieren können, und Add server from profile… liest sie mit einer Vorschau dessen zurück, was sie anlegen wird.

Ein Passwort enthält sie überhaupt nicht — nicht verschleiert, nicht verschlüsselt, sondern gar nicht. Wer importiert, trägt beim ersten Verbinden die eigenen Zugangsdaten ein, was auch für die Nachvollziehbarkeit die richtige Antwort ist. Beim Import eines aktualisierten Profils werden Sie gefragt, was mit einer gleichnamigen Verbindung geschehen soll: aktualisieren und alles Lokale unverändert lassen, als Kopie importieren oder überspringen.

Ist eine Verbindung erst geteilt, folgt die Frage, was man mit ihr tun darf. Das sind Umgebungen und Schreibschutz: eine Einstufung als Produktion, eine Farbe und ein Wächter, der Schreibzugriffe ablehnt.

Was hier nicht abgedeckt ist

Transportverschlüsselung und Passwortspeicherung sind zwei der Fragen eines Security-Reviews, nicht alle. Der Rest — was den Rechner verlässt, was auf dem Datenbankserver installiert wird, Telemetrie, signierte Binaries, die mitgelieferte JRE — steht unter Sicherheit und Datenschutz, wo auch jede ausgehende Verbindung der Anwendung aufgeführt ist. Wenn Sie diese Antworten auf Briefpapier statt auf einer Webseite brauchen, schreiben Sie an sales@sqldatalens.com.

Fragen, die Ihr Security-Review stellen wird

Wo werden Verbindungspasswörter jetzt gespeichert, und was hat sich geändert?

In der benutzerbezogenen Konfiguration auf dem lokalen Rechner, verschlüsselt durch Windows DPAPI gegen Ihr eigenes Windows-Benutzerprofil. Geändert hat sich in 4.01, wessen Schlüssel sie schützt: Bis dahin reiste der Schutz mit der Anwendung, wer also eine kopierte config.json hatte, hatte auch die Passwörter. Jetzt gehört der Schlüssel Ihrem Windows-Konto. Eine kopierte oder gesicherte Konfigurationsdatei gibt sie nicht mehr her, und ein zweites Windows-Konto auf demselben Rechner kann sie nicht lesen.

Die Migration passiert beim ersten Start von selbst. Es geht nichts verloren, und Sie verbinden sich weiter, ohne etwas einzutippen.

Was passiert, wenn ich meine Konfiguration auf einen anderen Rechner nehme?

Jede Verbindung kommt mit — Server, Ports, Namespaces, Gruppen, alles. Die Passwörter nicht, denn der DPAPI-Schutz ist an den Rechner und das Windows-Konto gebunden, das ihn gesetzt hat. Auf dem neuen Rechner werden Sie einmal je Passwort gefragt, danach verhält es sich wie zuvor. Das ist der beabsichtigte Tausch: eine Konfigurationsdatei, die sich sinnvoll mitnehmen lässt, ohne Zugangsdaten dorthin zu tragen, wo sie landet.

Kann ich das Speichern eines Passworts ganz unterbinden?

Ja — Passwort nie speichern, auf dem Reiter Passwort der Verbindungseigenschaften und als Vorgabe für neu angelegte Verbindungen unter Einstellungen > Verbindungen. Ist es aktiv, wird für diese Verbindung kein Passwort geschrieben: SQL DATA LENS fragt einmal und behält es nur für die laufende Sitzung. Verbietet Ihre Sicherheitsrichtlinie gespeicherte Zugangsdaten grundsätzlich, setzen Sie die Vorgabe einmal, und die Frage stellt sich nie wieder.

Ändert der TLS-Assistent etwas auf dem Server?

Nein. Er liest das Zertifikat des Servers — dasselbe, das jeder Client beim Handshake sieht — und schreibt Dateien auf Ihrem Rechner: den Truststore und die SSL-Konfigurationsdatei, die der InterSystems-Treiber liest. Die Instanz selbst wird nicht angefasst, an ihrer Konfiguration wird nichts geändert, und installiert wird nichts. TLS auf der IRIS-Instanz einzurichten bleibt eine serverseitige Aufgabe für die Administration.

Enthalten Team-Profile Passwörter?

Nein, auch nicht in umkehrbarer Form — eine *.sdlprofile.json hat überhaupt kein Passwortfeld. Sie enthält die Verbindungsdaten: Server, Port, Namespace, Treiber, Gruppe und die Einstellungen, die die Verbindung funktionieren lassen. Wer sie importiert, trägt beim ersten Verbinden die eigenen Zugangsdaten ein. Genau das macht es unbedenklich, die Datei auf ein Share zu legen, an eine Mail zu hängen oder in ein Wiki zu kopieren.

Der nächste Schritt

Der TLS-Assistent ist der Teil, den man kaum glaubt, bevor man ihm zugesehen hat. Laden Sie SQL DATA LENS herunter, öffnen Sie den TLS-Reiter einer IRIS-Verbindung und lassen Sie ihn in einem Durchgang holen, prüfen, schreiben und testen.

Explore your IRIS data from SQL down to globals

Download, unzip, connect. Your first namespace is on screen in about three minutes.

Windows 10, 11 and Windows Server (64-bit) · ~130 MB · version 4.01 · full 30-day Pro trial included