nessie

AB yapımı; verilerinizin bulunduğu yer

Nessie’nin nerede geliştirildiği, verilerinizin nerede bulunduğu ve Nessie’yi kendi sunucunuzda barındırdığınızda neyi kontrol ettiğiniz.

Onu kim geliştiriyor ve hangi hukuka tabi

Nessie, Çek Cumhuriyeti’nde kayıtlı ve Çek hukukuna tabi olarak faaliyet gösteren UnlikeOtherAI s.r.o. şirketi tarafından geliştirilmektedir.

Bu sayfa, yazılımın nasıl geliştirildiğini ve nerede çalıştığını anlatır. Bir uyumluluk beyanı değildir: Nessie’nin herhangi bir güvenlik sertifikası yoktur ve burada yazılanlar bu yönde okunmamalıdır. Hangi kişisel verilerin hangi dayanakla işlendiği, ayrı bir sayfa olan gizlilik politikasının konusudur.

Barındırılan ürün nerede çalışıyor

Nessie Cloud, Avrupalı barındırma sağlayıcıları üzerinde çalışır — Scaleway, Hetzner ve diğerleri. Her sağlayıcının sunduğu en iyi hizmeti seçeriz; bu yüzden ürünün farklı parçaları farklı sağlayıcılarda çalışabilir, hepsi de Avrupa’da.

Bundan daha kesin bir bilgi — belirli bir konum, şehir veya veri merkezi — bilerek burada verilmez, çünkü kimse fark etmeden güncelliğini yitirirdi.

Kendi sunucunuzda çalıştırmak seçimi size bırakır

Kendi sunucunuzda çalışan bir kurulumun nerede çalışacağı bir dağıtım ayarıdır, ürün ayarı değildir. Tek makineli yol, seçtiğiniz bir makineye kurduğunuz bir Docker Compose yığınıdır. Yönetilen bir bulut için hazırlanan Terraform yapısında bölge, hiçbir varsayılan değeri olmayan bir girdidir: orada tahmin edilebilecek hiçbir şey yoktur, bu yüzden hiçbir şeyin varsayılanı da yoktur; veritabanı, nesne depolama kovası ve hizmetlerin tümü belirttiğiniz bölgeyi izler.

Aynı soru için iki yapısal ayrıntı önemlidir. Kuyruk ve gerçek zamanlı iletim katmanı ikisi de PostgreSQL’dir; yolda Redis de, mesaj aracısı da yoktur, dolayısıyla konumlandırılacak üçüncü bir sistem yoktur. Nesne depolama da tek bir sağlayıcıya bağlı değil, S3 uyumludur; referans dağıtımda MinIO, kendine ait dışarıya açılan bir girişi olmayan özel bir ağda bir konteyner içinde çalışır. Bir yerde bulunması gereken parçalar veritabanı, nesne deposu ve iki Node hizmetidir; hepsi sizin koyduğunuz yerde çalışır. Bunun nasıl kurulacağı kurulum sayfasında anlatılıyor.

Nessie neyi tutar — ve bilerek neyi tutmaz

Kimlik kopyalanmaz

UnlikeOtherAI ile oturum açıldığında kişi kimliğini kimlik sağlayıcı yönetir ve saklar: kimlik doğrulama faktörleri, profiller, kuruluş ve ekip üyeliği ve davetler. Nessie ikinci bir kimlik sistemi değil, bağlı taraftır (relying party). Bu, mimari olduğu kadar bir veri kararıdır: Nessie’nin hiç saklamadığı bir kimlik, sızdırabileceği, kaybedebileceği veya silmeyi unutabileceği bir kimlik değildir.

