Kiracıların Ayrılması, Verilere Uygun Olmalıdır

Bir SaaS uygulamasında kiracı izolasyonunun neden veritabanı sorguları, önbellekler, arka plan işleri, veri alma işlemleri ve destek araçlarını da kapsaması gerektiği.

Her tabloya bir kiracı tanımlayıcısı eklemek, işe başlamak için yararlı bir adımdır. Ancak bu, tek başına bir SaaS uygulamasını izole etmeye yetmez. Veriler ayrıca önbellek girişleri, işleyici mesajları, arama dizinleri, nesne depolama ve yönetim ekranları üzerinden de aktarılır.

İzolasyonu, istek bütününün ve onun sonraki aşamalarının bir özelliği olarak ele alıyorum. Her sınırda, sistem hangi verilere işleme koyduğunu ve mevcut işlemin bu verileri işleme yetkisine neden sahip olduğunu bilmelidir.

Sunucuda kiracı bağlamını oluşturun

Tarayıcı tarafından sağlanan bir kiracı kimliği, talep edilen bir kapsamdır; üyelik kanıtı değildir. Uygulama, iş verilerini yüklemeden önce kimlik doğrulaması yapılmış kullanıcıyı tanımlamalı, söz konusu kiracıya erişimi doğrulamalı ve bir yetkilendirme bağlamı oluşturmalıdır.

Bu bağlam, hizmet sınırlarında açıkça belirtilmelidir. Gizli küresel durum, zamanlanmış görevler ve eşzamanlı istekler hakkında mantıklı çıkarımlarda bulunmayı zorlaştırır. Bir işleyici, orijinal HTTP isteğinden varsayımları devralmak yerine, kendi yetkilendirilmiş kapsamını belirleyebilecek kadar yeterli bilgi almalıdır.

Veritabanı sorguları bu kapsamı yansıtmalıdır. Bir sohbeti yüklerken, sorgunun hem kimliğini hem de kiracısını sınırlamasını istiyorum. Bir kaydı genel olarak getirip sahipliğini daha sonra kontrol etmek, başka bir kod yolunun bunu yanlışlıkla önce kullanma olasılığını artırır.

Veritabanını başka bir sınır olarak kullanın

PostgreSQL, satır düzeyinde güvenlik ilkelerini destekler; buna, satır güvenliği etkinleştirildiğinde ve erişime izin veren geçerli bir ilke bulunmadığında varsayılan olarak erişimin reddedilmesi de dahildir. Bu belgeler ayrıca önemli bir ayrım yapar: süper kullanıcılar ve atlama ayrıcalıklarına sahip roller herhangi bir kısıtlamaya tabi değildir; ayrıca tablo sahipleri genellikle ilkeleri atlar.

Bu, ikna edici bir politika tanımlamasının tasarımın yalnızca bir parçası olduğu anlamına gelir. Uygulamanın veritabanındaki gerçek rolü, veri taşıma rolü, bağlantı havuzu ve işlem davranışı; hepsi önemlidir. Çalışan uygulamayla aynı ayrıcalıkları kullanarak bu politikayı doğrulardım.

Kiracı bağlamı bağlantı ayarları aracılığıyla aktarılıyorsa, havuzlanmış bağlantılara özel dikkat gösterilmesi gerekir. Bağlam, güvenilir bir yol üzerinden belirlenmeli, uygun şekilde sınırlandırılmalı ve bir sonraki isteğe sızmamalıdır. Satır düzeyinde güvenlik, bağlantı yaşam döngüsünü anlamanın yerine geçmeyen ek bir koruma önlemidir.

SQL dışındaki yerleri de dahil edin

Şu tür bir önbellek anahtarı: sohbet:123 bu, tanımlayıcının küresel olarak benzersiz olduğunu ve her çağrı yapanın aynı erişim kurallarını uyguladığını varsayar. Açıkça belirtilmiş bir kiracı bileşeni, sahiplik sınırını görünür kılar ve kazara çakışmaları azaltır.

Arama ve sonuç alma işlemleri aynı disiplin gerektirir. Kullanıcı ve erişim filtreleri, aday seçimi aşamasına aittir. Genel bir “top-k” aramasının ardından filtreleme yapmak, geçerli adayların gözden kaçmasına neden olabilir; ayrıca, yetkisiz metinlerin yeniden sıralama sürecine veya model bağlamına dahil edilmesine izin vermek, zaten bir bilgi ifşası anlamına gelir.

Nesne depolama yolları, dışa aktarma işleri, kullanım sayaçları ve bildirim kuyrukları da kiracı bağlamını içermelidir. Bir uygulama, etkileşimli ekranlarını güvenli hale getirse bile arka planda gerçekleştirilen bir CSV dışa aktarma işlemi yoluyla veri sızıntısına neden olabilir.

Kasıtlı olarak benzer kiracılarla test yapın

Adları birbiriyle örtüşen, benzer belgelere sahip ve dış tanımlayıcıları eşleşen iki kiracı kullanan izolasyon testlerini tercih ederim. Bu, her değerin birbirinden net bir şekilde farklı olduğu bir veri kümesine kıyasla, kazara yapılan genel aramaların ortaya çıkmasını kolaylaştırır.

  • Başka bir kiracının kaydını doğrudan kimlik numarasıyla isteyin.
  • Yalnızca diğer kiracının bilgi bankasında yer alan ifadeleri arayın.
  • Yetkili çalışma alanları arasında geçiş yaptıktan sonra önbelleğe alınmış bir yanıtı yeniden kullanın.
  • Sahiplik meta verileri uyuşmayan bir işçi mesajını yeniden oynat.
  • Erişimi sınırlı bir rol aracılığıyla dışa aktarma işlemini deneyin.

Ayrıca destek araçlarını da test ediyorum. İdari kolaylık genellikle üründe en geniş izinlerin verilmesine yol açtığı için, kiracılar arası erişim kasıtlı, kısıtlı ve denetlenebilir olmalıdır.

Bir kiracı sınırı, hem normal işleyiş süreçlerinde hem de kurtarma süreçlerinde geçerliliğini koruduğu takdirde güvenilir sayılır. Buradaki mesele, yalnızca ana API’nin kapsamının doğru bir şekilde belirlenip belirlenmediği değil, aynı zamanda verilerin daha sonraki her kopyalama ve kullanımında bu kapsamın korunup korunmadığıdır.

25 Eylül 2026 tarihinde güncellenmiştir.