İçeriğe atla
RESWONSYazılım Stüdyosu

Çok kiracılı SaaS'ta veri sızıntısını önlemenin 5 katmanı

Tek bir tenant_id şartı asla yeterli değildir. Gerçek izolasyon katman katman kurulur: mimari, sorgu, oturum, test ve audit.

Çok kiracılı bir SaaS'ta onlarca işletme aynı veritabanını paylaşır. Bir işletmenin başka birinin verisini görmesi yalnızca bir hata değil; şirketi bitirebilecek bir güven ihlalidir. Bu yüzden hiçbir zaman tek bir önleme güvenmeyiz; her biri tek başına sızıntıyı yakalayabilecek beş bağımsız katmanı üst üste koyarız.

Katman 1 — Mimari

Kiracı verisi tutan her tablo bir tenant_id sütunu taşır ve bu sütun her foreign key'in parçasıdır. Farklı kiracıların satırlarını sessizce karıştıran "ortak" bir tablo yoktur. Şemanın kendisi, kiracılar arası veriyi fiziksel olarak tanımlanabilir ve dolayısıyla denetlenebilir kılar.

Katman 2 — Sorgu

Her sorgu, aktif tenant_id'yi otomatik ekleyen tek bir veri erişim katmanından geçer. Geliştiriciler her çağrıda elle WHERE tenant_id = ? yazmaz — unutulan bir şart klasik sızıntıdır. Bir sorgu kiracı kapsamı olmadan veritabanına ulaşırsa, çalışmadan hata fırlatır.

"En güvenli şart, geliştiricinin yazmayı asla unutamayacağı şarttır." — RESWONS DNA

Katman 3 — Oturum & Yetki

Kiracı bağlamı, istemcinin değiştirebileceği bir istek parametresinden değil, sunucudaki kimliği doğrulanmış oturumdan türetilir. URL'deki bir id'yi değiştirmek size başka birinin faturasını değil, bir 403 getirir.

Katman 4 — Testler

Otomatik izolasyon testleri iki kiracı oluşturur, her biri adına veri yazar, sonra hiçbir uç noktadan diğerinin satırlarını okuyamadıklarını doğrular. Bunlar her pull request'te çalışır; bir sızıntı, üretime ulaşmadan derlemeyi düşürür.

Katman 5 — Audit

Kritik aksiyonlar; kim, ne zaman ve hangi kiracı bilgisiyle loglanır. Olağandışı kiracılar arası erişim desenleri bir uyarı tetikler. İlk dört katman bir şekilde başarısız olsa bile, audit izi hatayı sessiz değil görünür kılar.

Çıkarım

Güvenlik tek bir akıllı numara değildir; yedekliliktir. Beş bağımsız katman, tek bir insan hatasının asla müşteriye yansıyan bir sızıntıya dönüşmemesi demektir. Bu, yayına aldığımız her sistemin arkasındaki disiplindir.

Bu prensiplerin teknoloji tercihlerimize nasıl yansıdığını Teknoloji sayfasında görebilirsiniz.