
kviklet v0.8.0
Flusso di revisione/approvazione simile a una Pull Request per le query del database. Per un accesso conforme ma fluido dell'ingegneria alla produzione.
Kviklet
Kviklet.dev | Note di rilascio | Discord
Accesso sicuro agli ambienti di produzione senza compromettere la produttività degli sviluppatori.

Kviklet (pronunciato Quick-let) applica il Principio dei Quattro Occhi all'accesso ai database di produzione, con un flusso di revisione e approvazione simile a una pull request per singole istruzioni SQL o sessioni di database a tempo limitato. Gli ingegneri possono revisionare e approvare reciprocamente le richieste senza instradare ogni query attraverso un DBA o un team operativo.
Kviklet è self-hosted e viene eseguito come container Docker con un database PostgreSQL per lo stato dell'applicazione. La sua interfaccia web consente di inviare, revisionare ed eseguire richieste. Una licenza enterprise opzionale sblocca l'autenticazione SAML, i requisiti di revisione basati sui ruoli, la sincronizzazione dei ruoli e le chiavi API. Richiedi una licenza enterprise su kviklet.dev.
I database supportati sono Postgres, MySQL, MariaDB, MS SQL Server e MongoDB.
Modello di accesso
Consigliamo di collegare Kviklet al tuo identity provider esistente. Kviklet supporta l'SSO tramite OIDC (Google, Keycloak, ecc.) o SAML (solo enterprise), nonché l'autenticazione LDAP (Active Directory, ecc.).
Gli utenti creano quindi richieste per connessioni che corrispondono a uno specifico utente del database. Queste richieste sono:
- Query singola: una specifica istruzione SQL inviata per la revisione.
- Accesso temporaneo: una sessione a tempo limitato in cui è possibile eseguire più istruzioni.
A seconda della configurazione, le richieste vengono revisionate e approvate da altri utenti prima che Kviklet ne consenta l'esecuzione.
Kviklet si connette al database per conto dell'utente. La password del database della connessione non viene mai mostrata all'utente.
Un amministratore può configurare quale ruolo ha accesso a quale connessione e quali gate di revisione sono richiesti per l'esecuzione. L'accesso a livello di database è gestito tramite i meccanismi RBAC del database sottostante. Ad esempio, è possibile creare un ruolo di sola lettura per una connessione di sola lettura e assegnare a questa meno requisiti di revisione rispetto a una connessione di scrittura.
Kviklet registra le istruzioni eseguite e le associa all'utente e alla richiesta di accesso. Per una copertura completa dell'accesso manuale al database, limita le connessioni dirette e instrada qualsiasi accesso manuale attraverso Kviklet. Gli ingegneri non hanno bisogno di ricevere o condividere le credenziali del database sottostante.
Ulteriori funzionalità Enterprise includono:
- SAML: Supporto per l'autenticazione SAML.
- Proxy (Postgres, MariaDB, MySQL): Usa il tuo client di database preferito attraverso una sessione di accesso temporaneo approvata con una password temporanea. Le istruzioni eseguite vengono registrate nel registro di audit di Kviklet.
- Gate di revisione basati sui ruoli: Richiedi approvazioni da ruoli specifici prima dell'esecuzione.
- Sincronizzazione dei ruoli: Sincronizza automaticamente i ruoli utente dai gruppi del tuo identity provider.
- Chiavi API: Accesso programmatico all'API di Kviklet.
Altri screenshot
Richieste
Tutte le richieste di dati risiedono in un unico posto. Come PR aperte per i tuoi database di produzione:

Sessioni live
Una richiesta di accesso temporaneo approvata apre una sessione SQL live direttamente nel browser:

Registro di audit
Ogni istruzione eseguita viene registrata — che sia stata eseguita come query singola revisionata, in una sessione live o attraverso il proxy del database:

Funzionalità per tipo di database/connessione
La maggior parte delle funzionalità è disponibile per tutti i database (SSO, LDAP, RBAC, flusso di revisione/approvazione, registro di audit, ecc.). Ma alcune funzionalità sono limitate, o perché semplicemente non sono ancora state sviluppate o perché non hanno senso per quello specifico scopo. La tabella seguente mostra quali funzionalità sono disponibili per quale tipo di database:
| Database | Revisione istruzioni | Accesso temporaneo | Proxy(Beta) | Explain Plan |
|---|---|---|---|---|
| Postgres | ✓ | ✓ | ✓ | ✓ |
| MySQL | ✓ | ✓ | ✓ | ✓ |
| MariaDB | ✓ | ✓ | ✓ | ✓ |
| SQL Server | ✓ | ✓ | ✗ | ✓ |
| MongoDB | ✓ | ✓ | ✗ | ✗ |
| Kubernetes | ✓ | ✗ | ✗ | ✗ |
Configurazione
Kviklet viene distribuito come un semplice container docker.
Puoi trovare le versioni disponibili in Releases. Consigliamo di aggiornare regolarmente la versione che stai utilizzando poiché continuiamo a sviluppare nuove funzionalità.
L'ultima attualmente è ghcr.io/kviklet/kviklet:0.8.0, puoi anche usare :main ma potrebbe capitare ogni tanto che uniamo accidentalmente qualcosa di buggato. Anche se cerchiamo di evitarlo.
Avvio rapido
Se vuoi solo provare come funziona:
-
Ecco un docker-compose.yaml minimale:
Clicca per espandere il contenuto del compose
``` 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
- Esegui il file
docker-compose.ymltramitedocker-compose up -d. Kviklet si avvierà sulla porta 80, vai sulocalhoste prova. Il login admin è [email protected] conadmincome password.