Application-Layer Read-Only Database Enforcement

ReadSentinel doesn't rely on database permissions alone. Every query is parsed and validated before it reaches your database.

Read-Only Query Enforcement

ReadSentinel uses ANTLR-based SQL parsers to analyze every query at the application layer. This is fundamentally different from relying on database user permissions — even if the DB user has write access, the application blocks any non-SELECT statement.

Built-in functions like NVL(), COUNT(), TO_CHAR() are whitelisted. User-defined functions that could have side effects (e.g., Oracle's PRAGMA AUTONOMOUS_TRANSACTION) are blocked.

Full Audit Trail

Every query execution is logged to a separate audit database with complete details:

The audit log is append-only, stored in a separate SQLite database, and accessible via the admin panel with date/user/status filters. Ideal for SOX compliance, GDPR audit requirements, and HIPAA access logging.

Role-Based Access Control (RBAC)

Control exactly which database connections each team member can access:

Different departments can install separate instances for isolation, or share one instance with role-based separation.

AES-256 Encrypted Credentials

Database connection strings are encrypted at rest using AES-256-GCM. They are never returned via the API — not even to admin users. Team members execute queries against connections without ever seeing passwords, hostnames, or ports.

The encryption key is stored as an environment variable on the server, separate from the database file.

Query Timeouts & Row Limits

Protect production databases from long-running or resource-consuming queries:

Self-Hosted Deployment

ReadSentinel runs entirely within your infrastructure:

How ReadSentinel Compares

Feature ReadSentinel DBeaver / DataGrip DB Permissions Only
Blocks writes at application layer
Blocks stored procedures / functions Partial
Full query audit trail Varies
Encrypted credential storage ✗ (stored locally) N/A
Role-based connection access
Team members never see passwords
Self-hosted / air-gapped