nessie

Izdelano v EU in kje so vaši podatki

Kje je Nessie izdelan, kje so vaši podatki in kaj nadzirate, če ga gostite sami.

Kdo ga gradi in po katerem pravu

Nessie gradi UnlikeOtherAI s.r.o., podjetje, registrirano na Češkem in delujoče po češkem pravu.

Ta stran opisuje, kako je programska oprema zgrajena in kje deluje. Ni izjava o skladnosti: Nessie nima nobene varnostne certifikacije in nič od tukaj zapisanega ne sme veljati za takšno izjavo. Katere osebne podatke obdelujemo in na kateri podlagi, ureja politika zasebnosti, ki je ločena stran.

Kje deluje gostovani izdelek

Nessie Cloud deluje pri evropskih ponudnikih gostovanja – Scaleway, Hetzner in drugih. Pri vsakem ponudniku izberemo najboljšo storitev, ki jo ponuja, zato lahko različni deli izdelka tečejo pri različnih ponudnikih, vsi v Evropi.

Karkoli natančnejšega – določeno lokacijo, mesto ali podatkovni center – tu namenoma ne navajamo, ker bi podatek zastarel, ne da bi kdo opazil.

Pri samostojnem gostovanju izbirate vi

Kje deluje samostojno gostovana namestitev, je nastavitev namestitve, ne nastavitev izdelka. Pot z enim računalnikom je sklop Docker Compose, ki ga postavite na računalnik po svoji izbiri. V drevesu Terraform za upravljani oblak je regija vhodni podatek brez privzete vrednosti: nič se tam ne ugiba, zato tam nič nima privzete vrednosti, podatkovna zbirka, vedro za objektno shrambo in storitve pa sledijo regiji, ki jo navedete.

Za isto vprašanje sta pomembni še dve strukturni podrobnosti. Čakalna vrsta in transport v realnem času sta oba PostgreSQL – na poti ni Redisa in ni posrednika sporočil, zato ni tretjega sistema, ki bi ga bilo treba umestiti. Objektna shramba je združljiva s S3 in ni vezana na enega ponudnika; referenčna namestitev poganja MinIO v vsebniku na zasebnem omrežju brez lastnega vhoda. Deli, ki morajo nekje živeti, so podatkovna zbirka, objektna shramba in obe storitvi Node, vsi pa živijo tam, kamor jih postavite vi. Kako to postaviti, piše na strani z navodili za namestitev.

Kaj Nessie hrani – in česa namenoma ne

Identitete ne podvajamo

Pri prijavi z UnlikeOtherAI človeško identiteto upravlja in hrani ponudnik identitete – dejavnike overjanja, profile, članstvo v organizaciji in ekipah ter povabila. Nessie je zaupajoča stranka, ne drugi sistem identitet. To je tako podatkovna kot arhitekturna odločitev: identiteta, ki je Nessie nikoli ne shrani, je ne more razkriti, izgubiti ali pozabiti izbrisati.

V tabeli users je dejansko shranjen stabilen identifikator uporabnika pri ponudniku – ključ, prek katerega se razrešuje vse ostalo –, e-poštni naslov, neavtoritativno zrcalo prikaznega imena in avatarja ter polja, specifična za izdelek (nastavitve, zaimki, različica žetona za preklic sej). Zrcalo obstaja le zato, da je mogoče prikazati ime in sliko brez zahteve za vsako vrstico, in se ponovno uskladi s preverjenimi trditvami ponudnika ob prijavi, ob zamenjavi ekipe in ob osvežitvi seje. Nič ne izmišlja vrednosti: oseba, ki je ponudnik ni poimenoval, nosi svoj e-poštni naslov, dokler je ne poimenuje. Zgoščena vrednost gesla obstaja le za začetnega lastnika namestitve, ki sploh nima ponudnika identitete.

Enako velja za strukturo. Ena organizacija pri ponudniku je ena organizacija v Nessie, vezana prek ID-ja organizacije pri ponudniku; ekipa brez povezave navzgor odgovori 404 TEAM_NOT_LINKED in ne zdrsne na lokalno ugibanje, branje žive liste članov pa gre k ponudniku identitete in ničesar ne shrani.

Dve zrcali še nista odpravljeni in bilo bi nepošteno namigovati drugače. Imena organizacij in ekip so še vedno shranjena lokalno ob ID-jih povezav, lokalne vrstice članstva pa med uskladitvami še vedno odobrijo običajne zahteve. Odprava obojega je evidentirano, odprto delo v repozitoriju, ne nekaj, kar bi bilo že končano.

Nič komercialnega