users tablosunun gerçekte tuttukları şunlardır: sağlayıcının kalıcı kullanıcı tanımlayıcısı (diğer her şeyin üzerinden çözümlendiği anahtar), e-posta adresi, görünen ad ve avatarın yetkili olmayan bir yansıması ve ürüne özgü alanlar (tercihler, hitap zamirleri, oturumları iptal etmek için kullanılan bir belirteç sürümü). Yansıma yalnızca bir ad ve bir resim her satır için ayrı istek yapmadan gösterilebilsin diye vardır; girişte, ekip değiştirirken ve oturum yenilenirken sağlayıcının doğrulanmış bildirimlerinden yeniden eşitlenir. Hiçbir değer uydurulmaz: sağlayıcının bir ad vermediği kişi, verene kadar e-posta adresiyle görünür. Parola özeti yalnızca hiç kimlik sağlayıcısı olmayan bir kurulumun ilk sahibi için bulunur.

Aynısı yapı için de geçerlidir. Bir sağlayıcı kuruluşu bir Nessie kuruluşudur ve sağlayıcının kuruluş kimliğiyle bağlanır; üst tarafta bağlantısı olmayan bir ekip, yerel bir tahmine başvurmak yerine 404 TEAM_NOT_LINKED yanıtı verir ve canlı bir üye listesi okuması kimlik sağlayıcıya gider ve hiçbir şey saklamaz.

İki yansıma henüz kaldırılmadı ve aksini ima etmek dürüst olmazdı. Kuruluş ve ekip adları bağlama kimlikleriyle birlikte hâlâ yerelde saklanıyor ve yerel üyelik satırları, eşitlemeler arasında olağan istekleri hâlâ yetkilendiriyor. İkisinin de kaldırılması, tamamlanmış bir iş değil, depoda izlenen açık bir iştir.

Ticari hiçbir şey

Ödemeleri merkezi faturalama hizmeti yönetir. Nessie, ödeme sağlayıcısına ait müşteri, abonelik, fatura, fiyat, kredi bakiyesi, yükleme politikası, ödeme onayı, ekstre veya iptal durumu saklamaz ve tarife hesaplamaz. Gösterime hazır değerleri okur ve gösterir.

Gizli bilgiler

Bir gizli bilgiyi saklamak için yapılandırılmış bir kasa şarttır. Bilerek hiçbir veritabanı yedeği ve düz metin yolu yoktur: kasa olmadan bir gizli bilgiyi kaydetmek, döndürmek ve iptal etmek, daha az güvenli bir şeye düşmek yerine hata verir. Nessie’nin bir gizli bilgiye ait kendi kayıtları değer, şifreli metin, anahtar veya kasa belirteci içermez; yalnızca opak bir referans ve üst verisini tutar, kasa yolları da yalnızca yapısal tanımlayıcılardan oluşturulur, hiçbir zaman bir kuruluşun, ekibin, projenin veya kişinin adından oluşturulmaz.

Nessie’nin bir OAuth istemcisi olarak davranmak için kendisinin tutması gereken kimlik bilgileri — bağlayıcı ve posta kutusu kimlik bilgileri, webhook gizli anahtarları, oturum yenileme malzemesi, executor yükleri — oturum imzalama gizli anahtarından ayrı bir kök olan, sürümlü bir anahtar halkası altında, amaca bağlı AES-256-GCM zarflarında mühürlenir; belgelenmiş bir anahtar döndürme prosedürü vardır.

Modellerle ilgili de bir kural var: bir gizli bilginin var olduğu bilinebilir ve kullanımına yetki verilebilir, ancak gizli malzeme model bağlamına, istemlere, araç argümanlarına, araç sonuçlarına, belleğe, gömmelere, aramaya, günlüklere veya mesajlara giremez. Bir aracıya bir gizli bilgiyi kullanma yetkisi verilebilir. Onu açığa çıkarma yetkisi hiçbir zaman verilemez.

Altta yatan disklerin şifrelenip şifrelenmediği, dağıtımın üzerinde çalıştığı makinenin bir özelliğidir. Depo, veritabanı ve nesne depolama birimleri için birim düzeyinde şifrelemeyi kanıtlamaz; bu yüzden bu sayfa onu iddia etmez.

Kiracı yalıtımı

