
kviklet v0.8.0
Flux de révision/approbation similaire à une Pull Request pour les requêtes de base de données. Pour un accès Engineering conforme mais fluide à la production.
Kviklet
Kviklet.dev | Notes de version | Discord
Un accès sécurisé aux environnements de production sans nuire à la productivité des développeurs.

Kviklet (prononcé Quick-let) applique le principe des quatre yeux à l'accès aux bases de données de production, avec un workflow de revue et d'approbation semblable à celui d'une pull request pour des instructions SQL individuelles ou des sessions de base de données à durée limitée. Les ingénieurs peuvent examiner et approuver les demandes les uns des autres sans faire passer chaque requête par un DBA ou une équipe d'exploitation.
Kviklet est auto-hébergé et s'exécute en tant que conteneur Docker avec une base de données PostgreSQL pour l'état de l'application. Son interface web vous permet de soumettre, examiner et exécuter des demandes. Une licence entreprise optionnelle débloque l'authentification SAML, les exigences de revue basées sur les rôles, la synchronisation des rôles et les clés API. Demandez une licence entreprise sur kviklet.dev.
Les bases de données prises en charge sont Postgres, MySQL, MariaDB, MS SQL Server et MongoDB.
Modèle d'accès
Nous recommandons de connecter Kviklet à votre fournisseur d'identité existant. Kviklet prend en charge le SSO via OIDC (Google, Keycloak, etc.) ou SAML (entreprise uniquement), ainsi que l'authentification LDAP (Active Directory, etc.).
Les utilisateurs créent ensuite des demandes pour des connexions qui correspondent à un utilisateur de base de données spécifique. Ces demandes sont soit :
- Requête unique : une instruction SQL spécifique soumise pour revue.
- Accès temporaire : une session à durée limitée dans laquelle vous pouvez exécuter plusieurs instructions.
Selon la configuration, les demandes sont examinées et approuvées par d'autres utilisateurs avant que Kviklet n'autorise l'exécution.
Kviklet se connecte à la base de données au nom de l'utilisateur. Le mot de passe de la base de données de la connexion n'est jamais montré à l'utilisateur.
Un administrateur peut configurer quel rôle a accès à quelle connexion et quels contrôles de revue sont requis pour l'exécution. L'accès au niveau de la base de données est géré via les mécanismes RBAC de la base de données sous-jacente. Par exemple, il est possible de créer un rôle en lecture seule pour une connexion en lecture seule et d'assigner moins d'exigences de revue pour celle-ci que pour une connexion en écriture.
Kviklet enregistre les instructions exécutées et les associe à l'utilisateur et à la demande d'accès. Pour une couverture complète de l'accès manuel à la base de données, restreignez les connexions directes et faites passer tout accès manuel par Kviklet. Les ingénieurs n'ont pas besoin de recevoir ou de partager les identifiants de la base de données sous-jacente.
Les fonctionnalités entreprise supplémentaires incluent :
- SAML : Prise en charge de l'authentification SAML.
- Proxy (Postgres, MariaDB, MySQL) : Utilisez votre client de base de données préféré via une session d'accès temporaire approuvée avec un mot de passe temporaire. Les instructions exécutées sont enregistrées dans le journal d'audit de Kviklet.
- Contrôles de revue basés sur les rôles : Exiger des approbations de rôles spécifiques avant l'exécution.
- Synchronisation des rôles : Synchroniser automatiquement les rôles des utilisateurs à partir des groupes de votre fournisseur d'identité.
- Clés API : Accès programmatique à l'API Kviklet.
Plus de captures d'écran
Demandes
Toutes les demandes de données sont regroupées en un seul endroit. Comme des PR ouvertes pour vos bases de données de production :

Sessions en direct
Une demande d'accès temporaire approuvée ouvre une session SQL en direct directement dans le navigateur :

Journal d'audit
Chaque instruction exécutée est enregistrée — qu'elle ait été exécutée en tant que requête unique examinée, dans une session en direct, ou via le proxy de base de données :

Fonctionnalités par type de base de données/connexion
La plupart des fonctionnalités sont disponibles pour toutes les bases de données (SSO, LDAP, RBAC, flux de revue/approbation, journal d'audit, etc.). Mais certaines fonctionnalités sont restreintes, soit parce qu'elles n'ont simplement pas encore été développées, soit parce qu'elles n'ont pas de sens pour cet usage spécifique. Le tableau suivant montre quelles fonctionnalités sont disponibles pour quel type de base de données :
| Base de données | Revue d'instruction | Accès temporaire | Proxy(Beta) | Explain Plan |
|---|---|---|---|---|
| Postgres | ✓ | ✓ | ✓ | ✓ |
| MySQL | ✓ | ✓ | ✓ | ✓ |
| MariaDB | ✓ | ✓ | ✓ | ✓ |
| SQL Server | ✓ | ✓ | ✗ | ✓ |
| MongoDB | ✓ | ✓ | ✗ | ✗ |
| Kubernetes | ✓ | ✗ | ✗ | ✗ |
Installation
Kviklet est livré sous forme de simple conteneur Docker.
Vous pouvez trouver les versions disponibles dans les Releases. Nous recommandons de mettre à jour régulièrement la version que vous utilisez, car nous continuons à développer de nouvelles fonctionnalités.
La dernière actuellement est ghcr.io/kviklet/kviklet:0.8.0, vous pouvez aussi utiliser :main mais il peut arriver de temps en temps que nous mergions accidentellement quelque chose de bogué. Bien que nous essayions d'éviter cela.
Démarrage rapide
Si vous voulez simplement essayer comment cela fonctionne :
-
Voici un docker-compose.yaml minimal :
Cliquez pour développer le contenu du 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