Plačila upravlja osrednja storitev za obračunavanje. Nessie ne hrani stranke pri ponudniku plačil, naročnine, računa, cene, stanja kreditov, pravil za dopolnitev, soglasja za plačilo, izpiska ali stanja odpovedi in ne izračunava tarif. Bere vrednosti, pripravljene za prikaz, in jih prikaže.

Skrivnosti

Za shranjevanje katere koli skrivnosti je potreben nastavljen trezor. Namenoma ni nadomestne rešitve v podatkovni zbirki in ni poti z golim besedilom: brez trezorja shranjevanje, rotacija in preklic skrivnosti vrnejo napako, namesto da bi se poslabšali v kaj manj varnega. Nessiejevi lastni zapisi o skrivnosti ne vsebujejo vrednosti, šifriranega besedila, ključa ali žetona trezorja – le neprozorno referenco in njene metapodatke – poti v trezorju pa so zgrajene samo iz strukturnih identifikatorjev, nikoli iz imena organizacije, ekipe, projekta ali osebe.

Poverilnice, ki jih mora Nessie hraniti sam, da lahko deluje kot odjemalec OAuth – poverilnice za konektorje in poštne predale, skrivnosti spletnih kljuk, material za osvežitev seje, vsebine izvajalcev –, so zapečatene v namensko vezanih ovojnicah AES-256-GCM pod naborom ključev z različicami, ki je ločen koren od skrivnosti za podpisovanje sej, z dokumentiranim postopkom rotacije.

Obstaja tudi pravilo za modele: skrivnost lahko poznamo kot obstoječo in je lahko odobrena za uporabo, vendar material skrivnosti ne sme vstopiti v kontekst modela, pozive, argumente orodij, rezultate orodij, spomin, vdelave, iskanje, dnevnike ali sporočila. Agentu je mogoče dodeliti pravico, da skrivnost uporablja. Nikoli pa mu ni mogoče dodeliti pravice, da jo razkrije.

Ali so diski pod njimi šifrirani, je lastnost računalnika, na katerem deluje namestitev. Repozitorij ne vzpostavlja šifriranja na ravni nosilca za nosilca podatkovne zbirke in objektne shrambe, zato te trditve ta stran ne podaja.

Izolacija najemnikov

Nessie je večnajemniški že po zasnovi: ena podatkovna zbirka, v kateri vsaka vrstica pripada natanko eni organizaciji in vsaka podrejena tabela nosi organization_id. Izolacija se uveljavlja na dveh mestih – v pogoju obsega, ki ga nosi vsaka poizvedba, in v pravih tujih ključih na tem stolpcu, ki smo jih dodali prek dvainštiridesetih omejitev, potem ko je notranja revizija ugotovila, da je stolpec na desetinah tabel prisoten, a brez omejitve.

Skladnostni sklop to invarianto drži na meji HTTP. Vanj vnese maksimalno privilegiranega napadalca – polnega lastnika svoje organizacije – in preveri, da vsako kanonično branje virov druge organizacije odgovori s 403, 404 ali praznim, vsaka kanonična mutacija pa je zavrnjena, vrstica druge organizacije pa ostane nedotaknjena. Zajema kanale, odobritve, revizijski dnevnik, sprožilce, agente in njihove vezave, zagone, projekte, naloge, niti, povezave, namestitve delovnih tokov, instance MCP, bazo znanja in opozorila.

Če smo natančni glede mehanizma: to je uveljavljanje na ravni aplikacije skupaj s tujimi ključi, ne varnost na ravni vrstic v PostgreSQL. Pravila RLS ni in ni zaščite na strani podatkovne zbirke, skladnostni sklop pa teče nad zvesto shrambo v pomnilniku in ne nad živo podatkovno zbirko, zato dokazuje pogoje obsega, ki jih zapiše koda, ne SQL-a, ki ga izvede strežnik. Repozitorij to navaja v dokumentaciji samega sklopa, prav tako ta stran.

Revizijska sled

Vsako pomembno dejanje je zabeleženo: kdo je ukrepal in kot kdo – oseba, agent, storitev –, kaj je storil, na katerem viru, v kateri organizaciji, projektu, ekipi ali kanalu, ali je uspelo ali je bilo zavrnjeno, zakaj ter ID zahteve, naslov in uporabniški agent, s katerimi je prispelo.

Dnevnik je po zasnovi samo dodajalen in vanj od zunaj ni mogoče pisati: POST /api/audit-log ne obstaja in to je namerno. Vnosi so verižno povezani – vsak nosi povzetek SHA-256 svojih kanoničnih polj in povzetek prejšnjega vnosa za to organizacijo –, zato spremenjena ali odstranjena vrstica prekine verigo in je zaznavna. Lastnik ali skrbnik organizacije lahko verigo po potrebi prehodi in izve, kje se je prvič prekinila, če se je.