Nessie tasarım gereği çok kiracılıdır: tek bir veritabanı vardır; bunda her satır tam olarak bir kuruluşa aittir ve her alt tablo bir organization_id taşır. Yalıtım iki yerde uygulanır: her sorgunun taşıdığı kapsam koşulunda ve bu sütun üzerindeki gerçek yabancı anahtarlarda. Bu yabancı anahtarlar, bir iç denetim sütunun onlarca tabloda bulunduğunu ama kısıtlanmadığını saptadıktan sonra kırk iki kısıtlamayla eklendi.

Bir uygunluk test paketi bu değişmezi HTTP sınırında yerinde tutar. En üst yetkili bir saldırgan oluşturur — kendi kuruluşunun tam sahibi — ve başka bir kuruluşun kaynaklarına ilişkin her standart okumanın 403, 404 veya boş yanıt verdiğini, her standart değişikliğin ise diğer kuruluşun satırına dokunulmadan reddedildiğini doğrular. Kanallar, onaylar, denetim günlüğü, tetikleyiciler, aracılar ve bağlamaları, çalıştırmalar, projeler, görevler, konuşma dizileri, bağlantılar, iş akışı kurulumları, MCP örnekleri, bilgi tabanı ve uyarıları kapsar.

Mekanizmayı kesin biçimde söylemek gerekirse: bu, uygulama düzeyinde zorlama artı yabancı anahtarlardır; PostgreSQL satır düzeyinde güvenlik (RLS) değildir. Hiçbir RLS politikası ve veritabanı tarafında bir güvence yoktur; uygunluk test paketi de canlı bir veritabanına karşı değil, birebir bir bellek içi depoya karşı çalışır, dolayısıyla bir sunucunun yürüttüğü SQL’i değil, kodun yazdığı kapsam koşullarını kanıtlar. Depo bunu test paketinin kendi belgelerinde söyler, bu sayfa da söyler.

Denetim izi

Sonuç doğuran her eylem kaydedilir: kimin ve hangi sıfatla — bir kişi, bir aracı, bir hizmet — ne yaptığı, hangi kaynağa, hangi kuruluşta, projede, ekipte veya kanalda yaptığı, başarılı olup olmadığı ya da reddedilip reddedilmediği, nedeni ve isteğin geldiği istek kimliği, adres ve kullanıcı aracısı.

Günlük tasarım gereği yalnızca eklemeye açıktır ve dışarıdan ona yazmanın bir yolu yoktur: POST /api/audit-log yoktur ve bu bilinçli bir tercihtir. Girdiler zincirlenir — her biri kendi standart alanlarının SHA-256 özetini ve o kuruluş için bir önceki girdinin özetini taşır — dolayısıyla değiştirilen veya silinen bir satır zinciri bozar ve fark edilir. Bir kuruluşun sahibi ya da yöneticisi bu zinciri istediği zaman yürüyebilir ve zincir bozulduysa ilk nerede bozulduğu kendisine söylenir.

İki dürüst çekince. Zincir günlüğü kurcalamaya karşı görünür kılar, kurcalamaya karşı bağışık yapmaz: arkasında veritabanı düzeyinde yazma iptali veya bir kez yazılabilir depolama yoktur, bu yüzden güvence engellemek değil, tespit etmektir. Ayrıca girdiler varsayılan olarak süresiz saklanır — silmeden önce dışa aktarmayı içeren yapılandırılabilir saklama süresi tasarlanmıştır, ancak geliştirilmemiştir. Girdilerin gizli bilgi veya tam istek gövdesi taşıması da yasaktır ve belirli bir hassas üst veri alan adları kümesi girişte maskelenir.

Maliyet defteri

Her model çağrısı kuruluşa, ayrıca geldiği kullanıcıya, ekibe, projeye, kanala, aracıya ve çalıştırmaya karşı kaydedilir; harcanan belirteçler ve hem sağlayıcının bildirdiği maliyet hem de Nessie’nin kendi tahmini yan yana tutulur. Sağlayıcının bildirmediği bir ölçü tahmin edilmez, null olarak saklanır. Raporları bir kuruluş sahibi ya da yöneticisi okuyabilir.

