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 girdileri, işleyici mesajları, arama dizinleri, nesne depolama ve yönetim ekranları üzerinden de aktarılır.
İzolasyonu, isteğin bir bütün olarak ve sonraki işlemlerinin 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 kimliği doğrulanmış kullanıcıyı belirlemeli, 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ı bir değerlendirme yapmayı zorlaştırır. Bir işleyici, orijinal HTTP isteğinden varsayımları devralmak yerine, kendi yetkilendirilmiş kapsamını belirleyebilmek için yeterli bilgiyi 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 bu kaydı 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 güvenliği etkinleştirildiğinde ve erişime izin veren geçerli bir ilke bulunmadığında varsayılan olarak erişimi reddetme dahil olmak üzere satır düzeyinde güvenlik ilkelerini destekler. Belgelerinde ayrıca önemli bir ayrım yapılmaktadır: süper kullanıcılar ve atlama ayrıcalıklarına sahip roller bu kısıtlamalara tabi değildir; ayrıca tablo sahipleri de normalde bu ilkeleri atlar.
Bu, ikna edici bir politika tanımının tasarımın yalnızca bir parçası olduğu anlamına gelir. Uygulamanın veri tabanı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 ayarlanmalı, 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çmez; ek bir koruma önlemidir.
SQL dışındaki yerleri de dahil edin
Şu tür bir önbellek anahtarı: conversation:123 gibi bir önbellek anahtarı, 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 bir kiracı bileşeni, sahiplik sınırını görünür kılar ve kazara çakışmaları azaltır.
Arama ve sonuç çıkarma işlemleri aynı titizliği gerektirir. Kullanıcı ve erişim filtreleri, aday seçimi aşamasında uygulanmalıdır. 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 girmesine izin vermek, zaten bir bilgi sızıntısı 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 yol açabilir.
Kasıtlı olarak benzer kiracılarla test yapmak
Adları birbiriyle örtüşen, benzer belgelere sahip ve dış tanımlayıcıları eşleşen iki kiracı kullanan izolasyon testlerini seviyorum. Bu, her değerin birbirinden net bir şekilde farklı olduğu bir veri kümesine kıyasla, kazara yapılan genel aramaların daha kolay ortaya çıkmasını sağlar.
- Başka bir kiracının kaydını doğrudan kimlik numarasıyla talep edin.
- Yalnızca diğer kiracının bilgi bankasında geçen ifadeleri ara.
- Yetkili çalışma alanları arasında geçiş yaptıktan sonra önbelleğe alınmış 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ün içinde 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ş akışlarında hem de kurtarma işlemlerinde geçerliliğini koruduğunda güvenilir sayılır. Buradaki mesele, yalnızca ana API’nin kapsamının doğru ayarlanmış olup olmadığı değil, aynı zamanda verilerin daha sonraki her kopyalanma ve kullanımında bu kapsamın korunup korunmadığıdır.
25 Eylül 2026 tarihinde güncellenmiştir.