Bilgi Bankası
GenelGüvenlik ve yetki 13 dk 14.06.2026

TLS ve IP izin listesi: veritabanı erişimini güvenli ama yaşanabilir tasarlamak

Güvenli veritabanı erişimi bazen iki uç arasında sıkışır: ya her şeyi açıp işleri kolaylaştırırız ya da erişimi o kadar kilitleriz ki ekip çalışamaz. Bu yazı TLS ve IP izin listesi tasarımını, günlük hayatı zorlaştırmadan güvenliği artıracak şekilde düşünür.

Bu yazı sana şu durumda yardımcı olur
  • geliştiriciler farklı ağlardan bağlanmak zorunda kalıyor
  • CI/CD runner veritabanına bazen bağlanıyor bazen bağlanmıyor
  • 0.0.0.0/0 açmak kısa yol gibi görünüyor
  • TLS parametreleri motorlara göre karışıyor
  • hangi IP kuralının kime ait olduğu zamanla unutuluyor
Yazıyı bitirince

İzin listesi kurallarını anlamlı parçalara bölecek, TLS bağlantı dizesini motorlara göre okuyacak ve geçici erişimi kalıcı güvenlik açığına çevirmeden yöneteceksiniz.

TürkDB açısından ürünleşme notu

Bu bölüm, TürkDB’nin ilgili problemi hangi ürün ilkeleri ve kontrol noktalarıyla ele alacağını anlatır. Kapsam, gerçek iş yükü ve ihtiyaçla birlikte netleşir.

TürkDB’de izin listesi, TLS ve bağlantı bilgisi aynı cluster bağlamında durur. Bu, güvenlik kararını ayrı ayrı dosyalara ve kişisel notlara dağıtmadan yönetmeyi sağlar; ama kural isimlerini ve erişim ömrünü disiplinli tutmak yine ekibin sorumluluğudur.

İzin listesi bir güvenlik duvarı değil, erişim sözleşmesidir

IP izin listesi yalnızca “kim bağlanabilir?” sorusuna cevap verir. Asıl değer, bu cevabın okunabilir ve sürdürülebilir olmasındadır. Kural açıklaması boşsa, üç ay sonra o IP’nin ofis mi, eski ajans mı, CI runner mı olduğunu kimse hatırlamaz.

Bu yüzden izin listesi kuralını eklerken açıklama yazmak küçük bir nezaket değil, operasyonel hafızadır. Hele geçici erişimlerde açıklamaya tarih veya amaç eklemek ileride temizlik yapmayı kolaylaştırır.

Anlamlı izin listesi kuralları

allowlist.sh
turkdb cluster allowlist add app-pg 203.0.113.0/24 --desc "Ofis ağı - İstanbul"
turkdb cluster allowlist add app-pg 198.51.100.42 --desc "GitHub Actions runner - production deploy"
turkdb cluster allowlist list app-pg
Bu TürkDB bloğu kavramsal ürün akışını anlatır; mevcut çalışan komut, garanti edilen özellik veya teslim tarihi vaadi olarak okunmamalıdır.

0.0.0.0/0 neden rahatlatıcı ama tehlikelidir?

Herkes bağlansın diye tüm interneti açmak kısa vadede sorunu çözer gibi görünür. Ama o andan itibaren güvenlik yalnızca parola gücüne ve uygulama davranışına kalır. Üretim veritabanında bu, gereksiz bir risk transferidir.

Daha iyi yaklaşım, erişim kaynaklarını sınıflandırmaktır: uygulama runtime, ofis ağı, VPN/WireGuard, CI/CD runner, geçici destek erişimi. Her birinin farklı ömrü ve açıklaması olmalıdır.

  • Kalıcı uygulama erişimi mümkünse private ağ veya tünel üzerinden yapılmalı.
  • CI/CD IP adresleri ayrı kural olarak tutulmalı.
  • Geçici destek erişimleri süreli açılmalı ve iş bitince kaldırılmalı.
  • Boş izin listesi durumunun dış erişimi kapattığını ekip bilmeli.

TLS parametresi motorlara göre değişir

TLS konusu kafa karıştırır çünkü her istemci aynı kelimeyi kullanmaz. PostgreSQL sslmode=require der, MySQL tls=true veya ssl-mode ister, MongoDB tls=true kullanır, Redis tarafında rediss:// şeması beklenir. Asıl amaç aynıdır: parola ve veri düz metin taşınmasın.

Sertifika doğrulama seviyesi arttıkça güven artar ama istemci tarafında CA ve host adı doğrulama ayarları doğru yapılmalıdır. Bu yüzden bağlantı dizesindeki TLS parametresini kopyalayıp geçmek yerine, uygulama kütüphanesinin onu gerçekten nasıl yorumladığını kontrol etmek gerekir.

Motorlara göre TLS bağlantı örnekleri

secure-dsn.env
POSTGRES_DSN="postgresql://app:***@app.pg.ist1.turkdb.io:5432/app?sslmode=require"
MYSQL_DSN="app:***@tcp(app.mysql.ist1.turkdb.io:3306)/app?tls=true"
MONGODB_URI="mongodb://app:***@app.mongo.ist1.turkdb.io:27017/app?tls=true&authSource=admin"
REDIS_URL="rediss://default:***@app.redis.ist1.turkdb.io:6379"
CLICKHOUSE_DSN="clickhouse://app:***@app.ch.ist1.turkdb.io:9440?secure=true"

Erişim sorununu çözerken güvenliği sökmeyin

Bir bağlantı hatasını çözerken “TLS’i kapat, izin listesini aç, sonra bakarız” demek çok insani ama tehlikeli bir refleks. Daha güvenli yaklaşım, hangi katmanın engel olduğunu tek tek anlamaktır.

TürkDB’de cluster olayları, bağlantı bilgisi ve izin listesi aynı yerde olduğu için bu ayrımı yapmak daha kolaydır. Önce doğru IP mi geliyor, sonra TLS parametresi doğru mu, sonra kullanıcı/parola doğru mu diye ilerleyin.

Güvenliği bozmadan erişim teşhisi

secure-access-check.sh
turkdb cluster get app-pg
turkdb cluster allowlist list app-pg
turkdb connect app-pg --no-tunnel
turkdb cluster events app-pg --limit 20
Bu TürkDB bloğu kavramsal ürün akışını anlatır; mevcut çalışan komut, garanti edilen özellik veya teslim tarihi vaadi olarak okunmamalıdır.
Devam etmek istersen

Sorunu motor bazında derinleştirin

Benzer belirtiler farklı motorlarda farklı nedenlere dayanır; yayınlanan tüm rehberleri ana sayfadan takip edebilirsiniz.

Tüm makaleler