Bu defter operasyonel telemetridir — bir kuruluşun neye ve kimin adına harcadığı. Fatura değildir ve faturalama otoritesi de değildir.

Üçüncü taraflar, barındırılan ürünü kullandığınızda

Barındırılan bir dağıtım, küçük ve sabit bir hizmet kümesiyle konuşur. Model trafiği ve web araması sağlayıcılara doğrudan gitmez: ikisi de UnlikeOtherAI’ın işlettiği tek bir ağ geçidinden çıkar; üst akıştaki model ve arama sağlayıcıları bunun ardındadır. Oturum açma ve faturalama UnlikeOtherAI’ın kimlik doğrulayıcısına gider. Gizli bilgi kasası uygulamayla birlikte kendi başına barındırılır. Sunucuda üretilen görüntülü görüşme bağlantıları varsayılan olarak herkese açık Jitsi hizmetini kullanır.

Geri kalan hemen her şey, bir işletmeci yapılandırana kadar kapalıdır ve sessizce başarısız olmak yerine bunu söyler: bağlı Google, Microsoft ve Slack hesapları; bir dağıtımın aracı olmadan kendi hesabında çalıştırdığı Amazon SES üzerinden aracı e-postası; mobil ve tarayıcı anlık bildirimleri; araştırma ve pano kaynağı bağlayıcıları; bulut tarayıcıları. İki ayrıntıyı belirtmekte fayda var, çünkü verinin nereye gideceğini değiştirirler:

  • Bağlı posta kutuları sağlayıcınızda kalır. Posta, sağlayıcınızdan canlı olarak okunur — IMAP ve SMTP üzerinden ya da sağlayıcının kendi oturum açma yoluyla; Nessie mühürlü kimlik bilgisini saklar ve hesaba dair başka hiçbir şey saklamaz. Clients gelen kutusuna bağladığınız posta kutusu bunun istisnasıdır: konuşmalarının her müşteriyle birlikte tutulmasını istersiniz, bu yüzden kopyalanırlar.
  • Uygulamadaki sesli aramalar Nessie üzerinden geçmez. API bir kimlik bilgisine aracılık eder ve istemci ses bağlantısını kendisi açar. Dikte ve telefon görüşmeleri farklıdır: sesleri Nessie üzerinden geçerek onu işleyen konuşma ve model sağlayıcılarına gider.

Bir çıkarım ayrıntısı da aynı ilkeyi izler: imzalı arayan-kimliği başlıkları yalnızca yapılandırılmış sohbet sunucusuna gönderilir; böylece gömmeleri farklı bir uç noktaya yönlendirmek, metni gömülen kişi hakkında o uç noktaya hiçbir zaman bir yetki devri iddiası vermez.

Barındırılan ürün birkaç çıkarım sağlayıcısı kullanır ve maliyet ile kalite açısından aralarından seçim yapar. Bir kuruluş yakında yönetim arayüzünde ajanlarının hangi sağlayıcıları kullanabileceğini seçebilecek: yalnızca Batılı, yalnızca Avrupalı, yalnızca Çinli ya da tercih yok — her iş için en verimli sağlayıcı. Kendi sunucusunda çalışan bir kurulum kendi seçimini yapar.

Kendiniz çalıştırmak bunların hepsini değiştirir

Yukarıdaki her üçüncü taraf, kendi sunucusunda çalışan bir kurulumda bir yapılandırma seçimidir. Çıkarım, kendi donanımınızdaki bir uç nokta dahil, OpenAI uyumlu herhangi bir uç noktaya yönlendirilebilir. Bağlayıcılar siz açmadıkça kapalıdır. UnlikeOtherAI ile oturum açma desteklenen yoldur ve hiç kimlik sağlayıcısı olmayan bir dağıtım, ilk sahibi olan tek bir bağlanmamış kuruluş olarak çalışır.

Düzenlemenin bütün amacı budur: yazılım aynıdır; nerede çalışacağına ve nelere erişebileceğine dair kararlar onu çalıştırana aittir. Nasıl yapılacağı kurulum sayfasında anlatılıyor.