
kviklet v0.8.0
डेटाबेस क्वेरीज़ के लिए पुल रिक्वेस्ट-जैसी समीक्षा/अनुमोदन प्रवाह। अनुपालनपूर्ण लेकिन सहज इंजीनियरिंग पहुँच के लिए उत्पादन में।
Kviklet
Kviklet.dev | रिलीज़ नोट्स | Discord
डेवलपर उत्पादकता को प्रभावित किए बिना प्रोडक्शन एनवायरनमेंट तक सुरक्षित पहुँच।

Kviklet (उच्चारण Quick-let) प्रोडक्शन डेटाबेस एक्सेस पर Four-Eyes Principle लागू करता है, जिसमें व्यक्तिगत SQL स्टेटमेंट या समय-सीमित डेटाबेस सेशन के लिए pull request जैसी समीक्षा और अनुमोदन वर्कफ़्लो होती है। इंजीनियर एक-दूसरे के अनुरोधों की समीक्षा और अनुमोदन कर सकते हैं, बिना हर क्वेरी को किसी DBA या ऑपरेशंस टीम के माध्यम से भेजे।
Kviklet self-hosted है और एप्लिकेशन स्टेट के लिए PostgreSQL डेटाबेस के साथ एक Docker कंटेनर के रूप में चलता है। इसका वेब इंटरफ़ेस आपको अनुरोध सबमिट, समीक्षा और निष्पादित करने देता है। एक वैकल्पिक एंटरप्राइज़ लाइसेंस SAML प्रमाणीकरण, भूमिका-आधारित समीक्षा आवश्यकताएँ, भूमिका सिंक और API कुंजियाँ अनलॉक करता है। एंटरप्राइज़ लाइसेंस के लिए kviklet.dev पर अनुरोध करें।
समर्थित डेटाबेस हैं Postgres, MySQL, MariaDB, MS SQL Server और MongoDB।
एक्सेस मॉडल
हम Kviklet को आपके मौजूदा आइडेंटिटी प्रोवाइडर से कनेक्ट करने की सलाह देते हैं। Kviklet OIDC (Google, Keycloak, आदि) या SAML (केवल एंटरप्राइज़) के माध्यम से SSO, साथ ही LDAP प्रमाणीकरण (Active Directory, आदि) का समर्थन करता है।
इसके बाद उपयोगकर्ता connections के लिए requests बनाते हैं जो किसी विशिष्ट डेटाबेस उपयोगकर्ता से मैप होते हैं। ये अनुरोध या तो होते हैं:
- Single Query: समीक्षा के लिए सबमिट किया गया एक विशिष्ट SQL स्टेटमेंट।
- Temporary Access: एक समय-सीमित सेशन जिसमें आप कई स्टेटमेंट चला सकते हैं।
कॉन्फ़िगरेशन के आधार पर, Kviklet के निष्पादन की अनुमति देने से पहले अनुरोधों की समीक्षा और अनुमोदन अन्य उपयोगकर्ताओं द्वारा किया जाता है।
Kviklet उपयोगकर्ता की ओर से डेटाबेस से कनेक्ट होता है। कनेक्शन का डेटाबेस पासवर्ड उपयोगकर्ता को कभी नहीं दिखाया जाता।
एक एडमिन कॉन्फ़िगर कर सकता है कि किस भूमिका की किस कनेक्शन तक पहुँच है और निष्पादन के लिए कौन से समीक्षा गेट आवश्यक हैं। डेटाबेस-स्तरीय पहुँच अंतर्निहित डेटाबेस के RBAC तंत्रों के माध्यम से प्रबंधित की जाती है। उदाहरण के लिए, read-only कनेक्शन के लिए read-only भूमिका बनाना और उसके लिए write कनेक्शन की तुलना में कम समीक्षा आवश्यकताएँ निर्दिष्ट करना संभव है।
Kviklet निष्पादित स्टेटमेंट रिकॉर्ड करता है और उन्हें उपयोगकर्ता और एक्सेस अनुरोध से संबद्ध करता है। मैन्युअल डेटाबेस एक्सेस की पूर्ण कवरेज के लिए, सीधे कनेक्शन प्रतिबंधित करें और किसी भी मैन्युअल एक्सेस को Kviklet के माध्यम से रूट करें। इंजीनियरों को अंतर्निहित डेटाबेस क्रेडेंशियल प्राप्त या साझा करने की आवश्यकता नहीं है।
अतिरिक्त एंटरप्राइज़ सुविधाओं में शामिल हैं:
- SAML: SAML प्रमाणीकरण के लिए समर्थन।
- Proxy (Postgres, MariaDB, MySQL): अस्थायी पासवर्ड के साथ अनुमोदित temporary-access सेशन के माध्यम से अपने पसंदीदा डेटाबेस क्लाइंट का उपयोग करें। निष्पादित स्टेटमेंट Kviklet के ऑडिट लॉग में रिकॉर्ड किए जाते हैं।
- Role-Based Review Gates: निष्पादन से पहले विशिष्ट भूमिकाओं से अनुमोदन आवश्यक करें।
- Role Sync: आपके आइडेंटिटी प्रोवाइडर समूहों से उपयोगकर्ता भूमिकाओं को स्वचालित रूप से सिंक करें।
- API Keys: Kviklet API तक प्रोग्रामेटिक पहुँच।
अधिक स्क्रीनशॉट
Requests
सभी डेटा अनुरोध एक ही स्थान पर रहते हैं। आपके प्रोडक्शन डेटाबेस के लिए खुले PR की तरह:

Live Sessions
एक अनुमोदित temporary access अनुरोध सीधे ब्राउज़र में एक लाइव SQL सेशन खोलता है:

Audit log
प्रत्येक निष्पादित स्टेटमेंट रिकॉर्ड किया जाता है — चाहे वह समीक्षित single query के रूप में चला हो, लाइव सेशन में, या डेटाबेस proxy के माध्यम से:

डेटाबेस/कनेक्शन प्रकार के अनुसार सुविधा
अधिकांश सुविधाएँ सभी डेटाबेस के लिए उपलब्ध हैं (SSO, LDAP, RBAC, Review/Approval Flow, audit log, आदि)। लेकिन कुछ सुविधाएँ प्रतिबंधित हैं, या तो इसलिए कि वे अभी तक बनाई नहीं गई हैं या क्योंकि वे उस विशिष्ट उद्देश्य के लिए उपयुक्त नहीं हैं। निम्न तालिका दिखाती है कि कौन सी सुविधाएँ किस डेटाबेस प्रकार के लिए उपलब्ध हैं:
| Database | Statement Review | Temporary Access | Proxy(Beta) | Explain Plan |
|---|---|---|---|---|
| Postgres | ✓ | ✓ | ✓ | ✓ |
| MySQL | ✓ | ✓ | ✓ | ✓ |
| MariaDB | ✓ | ✓ | ✓ | ✓ |
| SQL Server | ✓ | ✓ | ✗ | ✓ |
| MongoDB | ✓ | ✓ | ✗ | ✗ |
| Kubernetes | ✓ | ✗ | ✗ | ✗ |
सेटअप
Kviklet एक साधारण docker कंटेनर के रूप में उपलब्ध है।
आप उपलब्ध संस्करण Releases के अंतर्गत पा सकते हैं। हम आपके द्वारा उपयोग किए जा रहे संस्करण को नियमित रूप से अपडेट करने की सलाह देते हैं क्योंकि हम नई सुविधाएँ बनाना जारी रखते हैं।
वर्तमान में नवीनतम ghcr.io/kviklet/kviklet:0.8.0 है, आप :main भी उपयोग कर सकते हैं लेकिन कभी-कभी ऐसा हो सकता है कि हम गलती से कुछ बगी मर्ज कर दें। हालाँकि हम इससे बचने की कोशिश करते हैं।
त्वरित शुरुआत
यदि आप बस यह आज़माना चाहते हैं कि यह कैसे काम करता है:
-
यहाँ एक न्यूनतम docker-compose.yaml है:
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
-
docker-compose.ymlकोdocker-compose up -dके माध्यम से चलाएँ। Kviklet पोर्ट 80 पर शुरू हो जाएगा,localhostपर जाएँ और इसे आज़माएँ। एडमिन लॉगिन [email protected] है और पासवर्डadminहै। -
docker-compose में एक अतिरिक्त postgres डेटाबेस शामिल है जिसके लिए आप Kviklet में कनेक्शन सेटअप कर सकते हैं। इस डेटाबेस में कुछ डेटा डालने के लिए, इस पंक्ति को अनकमेंट करें: ``` - ./sample_data.sql:/docker-entrypoint-initdb.d/init.sql
और एक sample_data.sql फ़ाइल बनाएँ: