
kviklet v0.8.0
PR-ähnlicher Überprüfungs-/Genehmigungsprozess für Datenbankabfragen. Für konformen, aber reibungslosen Engineering-Zugriff auf die Produktion.
Kviklet
Kviklet.dev | Release Notes | Discord
Sicherer Zugriff auf Produktionsumgebungen, ohne die Produktivität der Entwickler zu beeinträchtigen.

Kviklet (ausgesprochen Quick-let) wendet das Vier-Augen-Prinzip auf den Zugriff auf Produktionsdatenbanken an, mit einem pull-request-ähnlichen Review- und Genehmigungsworkflow für einzelne SQL-Anweisungen oder zeitlich begrenzte Datenbanksitzungen. Entwickler können die Anfragen ihrer Kollegen gegenseitig überprüfen und genehmigen, ohne jede Abfrage über einen DBA oder ein Betriebsteam leiten zu müssen.
Kviklet ist selbst gehostet und läuft als Docker-Container mit einer PostgreSQL-Datenbank für den Anwendungszustand. Die Web-Oberfläche ermöglicht das Einreichen, Überprüfen und Ausführen von Anfragen. Eine optionale Enterprise-Lizenz schaltet SAML-Authentifizierung, rollenbasierte Review-Anforderungen, Rollensynchronisierung und API-Schlüssel frei. Fordern Sie eine Enterprise-Lizenz unter kviklet.dev an.
Unterstützte Datenbanken sind Postgres, MySQL, MariaDB, MS SQL Server und MongoDB.
Zugriffsmodell
Wir empfehlen, Kviklet mit Ihrem bestehenden Identity Provider zu verbinden. Kviklet unterstützt SSO über OIDC (Google, Keycloak usw.) oder SAML (nur Enterprise) sowie LDAP-Authentifizierung (Active Directory usw.).
Benutzer erstellen dann Anfragen für Verbindungen, die einem bestimmten Datenbankbenutzer zugeordnet sind. Diese Anfragen sind entweder:
- Einzelabfrage: eine bestimmte SQL-Anweisung, die zur Überprüfung eingereicht wird.
- Temporärer Zugriff: eine zeitlich begrenzte Sitzung, in der Sie mehrere Anweisungen ausführen können.
Je nach Konfiguration werden die Anfragen von anderen Benutzern überprüft und genehmigt, bevor Kviklet die Ausführung zulässt.
Kviklet verbindet sich im Namen des Benutzers mit der Datenbank. Das Datenbankpasswort der Verbindung wird dem Benutzer niemals angezeigt.
Ein Administrator kann konfigurieren, welche Rolle Zugriff auf welche Verbindung hat und welche Review-Gates für die Ausführung erforderlich sind. Der Zugriff auf Datenbankebene wird über die RBAC-Mechanismen der zugrunde liegenden Datenbank verwaltet. So ist es beispielsweise möglich, eine schreibgeschützte Rolle für eine schreibgeschützte Verbindung zu erstellen und dieser weniger Review-Anforderungen zuzuweisen als einer Schreibverbindung.
Kviklet zeichnet ausgeführte Anweisungen auf und ordnet sie dem Benutzer und der Zugriffsanfrage zu. Um eine vollständige Abdeckung des manuellen Datenbankzugriffs zu erreichen, beschränken Sie direkte Verbindungen und leiten Sie jeden manuellen Zugriff über Kviklet. Entwickler müssen die zugrunde liegenden Datenbank-Anmeldedaten weder erhalten noch weitergeben.
Zusätzliche Enterprise-Funktionen sind:
- SAML: Unterstützung für SAML-Authentifizierung.
- Proxy (Postgres, MariaDB, MySQL): Verwenden Sie Ihren bevorzugten Datenbankclient über eine genehmigte Sitzung mit temporärem Zugriff und einem temporären Passwort. Ausgeführte Anweisungen werden im Audit-Log von Kviklet aufgezeichnet.
- Rollenbasierte Review-Gates: Erfordern Genehmigungen von bestimmten Rollen vor der Ausführung.
- Rollensynchronisierung: Benutzerrollen automatisch aus den Gruppen Ihres Identity Providers synchronisieren.
- API-Schlüssel: Programmatischer Zugriff auf die Kviklet-API.
Weitere Screenshots
Anfragen
Alle Datenanfragen befinden sich an einem Ort. Wie offene PRs für Ihre Produktionsdatenbanken:

Live-Sitzungen
Eine genehmigte Anfrage für temporären Zugriff öffnet eine Live-SQL-Sitzung direkt im Browser:

Audit-Log
Jede ausgeführte Anweisung wird aufgezeichnet — ob sie als überprüfte Einzelabfrage, in einer Live-Sitzung oder über den Datenbank-Proxy ausgeführt wurde:

Funktionen nach Datenbank-/Verbindungstyp
Die meisten Funktionen sind für alle Datenbanken verfügbar (SSO, LDAP, RBAC, Review-/Genehmigungsworkflow, Audit-Log usw.). Einige Funktionen sind jedoch eingeschränkt, entweder weil sie einfach noch nicht entwickelt wurden oder weil sie für diesen spezifischen Zweck keinen Sinn ergeben. Die folgende Tabelle zeigt, welche Funktionen für welchen Datenbanktyp verfügbar sind:
| Datenbank | Anweisungs-Review | Temporärer Zugriff | Proxy(Beta) | Explain Plan |
|---|---|---|---|---|
| Postgres | ✓ | ✓ | ✓ | ✓ |
| MySQL | ✓ | ✓ | ✓ | ✓ |
| MariaDB | ✓ | ✓ | ✓ | ✓ |
| SQL Server | ✓ | ✓ | ✗ | ✓ |
| MongoDB | ✓ | ✓ | ✗ | ✗ |
| Kubernetes | ✓ | ✗ | ✗ | ✗ |
Einrichtung
Kviklet wird als einfacher Docker-Container ausgeliefert.
Die verfügbaren Versionen finden Sie unter Releases. Wir empfehlen, die von Ihnen verwendete Version regelmäßig zu aktualisieren, da wir kontinuierlich neue Funktionen entwickeln.
Die aktuellste ist derzeit ghcr.io/kviklet/kviklet:0.8.0, Sie können auch :main verwenden, aber es kann vorkommen, dass wir versehentlich etwas Fehlerhaftes mergen. Wir versuchen das jedoch zu vermeiden.
Schnellstart
Wenn Sie einfach ausprobieren möchten, wie es funktioniert:
-
Hier ist eine minimale docker-compose.yaml:
Klicken Sie hier, um den Compose-Inhalt zu erweitern
``` services: postgres: image: postgres:16 restart: always environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres POSTGRES_DB: postgres ports: - "5432:5432" volumes: - ./postgres-data:/var/lib/postgresql/data # - ./sample_data.sql:/docker-entrypoint-initdb.d/init.sqlkviklet-postgres: image: postgres:16 restart: always environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres POSTGRES_DB: kviklet ports: - "5433:5432" volumes: - ./kviklet-postgres-data:/var/lib/postgresql/data
kviklet: image: ghcr.io/kviklet/kviklet:main ports: - "80:8080" environment: - SPRING_DATASOURCE_URL=jdbc:postgresql://kviklet-postgres:5432/kviklet - SPRING_DATASOURCE_USERNAME=postgres - SPRING_DATASOURCE_PASSWORD=postgres - INITIAL_USER_EMAIL=[email protected] - INITIAL_USER_PASSWORD=admin depends_on: - kviklet-postgres