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 tab on both connection dialogues
- TLS assistant for IRIS and Caché
- Passwords protected with Windows DPAPI
- Never save the password, per connection
- Team profiles with no credentials in them
Until 4.00 this page would have had to say that transport encryption was on
the roadmap. That is no longer the case: 4.01 encrypts
connections, and — for InterSystems IRIS and Caché, where setting TLS up used
to mean a properties file, keytool and a restart — walks you
through it.
The other half of the same subject is the credential. A connection is not protected by an encrypted transport if the password behind it sits in a file anyone can copy off the machine. Both halves changed in this release.
The TLS tab
Both connection dialogues — the InterSystems one and the generic JDBC one — have a TLS tab with the same three settings:
| Setting | What it means |
|---|---|
| Driver default | Whatever the JDBC driver does on its own. For the Microsoft SQL Server driver that is encrypted with certificate verification; for others it varies. |
| No encryption | The right answer for a server that offers no TLS at all, and an explicit choice rather than an accident. |
| Encrypted (TLS) | A TLS handshake is required. Add "Trust the server certificate" for a self-signed certificate, or an expected certificate host name where the name in the certificate is not the name you connect to. |
Alongside them sit Trust the server certificate and an expected certificate host name for generic JDBC connections, and an SSL configuration name for IRIS and Caché. When a handshake fails, the message says what happened and which of these switches addresses it — the difference between a five-minute fix and an afternoon with a packet capture.
One consequence worth knowing before you update: SQL Server and Azure SQL connections now follow the Microsoft driver's own default, which is encrypted with certificate verification. Up to 4.00 every SQL Server connection was forced to be unencrypted. For a server with a self-signed certificate, choose Encrypted (TLS) plus Trust the server certificate; for a server that offers no TLS, choose No encryption and the connection behaves as it did before. More on that path in Azure SQL and Fabric.
The TLS assistant for IRIS and Caché
Encrypting an InterSystems JDBC connection has historically involved writing
an SSL configuration file by hand, building a trust store with
keytool, getting the host name check right, and restarting the
client to find out whether any of it worked. The assistant does the sequence
for you and ends with the only test that matters.
Open it from Assistant… on a connection's TLS tab, or from Settings > InterSystems IRIS / Caché > TLS > Set up…. It has four steps:
- Choose a source for the server certificate: fetch it from
the server, import a PEM, DER or P7B file you already have, or use an
existing
.p12/.jkstrust store. Each option has its own fields grouped directly underneath it; host and port sit in their own section above, because the host name check and the test connection need them whichever route you pick. - Confirm the certificate. For a fetch, this is trust-on-first-use, and the assistant says so: it shows the chain — subject, issuer, validity, SHA-256 fingerprint — together with the plain statement that a fetch proves only what the other endpoint presented, not that it is the right endpoint. Verify the fingerprint out of band before you trust it. The default button on that dialogue is Cancel, and there is no checkbox or timer to click past.
- Name the section and preview it. You see the exact lines that will be appended and which file they go into. The assistant only ever appends — it never rewrites or reorders a line someone wrote by hand, and never overwrites an existing trust store.
- Apply and test. Before the test, a SAN pre-check asks
whether the host you connect to is listed as a
DNSentry in the certificate — the same check the driver makes, caught here instead of at the bottom of a stack trace later. It warns rather than blocks; the button becomes Try anyway. Then the trust store is written, the section appended, SSL configuration file set, and a real test connection run.
The closing report repeats the fingerprint for your records, and is explicit about one boundary that is easy to get wrong: the trust store it just built covers the IRIS or Caché superserver connection. It does not apply to the Atelier REST endpoint that the Source Code tab and the Classes actions use, which is a separate HTTPS endpoint with its own trust store.
The TLS settings page also gained a Validate… button that checks an existing configuration file and reports what is wrong with it — the fastest answer to "this worked last month". And SSL configuration file takes effect as soon as you save it. No restart.
Passwords protected by Windows, not by the application
Stored connection passwords are protected with Windows DPAPI. Windows encrypts them against your own Windows user profile, so the key is no longer part of the application. Two things follow from that, and both are the point:
-
A copied or backed-up
config.jsonno longer gives up your passwords. Previously the protection travelled with the file, which meant it was not really protection at all. - Another Windows account on the same machine cannot read them, even with access to the file.
Migration happens by itself on the first start — nothing is lost, and you keep
connecting without typing anything. Because the protection is bound to the
computer and the Windows account that saved it, a configuration you move to a
different machine or account keeps every connection and asks once for each
password. Two related pieces of housekeeping come with it:
Tools > Encode all Server Passwords is gone, because protecting a
password still stored in clear text now happens by itself while the
configuration loads; and
Tools > Remove legacy configuration files… lists the old
files that still hold passwords in the pre-4.01 format, with each file's path,
size and the reason it is listed, and deletes nothing until you confirm. Your
current config.json is never touched.
Read that confirmation. Removing legacy configuration files cannot be undone. It is worth doing — those files are exactly the ones a backup or a copied profile would have leaked — but do it deliberately.
Or store nothing at all
Never save the password is a switch on the new Password tab of the connection properties, with a default for newly created connections under Settings > Connections. With it on, no password is written for that connection: SQL DATA LENS asks once and keeps it for the running session only. For an organisation whose policy simply forbids stored credentials, setting the default once ends the discussion.
Sharing a connection without sharing a credential
The usual way a team distributes connection details is a screenshot of a
dialogue, or a colleague reading a port number aloud. Team profiles replace
that: Export server profile… on a connection or a whole group writes
a readable *.sdlprofile.json that you can put on a share, attach
to a mail or paste into a wiki, and Add server from profile… reads it
back with a preview of what it is about to create.
It carries no password at all — not obfuscated, not encrypted, absent. The person importing it enters their own credentials on the first connect, which is also the correct answer for auditing. Importing an updated profile asks what to do with a connection of the same name: update it and leave everything local as it is, import it as a copy, or skip it.
Once a connection is shared, the next question is what people are allowed to do with it. That is environments and read-only: a Production classification, a colour, and a guard that refuses writes.
What this does not cover
Transport encryption and credential storage are two of the questions a security review asks, not all of them. The rest — what leaves the machine, what is installed on the database server, telemetry, signed binaries, the bundled JRE — is on security and privacy, which also lists every outbound connection the application makes. If you need those answers on letterhead rather than on a web page, write to sales@sqldatalens.com.
Questions your security review will ask
Where are connection passwords stored now, and what changed?
In the per-user configuration on the local machine, encrypted by Windows DPAPI against your own Windows user profile. What changed in 4.01 is whose key protects them: until then the protection travelled with the application, so anyone holding a copied config.json held the passwords too. Now the key belongs to your Windows account. A copied or backed-up configuration file no longer gives them up, and a second Windows account on the same machine cannot read them.
Migration happens by itself on the first start. Nothing is lost and you keep connecting without typing anything.
What happens if I move my configuration to another machine?
Every connection comes with it — servers, ports, namespaces, groups, all of it. The passwords do not, because DPAPI protection is bound to the computer and the Windows account that saved it. You are asked once per password on the new machine, and from then on it behaves as it did on the old one. That is the intended trade: a configuration file that travels usefully, without carrying credentials into wherever it lands.
Can I stop it storing a password at all?
Yes — Never save the password, on the Password tab of the connection properties, and as a default for newly created connections under Settings > Connections. With it on, no password is written for that connection: SQL DATA LENS asks once and keeps it for the running session only. If your security policy forbids stored credentials outright, set the default and the question never comes up again.
Does the TLS assistant change anything on the server?
No. It reads the server's certificate — the same certificate any client sees during a handshake — and writes files on your machine: the trust store and the SSL configuration file the InterSystems driver reads. The instance itself is not touched, no configuration is changed on it, and nothing is installed. Setting up TLS on the IRIS instance remains a server-side job for whoever administers it.
Do team profiles carry passwords?
No, and not in a reversible form either — a *.sdlprofile.json has no password field at all. It carries the connection details: server, port, namespace, driver, group, and the settings that make the connection work. Whoever imports it enters their own credentials on the first connect. That is what makes it safe to put on a share, attach to a mail or paste into a wiki.
Next step
The TLS assistant is the part that is hard to believe until you have watched it work. Download SQL DATA LENS, open the TLS tab on an IRIS connection, and let it fetch, check, write and test in one pass.
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