العودة إلى التحديثات
New releaseAug 19, 2026

kviklet v0.8.0

تدفق مراجعة/موافقة شبيه بـ Pull Request لاستعلامات قاعدة البيانات. للوصول السلس والمتوافق للمهندسين إلى الإنتاج.

مشاركة

Kviklet

Kviklet.dev | ملاحظات الإصدار | Discord

وصول آمن إلى بيئات الإنتاج دون التأثير على إنتاجية المطورين.

Kviklet Kviklet

يطبّق Kviklet (يُنطق Quick-let) مبدأ العيون الأربع على الوصول إلى قواعد بيانات الإنتاج، مع سير عمل للمراجعة والموافقة شبيه بطلبات السحب (pull request) للعبارات SQL الفردية أو لجلسات قواعد بيانات محدودة زمنيًا. يمكن للمهندسين مراجعة طلبات بعضهم البعض والموافقة عليها دون تمرير كل استعلام عبر مسؤول قاعدة بيانات (DBA) أو فريق العمليات.

Kviklet مستضاف ذاتيًا ويعمل كحاوية Docker مع قاعدة بيانات PostgreSQL لحالة التطبيق. تتيح واجهته الإلكترونية إرسال الطلبات ومراجعتها وتنفيذها. يفتح ترخيص المؤسسات الاختياري ميزات المصادقة SAML، ومتطلبات المراجعة القائمة على الأدوار، ومزامنة الأدوار، ومفاتيح API، ووكيل قاعدة البيانات (database proxy)، وخادم MCP لوكلاء الذكاء الاصطناعي. اطلب ترخيص المؤسسات من kviklet.dev.

قواعد البيانات المدعومة هي Postgres وMySQL وMariaDB وMS SQL Server وMongoDB.

نموذج الوصول

نوصي بربط Kviklet بمزوّد الهوية الحالي لديك. يدعم Kviklet تسجيل الدخول الموحّد (SSO) عبر OIDC (Google وKeycloak وغيرها) أو SAML (للمؤسسات فقط)، بالإضافة إلى مصادقة LDAP (Active Directory وغيرها). ثم ينشئ المستخدمون طلبات (requests) لـاتصالات (connections) تُربط بمستخدم قاعدة بيانات محدد. تكون هذه الطلبات إما:

  • استعلام واحد (Single Query): عبارة SQL محددة تُقدَّم للمراجعة.
  • وصول مؤقت (Temporary Access): جلسة محدودة زمنيًا يمكنك خلالها تنفيذ عدة عبارات.

وفقًا للإعدادات، يراجع المستخدمون الآخرون الطلبات ويوافقون عليها قبل أن يسمح Kviklet بالتنفيذ.

يتصل Kviklet بقاعدة البيانات نيابةً عن المستخدم. لا تُعرض كلمة مرور قاعدة بيانات الاتصال للمستخدم أبدًا.

يمكن للمسؤول تهيئة الدور الذي يملك الوصول إلى أي اتصال وبوابات المراجعة المطلوبة للتنفيذ. تُدار صلاحيات الوصول على مستوى قاعدة البيانات عبر آليات RBAC الخاصة بقاعدة البيانات الأساسية. على سبيل المثال، يمكن إنشاء دور للقراءة فقط لاتصال للقراءة فقط وتعيين متطلبات مراجعة أقل له من اتصال للكتابة.

يسجّل Kviklet العبارات المنفَّذة ويربطها بالمستخدم وطلب الوصول. لتحقيق تغطية كاملة للوصول اليدوي إلى قاعدة البيانات، قيّد الاتصالات المباشرة ووجّه أي وصول يدوي عبر Kviklet. لا يحتاج المهندسون إلى استلام بيانات اعتماد قاعدة البيانات الأساسية أو مشاركتها.

تشمل ميزات المؤسسات الإضافية:

  • SAML: دعم المصادقة عبر SAML.
  • الوكيل (Proxy) (Postgres وMariaDB وMySQL): استخدم عميل قاعدة البيانات المفضّل لديك عبر جلسة وصول مؤقت معتمدة بكلمة مرور مؤقتة. تُسجَّل العبارات المنفَّذة في سجل التدقيق الخاص بـ Kviklet.
  • بوابات المراجعة القائمة على الأدوار: اشتراط موافقات من أدوار محددة قبل التنفيذ.
  • مزامنة الأدوار: مزامنة أدوار المستخدمين تلقائيًا من مجموعات مزوّد الهوية لديك.
  • مفاتيح API: وصول برمجي إلى واجهة Kviklet API.
  • خادم MCP: اربط وكلاء الذكاء الاصطناعي مثل Claude Code أو Codex بـ Kviklet. يعملون بصلاحيات المستخدم نفسه ويمرّون عبر المراجعات نفسها.
المزيد من لقطات الشاشة

الطلبات

توجد جميع طلبات البيانات في مكان واحد. مثل طلبات السحب المفتوحة لقواعد بيانات الإنتاج لديك:

Requests Requests

الجلسات المباشرة

يفتح طلب وصول مؤقت معتمد جلسة SQL مباشرة داخل المتصفح:

Live Session Live Session

سجل التدقيق

تُسجَّل كل عبارة منفَّذة — سواء نُفِّذت كاستعلام واحد خاضع للمراجعة، أو في جلسة مباشرة، أو عبر وكيل قاعدة البيانات:

audit log audit log

الميزات حسب نوع قاعدة البيانات/الاتصال

معظم الميزات متاحة لجميع قواعد البيانات (SSO، LDAP، RBAC، تدفق المراجعة/الموافقة، سجل التدقيق، إلخ). لكن بعض الميزات مقيّدة، إما لأنه لم يتم بناؤها بعد ببساطة أو لأنها لا معنى لها لذلك الغرض المحدد. يوضح الجدول التالي الميزات المتاحة لكل نوع من أنواع قواعد البيانات:

قاعدة البياناتمراجعة الاستعلاماتالوصول المؤقتProxy(Beta)Explain Plan
Postgres✓✓✓✓
MySQL✓✓✓✓
MariaDB✓✓✓✓
SQL Server✓✓✗✓
MongoDB✓✓✗✗
Kubernetes✓✗✗✗

الإعداد

يُشحن Kviklet كحاوية docker بسيطة. يمكنك العثور على الإصدارات المتاحة ضمن Releases. نوصي بتحديث الإصدار الذي تستخدمه بانتظام مع استمرارنا في بناء ميزات جديدة.
أحدث إصدار حاليًا هو ghcr.io/kviklet/kviklet:0.10.0، يمكنك أيضًا استخدام :main لكن قد يحدث من حين لآخر أن ندمج شيئًا به أخطاء عن طريق الخطأ. رغم أننا نحاول تجنب ذلك.

البدء السريع

إذا كنت تريد فقط تجربة كيفية عمله:

  1. إليك ملف 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.sql
    
      kviklet-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
          - [email protected]
          - INITIAL_USER_PASSWORD=admin
        depends_on:
          - kviklet-postgres
    
  2. شغّل docker-compose.yml عبر docker-compose up -d. سيعمل Kviklet على المنفذ 80، انتقل إلى localhost وجرّبه. تسجيل دخول المسؤول هو [email protected] وكلمة المرور admin.

  3. يحتوي docker-compose على قاعدة بيانات postgres إضافية يمكنك إعداد اتصال بها في Kviklet. لجعل قاعدة البيانات هذه تحتوي على بعض البيانات، أزل التعليق عن هذا السطر:

          - ./sample_data.sql:/docker-entrypoint-initdb.d/init.sql
    

الفئات