QueryProxy
Devam ediyor Amiral GemileriQueryProxy, geliştiricilerin üretim veritabanına kimlik bilgisi almadan erişebilmesi için geliştirdiğim self-hosted bir sorgu onay portalıdır. Yazılan SQL çözümlenerek denetlenir, bir DBA onayından geçtikten sonra kuyrukta çalışır, sonuçlar diske yazılırken maskelenir ve her adım değiştirilemez bir denetim kaydına düşer.
- Rolüm
- Founder & Developer
- Süre
- Eylül 2026 — Devam ediyor
Teknolojiler
Yetenekler
QueryProxy, bir geliştiricinin üretim veritabanındaki veriye bakabilmesi için üretim parolasını almak zorunda kalmasını ortadan kaldıran, açık kaynak ve self-hosted bir sorgu onay portalıdır. Kullanım vaadi şudur: geliştirici korumalı bir editörde SQL’ini yazar, portal ifadeyi çözümleyip tehlikeli olanı daha gönderilmeden reddeder, kalan istek bir DBA onayına düşer ve onaylandığında istek döngüsünün dışında, kuyrukta çalışır. Sonuç geliştiriciye maskelenmiş olarak döner. Kimlik bilgisi hiçbir aşamada kullanıcıya gösterilmez; bağlantı künyesi uygulamada şifreli durur ve sorguyu çalıştıran portalın kendisidir. PostgreSQL, MySQL, MariaDB, SQL Server ve SQLite destekleniyor.
Mimarinin dört taşıyıcı kararı var. Denetim desen eşleştirmesiyle değil çözümlemeyle yapılıyor: gelen SQL ayrıştırılıyor, WHERE’i olmayan UPDATE/DELETE reddediliyor, limitsiz SELECT varsayılan bir satır sınırıyla dönüyor, veritabanı ve kullanıcı yönetimine dokunan ifadeler koşulsuz engelleniyor; yorumlar ve dize sabitleri normalize edildiği için araya yorum sıkıştırarak kapı aşılamıyor, ve çalıştırıcı tarafında SQL ne derse desin geçerli olan mutlak bir satır tavanı duruyor. Onay tek servisten geçiyor: web arayüzü, Slack ve Microsoft Teams aynı karar noktasına iniyor, bir DBA’nın kendi isteğini onaylaması her kanalda kapalı (sistem admini aşabiliyor, aşma denetime yazılıyor) ve eşzamanlı iki onay koşullu güncellemeyle tekilleştiriliyor; sohbet geri çağrıları HMAC-SHA256 ile imzalanıyor, dar bir zaman penceresiyle tekrar saldırısına kapatılıyor ve eylemi yapan kişi isteğin beyanından değil yöneticinin kurduğu eşlemeden çözülüyor. Maskeleme yazma anında uygulanıyor: sonuç akışı satır satır okunup her satır dosyaya yazılmadan önce maskeleniyor, böylece sonuç deposuna maskesiz veri hiç girmiyor; sütun deseni ve içerik düzenli ifadesi olmak üzere iki kural tipi, tam, kısmi ve özet (hash) olmak üzere üç strateji var ve bir düzenli ifade çalışma anında değerlendirilemezse değer açıkta bırakılmıyor, maskeleniyor. Denetim izi değiştirilemez: kayıt tablosunda güncelleme sütunu yok, güncelleme ve silme model düzeyinde istisna atıyor ve kayıt satırları hiçbir yabancı anahtar kısıtı taşımıyor — bir bağlantı silindiğinde onun geçmişi silinmiyor.
Ürün, bir ekibin docker run ile ayağa kaldırabileceği tek konteyner olarak paketlendi: uygulama, kuyruk işçisi ve zamanlayıcı aynı imajda çalışıyor ve varsayılan kurulum hiçbir dış servise ihtiyaç duymuyor. Takım rolleri DBA, Developer ve Auditor; üstlerinde takımdan bağımsız bir sistem admini duruyor. TOTP ile iki faktörlü doğrulama, giden webhook’lar için host beyaz listesi, güvenlik başlıkları ve her yüzeyde hız sınırı var. Kalite tarafında Pest ile yazılmış bir test paketi, üç PHP sürümünde koşan bir CI hattı, composer audit ve npm audit ile bağımlılık taraması ve yayın öncesi imajı düşüren bir konteyner zafiyet taraması bulunuyor. Lisans AGPL-3.0-only: QueryProxy’yi değiştirip ağ üzerinden servis eden herkes değişikliklerini aynı lisansla yayımlamak zorunda.