Ortamlar arasında veri yalıtımı
Her KeenAuth ortamı (projelerinizin her birinde development, staging, production) ayrı bir kiracıdır. Bir ortamın kullanıcıları, kuruluşları, uygulamaları, oturumları, anahtarları, günlükleri ve olayları başka bir ortamda hiçbir zaman görünmez; bu, kendi hesabınızdaki başka bir ortam için de geçerlidir. Bu sayfa bu sınırın nasıl uygulandığını açıklar.
Birbirinden bağımsız iki savunma hattı
Ortamlar bir veritabanı şemasını paylaşır ve bir ortama ait her satır, o ortamın tanımlayıcısını taşır. Yalıtım iki kez uygulanır ve bir verinin sınırı geçebilmesi için iki kontrolün de aynı anda başarısız olması gerekir:
- Uygulamada türlendirilmiş ortam kapsamı. Her istek, herhangi bir veri okunmadan önce ana bilgisayar adından veya kimlik bilgisinden tam olarak bir ortama çözümlenir. Ortam verisini okuyan veya yazan kod, bu kapsam olmadan bir veritabanı işlemi başlatamaz; kapsamsız bir çağrı, sorgu çalışmadan reddedilir.
- PostgreSQL satır düzeyi güvenlik. Ortam verisi tutan her tablonun satır düzeyi güvenliği etkinleştirilmiş ve zorunlu kılınmıştır; bu nedenle politika tablo sahibi için de uygulanır. Her işlem geçerli ortamı ayarlar ve bir satır yalnızca ortamı eşleştiğinde görünür olur. Ortam ayarlamamış bir işlem hiçbir satır görmez. Hiçbir uygulama veya bakım rolünün satır düzeyi güvenliğini atlatmasına izin verilmez.
Ortam kapsamlı her tablo, birincil anahtarını ve dizinlerini ortam tanımlayıcısıyla başlatır; böylece yalıtım koşulu sorgulara ayrı bir arama eklemez.
Belirteç veya anahtara göre arama
Bazı istekler yalnızca bir gizli değerle gelir; örneğin bir yetkilendirme kodu, bir yenileme belirteci veya bir API anahtarı. KeenAuth bu tür değerleri yalnızca özet üzerinden yapılan bir aramayla bulur, ardından saklanan kaydın ortamını isteğin ortamıyla karşılaştırır. İkisi farklıysa değer geçersiz sayılır.
Sınırı geçtiğinizde ne görürsünüz
| Deneme | Yanıt |
|---|---|
| Başka bir ortama ait bir kaynağı okuma | 404 Not Found; yanıt, kaynağın var olduğunu açığa çıkarmaz |
| Başka bir ortam tarafından verilmiş bir erişim belirtecini kullanma | 401 Unauthorized; her ortamın kendi veren kuruluşu ve kendi imzalama anahtarları (JWKS) vardır |
| Başka bir ortamda kayıtlı bir istemciyle kimlik doğrulama | invalid_client |
Veritabanının ötesi
Aynı sınır, ortam verisinin bulunduğu diğer tüm yerlerde de geçerlidir:
- Önbellekler: her önbellek anahtarı ortam tanımlayıcısıyla başlar.
- Olaylar ve işler: her dahili olay ortamını taşır ve tüketiciler veritabanı kapsamlarını bundan ayarlar; kuyruğa alınan her iş ait olduğu ortamı taşır.
- Anahtarlar: şifreleme ve imzalama anahtarları her ortam için ayrıdır.
- Günlükler: günlük satırları ortamı bir alan olarak taşır ve ortam günlük API'si yalnızca çağırdığınız ortamın kayıtlarını döndürür.
- Arka plan işleri: bakım işleri (saklama süresi temizliği, silmeler) ortamları tek tek çalıştırır ve her biri kendi kapsamlı işleminde yürür.
Yapılandırmayı bir ortamdan diğerine taşıma (yapılandırma aktarımı) yalnızca ayarları kopyalar. Gizli bilgiler ile son kullanıcı veya kuruluş verileri hiçbir zaman bir aktarım paketinin parçası değildir.
Yalıtım nasıl test edilir
Kiracılar arası yalıtım test paketi, KeenAuth'un sürekli entegrasyonunda çalışır ve başarısız olduğunda bir değişikliği engeller. Paket şunları kontrol eder:
- ortam verisi tutan her tablonun satır düzeyi güvenliği etkinleştirilmiş ve zorunlu kılınmıştır;
- her API yüzeyi, başka bir ortamın kaynakları, belirteçleri ve istemcileri için
404veya401döndürür; - arka plan işleri ile günlük ve olay hattı yalnızca girdilerinde adı geçen ortama dokunur.
Bir şema kontrolü ayrıca ortam tanımlayıcısı sütunu olmayan yeni bir ortam verisi tablosunu da reddeder.