Dva pošteno povedana pridržka. Veriga naredi dnevnik razkritelj posegov, ne odporen proti posegom: za njim ni preklica pisanja na ravni podatkovne zbirke ali shrambe z enkratnim pisanjem, zato je zagotovilo zaznava, ne preprečitev. In vnosi se privzeto hranijo neomejeno – nastavljivo hranjenje z izvozom pred brisanjem je zasnovano, ne zgrajeno. Vnosi tudi ne smejo nositi skrivnosti ali celih teles zahtev, fiksen nabor občutljivih imen polj metapodatkov pa se ob vnosu zakrije.

Knjiga stroškov

Vsak klic modela se zabeleži pri organizaciji ter pri uporabniku, ekipi, projektu, kanalu, agentu in zagonu, iz katerega izvira, s porabljenimi žetoni, poleg obeh – stroška, ki ga sporoči ponudnik, in Nessiejeve lastne ocene – hranjenih skupaj. Meritev, ki je ponudnik ne sporoči, je shranjena kot null in ne ugibana. Poročila lahko bere lastnik ali skrbnik organizacije.

Ta knjiga je operativna telemetrija – kaj je organizacija porabila in v čigavem imenu. Ni račun in ni obračunska avtoriteta.

Tretje strani, ko uporabljate gostovani izdelek

Gostovana namestitev komunicira z majhnim, določenim naborom storitev. Promet modelov in spletno iskanje ne gresta neposredno k ponudnikom: oba zapustita sistem prek enega prehoda, ki ga upravlja UnlikeOtherAI in za katerim so ponudniki modelov in iskanja. Prijava in obračunavanje gresta k UnlikeOtherAI-jevemu overitelju. Trezor skrivnosti je gostovan sam ob aplikaciji. Povezave za videoklice, ki jih ustvari strežnik, so privzeto na javni storitvi Jitsi.

Skoraj vse ostalo je izklopljeno, dokler operater tega ne nastavi, in to tudi pove, namesto da bi tiho odpovedalo: povezani računi Google, Microsoft in Slack; e-pošta agentov prek Amazon SES, ki jo namestitev poganja v svojem računu brez posrednika; potisna obvestila v mobilnih napravah in brskalnikih; konektorji za raziskovanje in vire za table nalog; brskalniki v oblaku. Dve podrobnosti je vredno navesti, ker spreminjata, kam gredo podatki:

  • Povezani poštni predali ostanejo pri vašem ponudniku. Pošta se bere sproti pri vašem ponudniku, prek IMAP in SMTP ali prek ponudnikove lastne prijave; Nessie shrani zapečateno poverilnico in nič drugega o računu. Poštni predal, ki ga povežete s predalom Strank, je izjema: zahtevate, da se njegovi pogovori hranijo ob vsaki stranki, zato se prekopirajo.
  • Glasovni klici v aplikaciji ne tečejo prek Nessie. API posreduje poverilnico, odjemalec pa sam odpre zvočno povezavo. Narekovanje in telefonski klici so drugačni: njihov zvok gre prek Nessie do ponudnikov govora in modelov, ki ga obdelajo.

Ena podrobnost pri sklepanju sledi istemu načelu: podpisane glave z identiteto klicatelja se pošiljajo samo nastavljenemu gostitelju klepeta, zato usmeritev vdelav na drug končni naslov temu končnemu naslovu nikoli ne preda trditve o delegiranju za osebo, katere besedilo se vdeluje.

Gostovani izdelek uporablja več ponudnikov sklepanja in med njimi izbira glede na ceno in kakovost. Organizacija bo lahko v skrbniškem vmesniku izbrala, katere ponudnike smejo uporabljati njeni agenti: samo zahodne, samo evropske, samo kitajske ali brez prednostne izbire – najučinkovitejši ponudnik za vsako opravilo. Samostojno gostovana instanca izbere sama.

Če ga poganjate sami, se vse to spremeni

Vsaka zgoraj omenjena tretja stran je pri samostojno gostovani instanci konfiguracijska izbira. Sklepanje je mogoče usmeriti na katerikoli končni naslov, združljiv z OpenAI, tudi na vašo lastno strojno opremo. Konektorji so izklopljeni, dokler jih ne vklopite. Prijava z UnlikeOtherAI je podprta pot, namestitev brez ponudnika identitete pa teče kot ena nevezana organizacija z začetnim lastnikom.

V tem je bistvo ureditve: programska oprema je enaka, odločitve o tem, kje deluje in do česa sme dostopati, pa pripadajo tistemu, ki jo poganja. Kako, opisuje stran z navodili za namestitev.