Çoklu kiracılık
Tek bir CID222 dağıtımının birden çok müşteriye, ekibe veya departmana nasıl hizmet ettiği, kimlik bilgilerinin nasıl çözümlendiği ve izolasyonun gerçekte nerede tutulduğu.
- Sürüm: 0.4
- Rol: admin_user, normal_user, viewer
Tek bir CID222 dağıtımı birçok kiracıya hizmet eder. Bir kiracı; kendi oturum açma bilgileri, kendi sağlayıcı kimlik bilgileri, kendi verisi ve başkalarınınkinden farklı olabilen bir politikası olan bir öznedir — bir müşteri, bir departman veya bir hizmet hesabı.
Sorun
Yönetişim kuruluş başınadır, ama kuruluş başına bir ağ geçidi çalıştırmak karşılanamaz: her kopya kendi veritabanını, kendi model konteynerlerini ve kendi 30 GB belleğini taşır. Tek bir dağıtımı paylaşmak, kapsamlandırmadaki bir hatanın müşteriler arası veri sızıntısı olması demektir; paylaşılan sağlayıcı anahtarları ise kimin ne harcadığını söylemeyi imkânsız kılar. Kiracı modeli, paylaşılan bir dağıtımın müşterinin gözlemleyebildiği her yolda ayrı dağıtımlar gibi davranması için vardır.
CID222 bunu nasıl yapar
Kiracı
Bir kiracı; kendi oturum açma bilgilerini, kendi sağlayıcı kimlik bilgilerini, kendi oturumlarını
ve tespitlerini ve ne yapabileceğini belirleyen bir rolü taşır. Roller tam olarak şunlardır:
superadmin, admin_user, normal_user, viewer ve auditor. Rol her istekte token'dan değil
veritabanından okunur; bu yüzden bir yetki düşürmesi hemen etkili olur.
İçerik politikası ayrı bir eksendir. Filtre kuralları, kiracı sütunu olmayan kuruluş genelinde satırlardır; kiracıya göre değişen, her kuralın aldığı eylemdir ve bu bir geçersiz kılmayla ayarlanır.
Kiracı grupları
Bir kiracı grubu, bir şeyi paylaşması gereken kiracıları toplar. Bir grubun adı, isteğe bağlı bir
açıklaması ve bir owner_tenant_id değeri vardır — grubun sahibi olan kiracı, ki o grubun
politikasını kimse okumadan veya yazmadan önce denetlenen yetki budur.
Gruplar iki iş yapar:
- Bir sağlayıcı kimlik bilgisi paylaşırlar. Tek bir anahtar her üyeye hizmet eder; böylece bir departmanın sağlayıcıyla kendi sözleşmesine ihtiyacı olmaz.
- Bir politika kapsamı taşırlar. Bir gruba iliştirilen geçersiz kılma her üyeye uygulanır; bir departman, kuralı hiç düzenlemeden bir kural için farklı bir eylem böyle alır.
Kimlik bilgisi çözümlemesi
Bir kiracı bir sağlayıcıyı çağırdığında ağ geçidi kimlik bilgisini iki katmanda çözümler:
- Kiracının kendi kimlik bilgileri. Kiracı üzerindeki etkin bir kimlik bilgisi kazanır.
- Kiracının grupları. Aksi hâlde, kiracının üyesi olduğu herhangi bir gruptaki etkin bir kimlik bilgisi.
GET /models kataloğu kurarken aynı çözümlemeyi uygular; bu yüzden hiçbir yerde kimlik bilgisi
olmayan bir kiracı, çağıramayacağı bir liste yerine boş bir model listesi görür.
Bir kimlik bilgisi satırı ikisinden tam olarak birine aittir. ai_credentials tablosu; ya
tenant_id doludur ve tenant_group_id boştur ya da tersi olduğunu — asla ikisi birden, asla
ikisi de boş değil — dayatan bir veritabanı kısıtı taşır.
İzolasyon nasıl uygulanır
İzolasyon uygulamada, her yolda ve aynı kapsam servisi tarafından uygulanır:
- Sorgu kapsamlandırma. Okumalar önce çağıranın kapsamını çözümler ve sorguyu bununla sınırlar. İstemcinin verdiği bir kiracı kimliği bu kapsamla kesiştirilir; dolayısıyla başkasının kiracısını adlandırmak sonuçlarınızı genişletmez, daraltır.
- Gruplarda sahiplik. Bir grubun politikasını okumak üyelik gerektirir; değiştirmek sahiplik gerektirir. Bir departmanın tamamının taranmayı bırakmasına karar vermek, bir ekip liderinin kendi ekibi üzerinde sahip olduğu, başka kimsenin başka bir ekip üzerinde sahip olmadığı bir yetkidir.
- Kasıtlı yanıt polaritesi. Kapsam dışındaki bir kiracı 403 döndürür — adı geçen bir kullanıcının varlığı sır değildir. Kapsam dışındaki bir grup 404 döndürür — bir departmanın varlığı sırdır.
Politika önceliği
Aynı kural hakkında birden çok kapsamın görüşü olduğunda şu sırayla çözümlenirler:
| Düzey | Kapsam | Öncelik |
|---|---|---|
| Temel kural | Her kiracı | En düşük |
| Kiracı grubu | Grubun üyeleri | Orta |
| Kiracı | Tek bir kiracı | En yüksek |
Kiracı düzeyindeki bir geçersiz kılma doğrudan kazanır. Bir kiracı birden çok gruba aitse
geçersiz kılmalarının en kısıtlayıcı olanı uygulanır ve bu katlama sıradan bağımsızdır. Bir
geçersiz kılma yalnızca bir kuralın eylemini değiştirebilir — allow, kuralı o kapsam için
kapatma biçimidir — ve asla bir kural ekleyemez, kaldıramaz veya neyle eşleştiğini
değiştiremez.
Sırlar nasıl saklanır
Sağlayıcı API anahtarları AES-256-GCM ile şifrelenerek v1: ön ekiyle saklanır. Ağ geçidi API
anahtarları tuzsuz SHA-256 özeti olarak saklanır; anahtarın kendisi kriptografik bir rastgele
kaynaktan gelen 32 bayttır, dolayısıyla bir tuzun koruyacağı düşük entropili bir tahmin uzayı
yoktur. Bir ağ geçidi API anahtarı expires_at taşıyabilir; boş bir değer asla süresinin dolmadığı
anlamına gelir.
Sınırlar ve bilinen boşluklar
- Bir grup API anahtarı bir üyenin kimliğini ödünç alır. Bir kiracı grubuna verilen anahtar, o grubun en erken eklenen üyesi olarak davranır. O kullanıcıyı kaldırmak anahtarı iptal etmez — anahtarın kimliğini bir sonraki en erken üyeye devreder ve anahtarın yazdığı her şey artık başka bir kişiye atfedilir. Anahtara ait bağımsız bir hizmet kimliği tasarlanmıştır ama henüz gelmemiştir. Gelene kadar bir grup anahtarını, olaylarındaki isme göre değil gruba göre denetleyin.
- İzolasyon veritabanı düzeyinde değil, uygulama düzeyindedir. Şemanın hiçbir yerinde PostgreSQL satır düzeyi güvenlik politikası yoktur. Her sorgu uygulama tarafından, tutarlı biçimde ve tek bir yerde kapsamlandırılır; ancak kapsam servisini sormayı unutan bir kod yolunu veritabanı durdurmaz. "Kiracılar arası erişim imkânsızdır" ifadesini depolama motoru hakkında değil, kod hakkında bir ifade olarak okuyun.
- Kiracı bazlı hız sınırı veya token kotası yoktur. Ağ geçidinde hiçbir şey bir kiracının
isteklerini veya harcamasını ölçmez.
/chat/completionsve analiz uç noktalarının hiçbir sınırlayıcısı yoktur ve bir grup kota havuzlamaz, çünkü havuzlanacak bir kota yoktur. Maliyet önceden dayatılmaz, sonradan raporlanır. - Kiracısı çözümlenmemiş bir politika geçersiz kılması işlevsizdir. Geçersiz kılma geçişi çözümlenmiş bir kiracıya bağlıdır. İki giriş yolu hâlâ bir kiracı çözümleyemez ve bunlarda, departman nasıl yapılandırılmış olursa olsun temel eylem geçerlidir.
- Grup üyeliği 30 saniye önbelleklenir. Bir kiracıyı gruplar arasında taşımak, yazıcı önbelleği geçersiz kılmadıysa politika çözümlemesinde önbellek süresi dolduğunda etkili olur. Bir üyelik değişikliğinin her yolda anında olduğunu varsaymayın.
- Eski bir kimlik bilgisi satırı hâlâ düz metin olabilir. Şifreleme, dönüştürücü geldikten
sonra yazılan değerlere uygulanır; ondan önce yazılan satırlar olduğu gibi geçer. Bir dağıtımın
temiz olduğunu varsaymadan önce
api_keyalanındav1:ön ekini denetleyin.
İlgili sayfalar
- Mimari — kiracı çözümlemesinin istek yolundaki yeri.
- Modeller ve sağlayıcılar — bir kiracının kimlik bilgilerinin neyi görünür kıldığı.
- İçerik güvenliği hattı — geçersiz kılmaların yeniden yönlendirdiği kurallar.
Son güncelleme