Skip to content
ConduitConduit

Tunnels — SQL Server

This page covers reaching an on-prem Microsoft SQL Server database through Conduit using a Tunnel’s read-only mssql connector. If you haven’t deployed a Tunnel yet, start with the Quickstart; this page is the SQL-specific layer on top of it.

Any Microsoft SQL Server database the Tunnel host can reach on the local network — including the SQL Server databases behind on-prem business systems (ERPs, accounting packages, line-of-business apps). The Tunnel talks to SQL Server directly via the mssql connector.

If the system’s data lives in something other than SQL Server (a proprietary or file-based data store), the mssql connector cannot reach it — confirm the deployment is SQL Server-backed before planning this deploy.

The mssql connector is read-only. It exposes exactly three tools and never writes:

Tool What it does
query Runs a single read-only SELECT/WITH statement. Writes and multi-statement batches are refused. Results are capped at 100 rows by default, 1000 max.
list_tables Lists tables available to the connected SQL login.
describe_table Returns a table’s columns and types.

Writes — posting transactions, editing records — go through the application that owns the database, never raw SQL. This path is for reading data (reporting, lookups, agent queries), not mutating it.

The scoped read-only SQL login is the real enforcement

Section titled “The scoped read-only SQL login is the real enforcement”

The mssql connector’s tools are read-only, but the enforcement boundary you own is the SQL principal you give it. Provision a dedicated, scoped read-only login — do not reuse an application or admin account.

  • Grant db_datareader on the target database, or a curated set of roles limited to the tables/views the use case actually needs.
  • Do not grant write, DDL, or admin roles. Even though the connector won’t issue writes, the login itself should be incapable of them — that’s defense-in-depth, and it’s the control a security review will look for.
  • Scope the login to the one database in play.

When your Conduit operator configures the mssql connector for you, they’ll need these (the connector’s config fields — see the Reference):

  • host — the SQL Server hostname or IP the Tunnel can reach on the local network.
  • port — SQL Server TCP port (default 1433).
  • database — the target database name.
  • user — the scoped read-only SQL login you provisioned above.
  • password — that login’s password (stored encrypted in Conduit; pushed over the tunnel; held in Tunnel memory only).
  • encrypt — "true" (default) to require TLS to SQL Server; use "disable" only for a lab DB with no TLS.

Once applied, you’ll see config applied connectors=[mssql] in the Tunnel logs, and the three tools are reachable through Conduit for authenticated users in your org.