Bilgi Bankası
GenelGüvenlik ve yetki 17 dk 14.06.2026

Test ortamı ve canlı ortam veri ayrımı: test ortamı gerçek veriye nasıl zarar vermez?

Test ortamı canlı ortama benzesin isteriz; ama canlı ortam verisinin aynısını kontrolsüz şekilde test ortamına taşımak güvenlik, KVKK ve müşteri güveni açısından ciddi risktir.

Bu yazı sana şu durumda yardımcı olur
  • test ortamında gerçek müşteri e-postaları ve telefonları var
  • test scripti yanlışlıkla canlı ortam bağlantı dizesiyle çalıştı
  • geliştirici erişimleri canlı ortam verisine fazla geniş
  • geri yükleme ile test ortamı oluşturuluyor ama maskeleme yapılmıyor
  • test ortamı verisi güncel olmadığı için testler yanıltıcı oluyor
Yazıyı bitirince

Test ortamını canlı ortama benzer ama canlı ortam kadar riskli olmayan bir hale getirmek için erişim, maskeleme, geri yükleme/fork ve bağlantı güvenliği kararlarını ayırabileceksiniz.

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 yedekleme/geri yükleme, bağlantı, izin listesi, denetim ve tenant ayrımıyla güvenli test ortamı akışını daha uygulanabilir hale getirir. Ama maskeleme politikası ve hangi verinin testte görünmeyeceği ürün/uyum kararıdır.

Test ortamı canlı ortam gibi davranmalı, canlı ortam gibi risk taşımamalı

Test ortamının amacı gerçek hayata yakın test yapmaktır. Ama bunun yolu canlı ortam verisini olduğu gibi kopyalayıp herkese açmak değildir. Gerçek isim, e-posta, telefon, adres, ödeme referansı veya destek notu test ortamında duruyorsa artık test ortamı değil, ikinci bir canlı ortam riski yaratmış olursunuz.

İyi test ortamı akışı üç şeyi birlikte çözer: veri şekli canlı ortama benzer, hassas değerler maskelenir, erişim canlı ortamdan daha gevşek değil daha kontrollüdür.

  • Test ortamı bağlantı dizesi canlı ortamdan isim, gizli değer ve ağ olarak ayrılmalı.
  • Gerçek kişisel veri maskelenmeden test ortamına taşınmamalı.
  • Geliştirici rolü canlı ortamda geniş, test ortamında sınırsız olmamalı; roller ayrı tasarlanmalı.
  • Test ortamı geri yükleme işlemleri denetim ve süreli saklama politikasıyla izlenmeli.

En tehlikeli hata yanlış bağlantı dizesidir

Bir göç, seed veya yük testi scriptinin yanlışlıkla canlı ortam veritabanına bağlanması çoğu ekibin kâbusudur. Bunu sadece dikkatle önleyemezsiniz; ortam adları, gizli değer ayrımı, ağ kısıtı ve kullanıcı yetkisi birlikte çalışmalıdır.

Ortam ayrımı için bağlantı dizesi kontrolü

env-guard.ts
const databaseUrl = process.env.DATABASE_URL || ""
const appEnv = process.env.APP_ENV || "development"

if (appEnv !== "production" && databaseUrl.includes("prod")) {
  throw new Error("Canlı olmayan ortam canlı veritabanına bağlanamaz")
}

if (appEnv === "production" && databaseUrl.includes("staging")) {
  throw new Error("Canlı uygulama test veritabanına bağlanamaz")
}

Bu kontrol tek başına yeterli değildir ama erken uyarı sağlar. Asıl güvenlik, ayrı gizli değer, ayrı kullanıcı ve ayrı ağ politikasıyla gelir.

Maskeleme veri tipine göre yapılır

Her alan aynı şekilde maskelenmez. E-posta benzersiz kalabilir ama gerçek kişiye gitmemelidir. Telefon tamamen sahte olabilir. Adres çoğu testte gerekli değildir. Ödeme referansları ve kimlik benzeri alanlar özel dikkat ister.

Maskeleme sonrası uygulama hâlâ çalışmalıdır. Benzersiz indeksler bozulursa test ortamı gerçekçi olmaktan çıkar; bu yüzden maskeleme scripti hem gizlilik hem veri bütünlüğü açısından test edilmelidir.

PostgreSQL basit maskeleme fikri

mask-staging.sql
UPDATE users
SET
  email = concat('user+', id, '@example.test'),
  phone = NULL,
  full_name = concat('Test User ', id)
WHERE email NOT LIKE '%@example.test';

UPDATE customer_addresses
SET
  line1 = 'Masked address',
  line2 = NULL,
  postal_code = '00000';

Geri yükleme veya fork sonrası ilk iş erişimi kısmaktır

Canlı ortam yedeğinden test ortamı oluşturduğunuzda verinin yaşam döngüsü değişir. O kopyanın kim tarafından görülebileceği, ne kadar süre saklanacağı ve ne zaman silineceği ayrıca tanımlanmalıdır.

TürkDB ile geri yükleme/fork benzeri akışlar pratikleştiğinde bu disiplin daha da önem kazanır. Kolay kopya almak, kontrolsüz kopya almak anlamına gelmemelidir.

Test ortamı geri yükleme sonrası kontrol

staging-restore-check.sh
turkdb backup list app-prod-pg
turkdb cluster pitr restore app-prod-pg \
  --time "2026-06-14T09:00:00Z" \
  --name app-staging-pg

turkdb cluster allowlist list app-staging-pg
turkdb cluster allowlist add app-staging-pg 198.51.100.20 --desc "VPN test ortamı erişimi"
turkdb audit list --cluster app-staging-pg --limit 50
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.

Test ortamı verisi de yaşam döngüsüne sahip olmalı

Test ortamı verisi çoğu zaman unutulur. Eski canlı ortam kopyaları aylarca durur, kimse hangi müşterinin verisinin içeride olduğunu hatırlamaz. Bu durum hem güvenlik hem maliyet riskidir.

Test ortamı clusterları etiketlemek, saklama süresi vermek ve periyodik silme kontrolü yapmak küçük ama güçlü bir alışkanlıktır. Test ortamı üretime yakın olmalı, üretim kadar kalıcı olmamalı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