Üretim güvenliği
QueryProxy'yi erişilebilir bir ağda çalıştırmak için kontrol listesi; uygulama anahtarından HTTPS'e, salt okunur bağlantılardan varsayılan korumalara kadar.
Güncelleme:
QueryProxy, önündeki her veritabanının kimlik bilgilerini saklar; bu yüzden kurulumun kendisini de hassas bir sistem olarak ele alın. Bir ağa açmadan önce bu listeyi gözden geçirin.
Önerilen üretim düzeni
- Yalnızca okuyan ekipler ya da kullanıcılar için yalnızca
SELECTyetkisi olan bir veritabanı kullanıcısıyla ayrı bir bağlantı tanımlayın. Yazma erişimini başka bir bağlantıda tutun; çünkü onaylanan yazmalar, gönderildikleri bağlantı üzerinden çalışır. - Mümkünse bu salt okunur bağlantıyı bir replika’ya yöneltin.
- QueryProxy ile hedef veritabanı arasındaki ağ yolunu kısıtlayın.
- PostgreSQL’de aktarım güvenliğini kendiniz kontrol edin: bağlantı bugün
sslmode=preferkullanıyor, bir TLS ayarı v0.3.0 ile gelecek.
SQL guard son savunma hattı değildir. Veritabanı tarafında salt okunur çalıştırma gelene kadar (v0.3.0), savunmayı veritabanı yetkileriyle de kurun.
Kontrol listesi
APP_KEY’i açıkça ayarlayın ve sabit tutun. Bağlantı kimlik bilgilerini ve sohbet secret’larını şifreler; değişirse saklanan tüm kimlik bilgileri okunamaz hale gelir. Şu komutla üretin:docker run --rm queryproxy/queryproxy php artisan key:generate --showve-e APP_KEY=...olarak verin (aynı kurulumun tüm konteynerleri aynı anahtarı paylaşmalıdır). Anahtarı döndürürken eskisiniAPP_PREVIOUS_KEYSiçine taşıyın; böylece mevcut şifreli veriler çözülmeye devam eder. Açık birAPP_KEYyoksa konteyner ilk açılışta bir anahtar üretir ve veri volume’üne yazar.- HTTPS ile sunun: TLS sonlandıran bir ters vekilin arkasında (konteyner
:7432üzerinde düz HTTP sunar). ArdındanSESSION_SECURE_COOKIE=trueayarlayın. - Önünde bir vekil varsa
TRUSTED_PROXIES’i vekilinizin IP’sine ya da CIDR’ına ayarlayın. Varsayılan olarak hiçbir vekile güvenilmez; ayarlayana kadar uygulama bağlanan eşi istemci sayar:X-Forwarded-Protoyok sayılır (HTTPS algılanmaz, dolayısıyla HSTS başlığı gönderilmez) ve denetim kayıtlarına vekilin adresi yazılır.*değerini asla vermeyin: her istemcininX-Forwarded-Forbaşlığını taklit etmesine izin verir; bu hem denetim izindeki istemci IP’sini sahteler hem de IP bazlı oldukları için giriş ve 2FA denemelerini sınırsız kılar. Bkz. Yapılandırma. - Demo verisini kapalı tutun (
QUERYPROXY_SEED_DEMO=false, varsayılan); erişilebilir her kurulumda. - Ayrıcalıklı roller için 2FA zorunlu kılın:
QUERYPROXY_REQUIRE_2FA=admins(ya dadba/all). Kullanıcılar bir sonraki girişte kayda yönlendirilir. - Bağlantı hedeflerini kısıtlayın: DBA’lerin rastgele host’lara
ulaşmaması gerekiyorsa
QUERYPROXY_CONNECTION_HOST_DENYLIST/QUERYPROXY_SQLITE_ALLOWED_DIRkullanın.
Varsayılan olarak açık olanlar
Bunlar için yapılandırma gerekmez:
- Content-Security-Policy dahil güvenlik yanıt başlıkları ve Livewire ucunda istek sınırı (rate limit).
- Diskte şifreli bağlantı kimlik bilgileri ve TOTP iki adımlı doğrulama (siz zorunlu kılana kadar isteğe bağlı).
- Yorumları normalize eden SQL guard’ları ve çalıştırıcıda uygulanan satır tavanı.
- Yeniden oynatmaya karşı korumalı, kimliğe bağlı sohbet callback’leri ve kendi talebini onaylamanın engellenmesi.
- Değiştirilemez denetim günlükleri ile giriş/webhook istek sınırı.
- SSRF’e karşı korumalı giden webhook’lar.
- Yazılırken maskelenen, hata durumunda kapalı kalan sonuç depolaması.
Sonraki adımlar
- Tüm ortam değişkenleri: Yapılandırma.
- Docker’sız kurulum: Manuel kurulum.
- Sohbet callback’leri: Slack entegrasyonu ve Teams entegrasyonu.