# Ü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.

- Dokümantasyon: Kılavuzlar
- Güncelleme: 2026-10-10
- Kaynak: https://queryproxy.com/tr/docs/uretim-guvenligi/
- Dil: tr-TR
- Yazar: Muhammet Şafak

---
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 `SELECT` yetkisi 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=prefer` kullanı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 --show`
  ve `-e APP_KEY=...` olarak verin (aynı kurulumun tüm konteynerleri aynı anahtarı
  paylaşmalıdır). Anahtarı döndürürken eskisini `APP_PREVIOUS_KEYS` içine taşıyın;
  böylece mevcut şifreli veriler çözülmeye devam eder. Açık bir `APP_KEY`
  yoksa 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ından `SESSION_SECURE_COOKIE=true`
  ayarlayı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-Proto` yok 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 istemcinin
  `X-Forwarded-For` baş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](/tr/docs/yapilandirma/#ters-vekil-arkasında).
- **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 da `dba` / `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_DIR` kullanı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](/tr/docs/yapilandirma/).
- Docker'sız kurulum: [Manuel kurulum](/tr/docs/manuel-kurulum/).
- Sohbet callback'leri: [Slack entegrasyonu](/tr/docs/slack-entegrasyonu/) ve
  [Teams entegrasyonu](/tr/docs/teams-entegrasyonu/).
