العودة إلى التحديثات
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. اطلب ترخيص المؤسسات من kviklet.dev.

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

نموذج الوصول

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

  • استعلام واحد: تعليمة SQL محددة تُقدَّم للمراجعة.
  • وصول مؤقت: جلسة محدودة زمنياً يمكنك فيها تنفيذ عدة تعليمات.

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

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

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

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

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

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

الطلبات

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

Requests Requests

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

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

Live Session Live Session

سجل التدقيق

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

audit log audit log

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

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

DatabaseStatement ReviewTemporary AccessProxy(Beta)Explain Plan
Postgres✓✓✓✓
MySQL✓✓✓✓
MariaDB✓✓✓✓
SQL Server✓✓✗✓
MongoDB✓✓✗✗
Kubernetes✓✗✗✗

الإعداد

يُشحن Kviklet كحاوية docker بسيطة. يمكنك العثور على الإصدارات المتاحة ضمن الإصدارات. نوصي بتحديث الإصدار الذي تستخدمه بانتظام بينما نواصل بناء ميزات جديدة.
أحدث إصدار حالياً هو ghcr.io/kviklet/kviklet:0.8.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 - INITIAL_USER_EMAIL=[email protected] - INITIAL_USER_PASSWORD=admin depends_on: - kviklet-postgres

  1. شغّل docker-compose.yml عبر docker-compose up -d. سيعمل Kviklet على المنفذ 80، انتقل إلى localhost وجرّب. تسجيل دخول المسؤول هو [email protected] مع admin ككلمة مرور.

  2. يحتوي docker-compose على قاعدة بيانات postgres إضافية يمكنك إعداد اتصال بها في Kviklet. لجعل قاعدة البيانات هذه تحتوي على بعض البيانات، أزل التعليق عن هذا السطر: ``` - ./sample_data.sql:/docker-entrypoint-initdb.d/init.sql

وأنشئ ملف sample_data.sql:

انقر لتوسيع محتوى sample_data.sql ```sql CREATE TABLE Locations ( Name VARCHAR(100) NOT NULL, Address VARCHAR(255) NOT NULL, City VARCHAR(100) NOT NULL, Country VARCHAR(100) NOT NULL, PostalCode VARCHAR(20) NOT NULL );

alter table public.Locations owner to postgres;

INSERT INTO public.Locations (Name, Address, City, Country, PostalCode) VALUES ('Central Park', '59th to 110th St', 'New York', 'USA', '10022'), ('Eiffel Tower', 'Champ de Mars, 5 Avenue Anatole', 'Paris', 'France', '75007'), ('Colosseum', 'Piazza del Colosseo, 1', 'Rome', 'Italy', '00184'), ('Sydney Opera House', 'Bennelong Point', 'Sydney', 'Australia', '2000'), ('Great Wall of China', 'Huairou District', 'Beijing', 'China', '101405');

</details>

### إعداد قاعدة البيانات

الفئات