-- skip to content
LibreDB StudioLibreDB Studio
Live Demo
security.sql
SELECT control, detail FROM security_controls;
7 rows |2 cols3ms

Security model

What is enforced, where it is enforced, and how to reach us when something isn't.

Authentication

OpenID Connect SSO (Auth0, Keycloak, Okta, Azure AD or any OIDC provider) using Authorization Code Flow with PKCE. Sessions ride JWTs in httpOnly cookies — no tokens in localStorage.

OIDC guide

Authorization

Role-based access control with per-connection visibility scoping — a connection can be exposed to admins only, to users, or to everyone. Roles map from your identity provider claims.

Database credentials

Seed connections resolve ${ENV_VAR} placeholders at runtime, so secrets live in your environment or secret manager — never in a config file. Pair each connection with a dedicated least-privilege database account (read-only to start).

Seed connections

Transport

TLS between browser and app; TLS and SSH tunnels from the app to your databases — including databases behind firewalls that never get public exposure.

Data masking

Sensitive columns (email, phone, SSN, financial data) are detected and masked across the grid, exports, and clipboard with RBAC enforcement. Masking is display-level — combine it with database-side grants for hard guarantees.

Self-hosting & isolation

Self-hosting is a first-class citizen: run it on your infrastructure, inside your network, behind your VPN. Nothing needs to leave your perimeter — including AI, which can run fully local via Ollama or LM Studio.

Supply chain

MIT-licensed source you can audit line by line. Every release ships SHA256 checksums; CI runs CodeQL and SonarCloud. Images are published to GHCR with immutable version tags.

Found a vulnerability?

Please report it privately — not in a public issue. The disclosure process, supported versions, and response commitments live in the repository's security policy.

Read SECURITY.md

-- honest by default: if a control is display-level, this page says so.