Kaug-executorid
Andke agendile päris arvuti, millel töötada, Linuxis, macOS-is või Windowsis.
Mis on kaug-executor
Nessie agendil ei ole arvutit. Ta saab lugeda, mis Nessies on, suhelda inimestega ja kasutada ühendatud tööriistu võrgu kaudu, kuid ta ei saa avada faili sülearvutil, käivitada käsku ega vaadata lehte, mis on olemas ainult kellegi sisselogimise taga. Kaug-executor on viis, kuidas anda agendile masin, millega töötada.
Executor on väike deemon, mis paigaldatakse arvutisse, mille üle on kontroll. Ta loob väljuva ühenduse oma Nessie-eksemplariga, tõestab, milline masin ta on, võtmega, mis ei lahku kunagi arvutist, ja pakub seejärel kindlat, nimetatud operatsioonide komplekti — mitte midagi muud. Töö saabub üksikute allkirjastatud käskudena; tulemused tagastatakse piiratud ja struktureeritud kinnitustena. Masin ei võta kunagi vastu sissetulevaid ühendusi Nessiest.
Oluline on täpselt teada, mis executor ei ole, sest enamik kaugjuurdepääsu tööriistu on üks neist asjadest, executor aga tahtlikult ühtegi neist ei ole. Siin ei ole SSH-d, ei ole taustal töötavat kaugkesta, ei ole kinnitumist olemasolevale avatud terminali multiplekserile, ei ole pilvepoolset standardsisendit ega üldist kohtvõrgu puhverserverit. Executor ei ole MCP-server ega konteiner ega pilvepõhine täitmiskeskkond — Nessiel on need juba olemas ja need on hoopis teine asi. Executor on võimekust kandev lõpp-punkt, millel on suletud operatsioonide loend, ja see loend on kogu pind.
Kellele executor kuulub
Iga executor luuakse täpselt ühe ulatusega, mida hiljem muuta ei saa. Ulatus määrab, kes võib executorit käivitada ja kes seda hallata.
| Ulatus | Kes võib käivitada | Kes haldab juurdepääsu |
|---|---|---|
| Privaatne | Taotlev isik ja käivitatav agent peavad mõlemad olema määratud. Ükski neist üksi ei piisa. | Määratud inimesest administraator. Agendid saavad privaatset executorit ainult kasutada, mitte seda hallata. |
| Projekt | Isik, kellel on õigus just sellele projektile, ja ainult selle projekti käitusest. | Organisatsiooni haldur või projekti omanik või administraator. |
| Organisatsioon | Isik, kellel on organisatsioonis õigus. | Organisatsiooni haldur. |
Privaatsel executoril peab alati olema vähemalt üks aktiivne inimesest administraator. Viimase administraatori eemaldamine ebaõnnestub otse; kui lahkumise tehing jätaks ühegi järele, lakkab executor uute tööde vastuvõtmisest, lõpetab oma olemasoleva töö ja tühistab end ise. Organisatsiooni omanikul on ainult tühistamiseks mõeldud erakorraline tee, millega ta saab lõpetada executori, mida ta muidu ei halda, ilma et talle näidataks selle privaatset nimekirja, seansse või sisu. Privaatne juurdepääs ei lähe kunagi märkamatult kellelegi teisele üle.
Mida agent selle abil tegelikult teha saab
Operatsioonide loend on fikseeritud koodis, mitte seadistatud iga paigalduse kaupa. See jaguneb kaheks ja just see jaotus määrab, mida tuleb paigaldada: osa operatsioone teenindab deemon oma ajutisest kataloogist ilma virtuaalmasinata, ülejäänud vajavad hostil seansipõhist külalis-VM-i.
| Operatsioon | Mida see teeb | Külalis-VM |
|---|---|---|
file.list, file.read | Loetleb ja loeb faile ainult sidumisel valitud ühe tööruumi juurkausta all. | Ei |
file.write | Kirjutab selle tööruumi kopeerimisel-kirjutavasse mustandisse. Päris juurkausta kirjutamiseks ei avata seda kunagi. | Ei |
workspace.review | Teatab, mida mustand muutis — kuni 100 suhtelist teed koos tüübi ja baitide arvuga ning manifesti räsiga. Sisu see ei sisalda. | Ei |
sandbox.stop | Lammutab seansi, mis kuulub sellele käitusele. | Ei |
command.run | Käivitab ühe käsu argumendivektorina ilma kestata külalises, millel ei ole väljuvat liiklust. Selles teekonnas ei ole kusagil kestastringi. | Jah |
browser.open, browser.observe, browser.act | Juhib külalises brauserit masinal seadistatud lähtepunktide loendi järgi. Vaatlus tagastab piiratud juurdepääsetavuspuu ja valikulise vähendatud pildi; toimingud on navigeerimine, klõpsamine, sisestamine, klahvivajutus ja kerimine agendi just vaadeldud sõlme suhtes — mitte kunagi selektori, koordinaadi ega skriptina. | Jah |
coding.launch, coding.observe | Käivitab külalises hallatud Codex-seansi ja loeb tagasi tüübitud elutsükli oleku. Terminali ühendust ega sisestuskanalit ei ole: agent saab teada, kas seanss töötab, mitte seda, mis selle ekraanil on. | Jah |
workspace.promote | Rakendab läbivaadatud mustandi päris tööruumile. See on ainus operatsioon, mis kirjutab arvutisse, ja seda ei pakuta mudelitele üldse. | Ei |
Operatsioonid, mis ei vaja külalist, moodustavad tööruumi komplekti. Arvuti, mis ei saa külalist käivitada, ei ole katkine executor: ta sidub end tavapäraselt, teatab liivakasti taustaks none ja pakub ainult tööruumi komplekti ning mitte midagi muud. Sinna jõuavad näiteks Windowsi väljaanne ilma Hyper-V-ta või Linuxi masin, mille kasutaja ei saa kasutada /dev/kvm’i. Liides nimetab sellise olukorra selgelt, mitte ei jää ebaselgelt tõrkesse.
Brauseritööd agent ei alusta kunagi omal algatusel. Tavaline ühe operatsiooni sidumise tee keeldub otse operatsioonidest browser.open ja browser.observe; brauseri käitust käivitab inimene kanalist ühe neljast operatsioonist koosneva komplektina uuel käitusel, ja sellele ei saa hiljem enam sidumisi lisada. Hallatud koodiseansid toimivad samamoodi.
Koodis on veel kaks operatsioonigruppi, mis on tahtlikult kättesaamatud. Operatsioonid, millega juhitakse Chrome’i vahekaarti, millesse olete juba sisse loginud, on täielikult kohalikult realiseeritud ja olemas on natiivse sõnumivahetuse laiendus, kuid juhtimistasand ei reklaami neid enne, kui server suudab tõestada, et algatav vestlus oli privaatne, ja salvestada, kes mida avaldas. Alus on seetõttu tahtlikult passiivne ja laiendust ei ole kummaski paigaldusprogrammis. Samuti on mitu koodioperatsiooni — attach, prompt, interrupt ja close — skeemis nimetatud, kuid neil ei ole realisatsiooni, seega neid ei saa anda.
Kuidas see töötab
Ühendus on alati väljuv
Deemon loob väljuvaid HTTPS- ja WSS-ühendusi ainult Nessie API-ga ja mitte millegi muuga. Nessie ei helista kunagi sülearvutile, ei hoia selle aadressi ega käsitle ühtegi kataloogi lõpp-punkti masina edastusteena. Seetõttu töötab executor koduvõrgust, NAT-i taga, ettevõtte VPN-is, ilma pordi edastuseta ja ilma sissetuleva tulemüürireeglita ning deemoni peatamine on täielik ja kohene ühenduse katkestamine.
API päritolu peab olema HTTPS. Ainus erand on loopback-aadress neile, kes käitavad Nessiet oma masinas, selle oma keskkonnamuutuja taga; ükski tavaline lipp ei muuda tootmispäritolu lihtsaks HTTP-ks.
Sidumine tõestab masina ja inimene kinnitab selle
Sidumine on kahepoolne tõestus. Volitatud isik loob Nessies executori koos ulatusega ning Nessie väljastab registreerimise: 256-bitine juhuslik väljakutse, mille kohta Nessie salvestab ainult SHA-256 kontrollväärtuse. See kehtib 10 minutit ja on kasutatav üks kord.
Masinas genereerib deemon Ed25519 võtmepaari, salvestab selle omanikule ligipääsetavasse, OS-i kaitstud salvestusse ja kirjutab täpse allkirjastatud päringu kettale enne, kui teeb ühegi võrgukõne — nii saab kadunud vastust uuesti proovida sama ettevalmistatud võtmega, mitte vaikselt siduda kaks korda. Seejärel esitab deemon registreerimise ID, väljakutse, oma avaliku võtme ja allkirjatõendi. Nessie salvestab avaliku võtme ja selle sõrmejälje. Privaatset võtit ta kunagi ei salvesta.
Nessie näitab seejärel seda sõrmejälge inimesele, kes selle kinnitab. Kuni selle kinnituseni ja järgneva valduse tõendamiseni jääb executor võrguvälja. Sidumist ei saa lõpule viia vestlusteksti ega terminali väljavõttega: see nõuab tahtlikku inimtegevust veebi- või töölaualiideses.
Masin, mis kaotab oma võtme, ei saa oma executori kirjet tagasi nõuda. See tühistatakse ja registreeritakse uuesti uue executorina. Võtme vahetus seevastu on üks tehing, mis on allkirjastatud nii vana kui ka uue võtmega.
Kirjeldaja on masina allkirjastatud väide iseenda kohta
Sidutud deemon avaldab kirjeldaja: allkirjastatud, monotoonselt uuendatud väite ainult struktuursete faktide kohta — milliseid operatsioonide skeeme ta toetab, tema ressursi- ja võrgupiirangud, platvorm ning kohaliku reegli räsi. Kirjeldaja ei sisalda arvuti teid ega loo pilves ühtegi volitust.
Uut versiooni ei aktiveerita kunagi selle saabumisel. See salvestatakse ootele ülevaatusega ning volitatud isik peab selle nägema ja kinnitama, enne kui see saab mõjutada, mis on saadaval. Sellega takistatakse, et võimekuse värskendus vaikselt uut võimu ei anna: äsja reklaamitud operatsioon algab keelatuna.
Tuleb täpselt teada, mida allkiri tõestab. Paarinud executori võtmega allkirjastatud kirjeldaja tõestab ainult seda, et see võti tegi väite. See ei tõesta, et arvuti on puutumatu, ja liides peab seda ütlema.
Edastus: kandidaat, sidumine, käsk, kinnitus
Agent ei nimeta kunagi executorit. Enne kui käitus saab seda kasutada, lahendab Nessie loogilise operatsiooni kinnise, lühiajalise saadavuse kandidaadiks. Vastus ei sisalda executori ID-d; andmebaas hoiab ainult käepideme räsi koos sellega, kes ja mille jaoks see lahendati. Mudelid ja kliendid saavad käepideme, mitte valitavat masinat.
Saadavus on üks lahendaja, mida kasutavad identselt API, töötaja, kasutajaliides ja assistent:
available(operation, human, agent, immutableRunContext) =
human may discover executor
∩ exact executor-agent-operation grant allows operation
∩ stable logical tool grant allows operation
∩ scope matches immutable run context
∩ executor is online and descriptor is approved
∩ local policy permits operationKandidaadi tarbimine loob andmebaasi lukus sidumise, mis kontrollib uuesti kõiki neid väravaid ja suurendab monotoonset tõkendit. Edastus kontrollib neid veel kord. Tagajärg on see, et kui õigus on kahe sammu vahel tagasi võetud, reegel kitsendatud või executor tühistatud, peatatakse töö ega märgata seda alles hiljem — ja uuesti proovimine ei saa maanduda teisel masinal kui see, millele käitus oli seotud.
Käsk ise kulgeb Nessie tavalise järjekorratöö ja tööriistakutse elutsükli kaudu, mitte oma eraldi järjekorra kaudu. Deemon küsitleb tööd oma autenticeeritud juhtkanalil; teda ei lükata kunagi. Käsk liigub läbi nelja kinnituse ja ühtegi muud:
leased → accepted → started → result-acknowledgedIga kaader seob käsu ID, käitusepäritolu, sidumise tõkendi, võimekuse revisjoni, aegumise, idempotentsusvõtme ning argumentide ja sisu räsid. Deemon lükkab tagasi vastuolu, aegunud reegli, kordusedastuse või teise tulemuse käsule, mille ta on juba lõpetanud. Argumendid ja lõplikud tulemused krüpteeritakse puhkeolekus AES-256-GCM-ga; andmebaas hoiab piiratud šifreeritud teksti ja kanoonilisi räsisid, mitte sisu.
Kui kinnitus kaob, ei eelda Nessie edu. Käsk märgitakse tundmatu tulemusega ja käitus järgib tavalist taastamisteed; deemon, mis logib iga kohaletoimetatud käsu kohalikku päevikusse enne töö alustamist, ei kordu kõrvalmõju. Hiline kinnitus võib tundmatuse ausalt lahendada.
Usalduspiir
| Osaline | Võib | Ei või |
|---|---|---|
| Inimene | Siduda executori, hallata seda, kui on õigus, kinnitada juurdepääsu ja reeglite muudatusi. | Laiendada reeglit, mida masin ise keelab, ega tegutseda ilma kehtiva volituseta. |
| Agent, sh isiklik assistent | Kutsuda operatsiooni, mis on tema jaoks juba saadaval; valmistada ette juurdepääsumuudatuse ettepanek küsijale. | Hallata juurdepääsu, kinnitada iseend, valida masinat, muuta kohalikku reeglit ega rakendada muudatust, mille ta ise valmistas. |
| Nessie juhtimistasand | Lahendada saadavust, siduda käitust, anda käske välja ja hoida redigeeritud auditifakte. | Helistada masinale, laiendada kohalikku reeglit, jõuda arvuti mandaatideni või käsitleda terminali teksti volituse ega tulemusena. |
| Executori deemon | Jõustada kohalikku reeglit, siduda väljapoole, käivitada külaline ja lüüs ning kinnitada käske. | Laiendada oma ulatust, aktsepteerida vananenud või kordusedastatud tööd, avada otse arvuti tööruumi või mandaate ega saata toorandmeid auditijälge. |
| Külalis-VM ja selles olevad tööriistad | Töötada kopeerimisel-kirjutavas liivakastis, jõudes võrku ainult lüüsi kaudu. | Pääseda arvuti failidele, arvuti mandaatidele, otsesele võrgule või DNS-ile ega rakendada arvuti muudatust. |
Executori paigaldamine ja sidumine
Mac CLI paigaldatakse Homebrew’ga, Maci rakendused Homebrew casks’ina, Linuxi CLI APT või DNF kaudu ja Windowsi executor WinGet’iga. Igal sidutud meeskonnal on eraldi õigused, mis salvestatakse arvutile. Nessie kontrollib juurdepääsu meeskonna piires; kohalikke ressursse ta muuta ei saa.
Paigaldamise ja sidumise juhend sisaldab täpseid käske, kahepoolset kaheksanumbrilist koodivoogu, kohalikke seadeid, käivitamist, uuendusi ja eemaldamist.
Kui kaugele iga platvorm tegelikult jõudnud on
Kolme külalisliiva seisund erineb ja erinevus on oluline. macOS on taustaprogramm, millel on töötav ja kasutatud külalisrada. Linuxi Firecracker-taust ja Windowsi Hyper-V-taust on realiseeritud ja kaetud hostipoolsete testidega — käivitusjärjestuse, kettapiltide, juhtimis- ja väljumisedastuse kanalite ning mustandi protokolliga —, kuid ühtegi külalist ei ole selle projekti pidevas integratsioonis veel päris riistvaral käivitatud. Selleks on vaja masinat KVM- või Hyper-V-ga ja töid, mis seda tõestaksid, pole seni sellisel masinal käivitatud. Tööruum, mis külalist ei vaja, on Windowsis päris juhtimistsükli vastu otsast lõpuni testitud. Linuxi ja Windowsi külalisega toetatud operatsioone tuleb pidada tõestamata seniks, kuni need on oma riistvaral tõestatud. Nessie sidumisekraan ütleb sama oma sõnadega.
Turvalisus ja piiramine
Üks tööruumi juurkaust, ja selle tee jääb masinasse
Sidumisel valitakse täpselt üks kanooniline tööruumi juurkaust: üks kataloog, mitte kogum kaustu ega nende lähim ühine ülemkataloog. Nessie teatakse juurkausta baasnimest, et inimene saaks liidesest piiri ära tunda; täielik tee jääb ainult omaniku-privaatsesse masina olekusse ja seda ei laadita kunagi üles. Juurkausta muutmine on võimalik, kuid ainult pärast seda, kui kõik kohalikud mustandid ja liivakastid on eemaldatud, ning see loob uue kirjeldaja revisjoni, mis läbib sama inimliku ülevaatuse nagu iga muu reeglimuudatus. See ei laiene kunagi vaikselt ülemkataloogile.
Failitoimingud aktsepteerivad ainult suhtelisi teid. Need keelduvad kataloogist väljumise katsetest ja igast sümboolilise lingi komponendist, kontrollivad uuesti, et seadistatud juurkaust on endiselt tavaline kataloog, ning tagastavad piiratud struktureeritud tulemused, millel ei ole arvuti teed.
Kirjutamine läheb koopiasse ja ainult inimene rakendab selle
Agent ei kirjuta kunagi teie failidesse. file.write loob deemoni oma olekukataloogi alla piiratud kopeerimisel-kirjutava puu, seotuna käitusega, ning hilisemad lugemised ja loendid selle käitusega näevad mustandit. Külalistöö, sh koodiseansid, kasutab sama kopeerimisel-kirjutavat ajutist ruumi.
Mustandi rakendamine päris tööruumile on üks toiming — workspace.promote — ja see on süsteemi ainus kirjutamine arvutisse. Sellel ei ole mudelile suunatud skeemi üldse: ükski agent, assistent ega väljakutsuja antud tee ei saa mustandit muuta arvuti kirjutamiseks. Selle asemel avab inimene Teie läbivaadatud mustandid, vajutab nuppu Kontrolli rakendamist ja kinnitab oma praeguse parooliga. Server kontrollib seejärel uuesti kinnitatud ülevaatuse räsi, manifesti räsi, lähtekäitust, kasutajat ja agenti, volituse revisjoni, operatsiooni õigust ja aktiivset kohalikku reeglit, enne kui käsu loob. Masinas ehitab deemon manifesti ise uuesti ja keeldub räsist, mis on muutunud — nii ei saa pärast ülevaatust tehtud muudatus ülevaatuse kinnitusega kaasa tulla.
Rakendamine ise põhineb failikirjeldajatel ja seda logitakse. Natiivne abiline saab tööruumi juurkausta ja mustandi juba avatud kataloogikirjeldajatena, mitte teedena; ta kontrollib iga komponenti operatsioonidega, mis linke ei järgi, keeldub sümboolsetest linkidest, kõvadest linkidest, erifailidest ja failisüsteemi mount-punktide ületamisest ning peab kõik-või-taasta päevikut, nii et krahh kas lõpetab valideeritud manifesti või taastab algse enne mis tahes muud käivitamist.
Külalisel ei ole võrku ja väljuv liiklus on sunnitud
Kui toiming vajab külalist, on see seansipõhine Linuxi mikro-VM ilma hosti koduta, ilma Dockeri socketita, ilma SSH-agendita, ilma päritud keskkonnata ja ilma muu hosti mountita peale tööruumi jagamise. Käivitatav käitusmount on ainult lugemiseks; kirjutatav tööruumi mount keelab käivitamise, nii et kõik, mis käivitub, pärineb kontrollitud käituspaketist, mitte sellest, mida agent on kirjutanud. Külaline langeb enne mis tahes socketi avamist mitteprivilegeeritud identiteedile, ja juurkasutajale kuuluv jagamine nurjab alglaadimise, selle asemel et jätta privilegeeritud töö käima.
Kõige olulisem on see, et külalisel ei ole võrguliidest. Linuxis ei seadistata käivitusjärjestus kunagi võrku ja TAP-seadet ei looda; Windowsis eemaldatakse Hyper-V vaikimisi lisatav virtuaalne võrguadapter paigaldamise ajal. Külalise ainus tee arvutist välja on sisemine loopback-puhverserver, mis tunnelitakse virtuaalse pistiku kaudu hosti sillani, mis annab baidid edasi deemoni enda lüüsile — omaniku-privaatsele kohalikule pistikuvõrgule, millel ei ole TCP-kuulajat ega üldrežiimi edastust. Just see lüüs jõustab HTTP-, CONNECT-, WebSocketi-, ümbersuunamise-, päritolu-, allalaadimise- ja üleslaadimisreegleid, kasutades Nessie olemasolevat kinnitatud allalaadimismehhanismi, mitte teist sama reeglite realisatsiooni. NAT-silda ega otsest DNS-lahendajat ei ole: alternatiivne DNS, toorne TCP, QUIC ja puhverserveri möödaminek on kõik keelatud.
Lüüsi jõustatav päritolude loend seadistab masina omanik ja seda ei laadita tahtlikult kunagi üles. Liides nimetab selle puudumise selgelt, mitte ei tee nägu, nagu oleks Nessie päritolureeglite redaktor: et teada saada, mida brauseri executor tohib kasutada, tuleb küsida inimeselt, kes masinat omab.
Mandaadid
Hosti mandaatide salvestust ei paigutata kunagi külalisse. Mitte võtmehoidlat, mitte ~/.codex ega ~/.claude, mitte globaalset CLI-tokenit, mitte keskkonnamuutujat, mis kannab API-võtit. Ainus toetatud sisselogimine hallatud koodiseansile on omaniku-privaatne autentimisfail, mille sisu loeb ainult omaniku kontrollitud initrd-ehitaja — mitte kunagi Nessie, mitte kirjeldaja, mitte logi ega käsuargument — ja mis liigutatakse üks kord külalise sees olevasse privaatsesse koju, mis hävib koos VM-iga. See külaline pääseb ligi täpselt ühele päritolule.
Brauseri executor on veel rangem: iga seanss saab värske privaatse brauseriprofiili ja keeldub tööruumi poolt ette valmistatud profiilist, nii et algab ilma küpsiste, laienditeta ja sisselogitud olekuta.
Kohalikud toorandmed võivad jõuda mudeli pakkujani ainult selgesõnalise, piiritletud käitusega. Nessie salvestab redigeeritud manifestid, argumentide ja reeglite räsid, tulemuste räsid ning struktureeritud oleku. Failisisu, terminali väljundit, brauseri DOM-i, mandaate ja autentimisfaktoreid ei tohi andmebaasikirjetes, auditikirjetes, logides, reaalajasündmustes ega veateadetes olla.
Mida operaator annab ja kuidas ta selle tagasi võtab
Õigus executorit kasutada ei ole üks lüliti. Agent saab operatsiooni kutsuda ainult siis, kui tal on õigus just sellele executorile ja just sellele operatsioonile, ja tavaline loogilise tööriista reegel seda lubab, ja käitus ulatus sobib, ja masina enda kohalik reegel seda lubab. Ühe executori operatsiooni andmine ei anna õigust teisel, ja võimekuse värskendus ei saa midagi laiendada, sest uued operatsioonid saabuvad keelatuna.
Agendi juurdepääs ja jagamine jõustuvad kohe lehel endal, ilma kinnituse jätkamise, paroolikküsimuse ega uue autentimiseta. Executori vahekaardil Agendid lülitab haldur agendi juurdepääsu masinale sisse või välja otse; vahekaardil Jagamine annab haldur inimesele õiguse Saab kasutada või Administraator või laiendab kasutusõiguse projektile või kõigile praeguse meeskonna liikmetele samal viisil. Teie enda assistendi vestluses — ainult seal, mitte kunagi jagatud kanalis, ajastatud töös ega teise agendi käitusel — saab assistent selle asemel valmistada ette agendi juurdepääsu või määramise muudatuse, mis postitab selles vestluses kinnituskaardi. Mitte midagi ei muutu enne, kui vajutate sellel kaardil nuppu Luba juurdepääs, ja vestlustekst ei ole kunagi kinnituseks.
Kolm muudatust nõuavad siiski, et sisestaksite oma praeguse parooli kinnituse hetkel uuesti: kirjeldaja revisjoni aktiveerimine; assistendi valmistatud määramine, mis annab masina inimesele, mitte agendile; ja püsireegel, mis lubab kolleegidel omaniku nimel masinal käske käivitada — järelevalveta tööülesannete töö reegel. Masina ühenduse katkestamine või kustutamine tahtlikult kumbagi ei nõua, sest tapmislüliti ei tohi kunagi olla raskemini kättesaadav kui see, mida ta peatab. Ülevaadatud mustandi rakendamine nõuab parooli alati. Auditijälg salvestab tegutseva isiku ja assistendi osaluse eraldi.
Executor liigub läbi väikese, selgesõnalise olekute komplekti:
pending_pairing → online ↔ offline
│ ↓
└──────────→ draining → revoked
↓
errorPäise menüü Arvuti on koht, kus haldur valmistab ette iga elutsükli muudatuse: peatada, pärast peatamist jätkata, ühendus katkestada või kustutada. Peatamine jätab executori võrku, kuid peatab käskude vastuvõtmise. Ühenduse katkestamine tühistab selle kliendisertifikaadid ja kõik veel kehtivad kandidaatkäepidemed ning seda ei saa tagasi võtta — katkestatud executor registreeritakse uuesti uuena. Kustutamine teeb sama ja eemaldab lisaks executori nimekirjast; erinevalt katkestamisest pakutakse seda sõltumata executori olekust, sealhulgas ootel sidumise ja juba katkestatud executori puhul, sest see on ainus viis nimekirjast lahkuda. Tühjendamine — olemasoleva töö lõpetamine enne, kui see rohkem vastu võtab — on protokollis päris kolmas olek ja liides võib masinat sellises olekus näidata, kuid miski siin ei käivita seda: ainult otsene API-kutse teeb seda. Iga kinnitatud juurdepääsumuudatus, kirjeldaja ülevaatus ja elutsükli üleminek, sealhulgas tühjendamine, suurendab ka deemoni ühenduse ajastut, nii et selle järgmine juhtimisküsitlus — hiljemalt sekundi pärast — ebaõnnestub suletult ja peatab kõik elavad külalised enne, kui need saavad uuesti ühenduda. Tühistamine ei ole taotlus, mida masin võib ignoreerida.
Executori kasutamine
Tervise kontrollimine
Nessie enda vastus on elutundlikkus. Deemon allkirjastab südamelöögi ja executor, mille viimane autenticeeritud tegevus on vanem kui 60 sekundit, märgitakse püsivalt võrguvälisena enne, kui teda saab loetleda, valida või talle edastada. Executor, mis näitab end võrgus olevana, on end viimase minuti jooksul tõestanud.
Masinal ei ole tervise lõpp-punkti — deemon ei kuula kavatsuslikult ühtegi operaatorile nähtavat porti. macOS-is ja Linuxis küsige CLI-lt otse:
nessie-executor status # every paired executor, plus linger state
nessie-executor status <executorId>
systemctl --user status nessie-executor@<executorId>macOS-is annab olek teada iga meeskonna launchd-agendi oleku. systemctl-käsk on ainult Linuxis. Windowsis on teavitusala ikoon ühe pilguga vastus, selle menüü nimetab põhjuse ja teenuse logi sisaldab üksikasju. Mõlemal platvormil näitab Nessie executori vahekaardil Ülevaade selle kinnitatud profiile, andmepiiri, viimast nägemist ja ootel kohalikku reeglipakkumist, mis ootab ülevaatust.
Logid
| Platvorm | Asukoht |
|---|---|
| Linux | journalctl --user -u nessie-executor@<executorId>; deemonil ei ole oma logifaili |
| Windows | %ProgramData%\Nessie Executor\logs\service.log, mida teavitusala menüü Ava logikaust avab |
Iga keeldumine, millega inimene saab midagi peale hakata, jõuab sinna: allkirjastamata või muudetud käituskeskkond, olekukataloog, mida ei saa turvata, executor, mis ei käivitunud alglaadimisel. Sinna ei jõua kunagi sidumise väljakutse, võti ega alamprotsessi väljund. Logitaseme seadet, mida tõsta, ei ole, sest põhjalikumat taset ei ole, mida sisse lülitada.
Mac CLI kirjutab iga meeskonna teenuse logi asukohta ~/Library/Logs/NessieExecutor/<executorId>.log.
Uuendamine
CLI uuendatakse Homebrew, APT või DNF kaudu, seejärel taaskäivitatakse iga meeskonna teenus käskudega disable ja enable. WinGet uuendab Windowsi executorit. Otsesed Nessie Desktopi paigaldusprogrammid pakuvad rakendusesiseseid allkirjastatud uuendusi; MSI- ja Debiani paigaldused kasutavad oma paketihaldurit. Sidumised ja kohalikud õigused säilivad uuendustes.
Peatamine ja eemaldamine
Peatamine on viisakas tee, mida deemon ise haldab, mitte sundlõpetus. Deemon saab lõpetussignaali, lõpetab kõik külalise seansid, vabastab oma rendi ja väljub. Linuxis ootab üksus 15 sekundit kümne sekundi lõpetamise eelarve jaoks ega eskaleeru kunagi sundlõpetuseni (kill), mida ei saa püüda — sest deemon, mis tapetakse lõpetamise keskel, jätab mikro-VM-i ja tööruumi ülekatte maha ilma protsessita, mis neid koristaks. Peatus, mis jookseb kinni, on seega nähtav käsus systemctl --user status ega ole vaikne, ja eskaleerimine on selge inimlik otsus.
Linuxi paketi eemaldamiseks:
nessie-executor disable <executorId> # stops and disables the service
sudo apt remove nessie-executor
loginctl disable-linger # only if your user manager should stop running at boot tooWindowsis peatab ja eemaldab msiexec /x teenuse, selle registrikirjed ja teavitusala käivitamiskirje. Mõlemal platvormil jäetakse sidumise olek tahtlikult alles — Linuxis ~/.local/state/nessie-executor/, Windowsis %ProgramData%\Nessie Executor. Sidumine on masina võti ja allkirjastatud reeglirevisjon ning programmi eemaldamine ei ole taotlus neid hävitada; uuesti paigaldamisel leitakse nad samast kohast. Sidumise unustamiseks tuleb kaust käsitsi kustutada ja executor Nessies tühistada, et see ka teisest otsast lõpetada.
Windowsi teavitusala ja töölaua kaaslane pakuvad mõlemad täieõigusliku toimingu Unusta sidumine sellel arvutil: see peatab kohaliku deemoni, eemaldab masina võtme ja kausta valiku ning kustutab kohalikud mustandikoopiad jäädavalt pärast ühte natiivset kinnitust — jättes serveripoolse executori ja selle auditiajaloo omanikule hoida või tühistada.
Levinud tõrked
| Sümptom | Mida see tähendab |
|---|---|
| Executor paarib end, kuid pakub ainult failitoiminguid | Arvuti teatas, et kasutatavat liivakasti taustaprogrammi ei ole. Linuxis kontrollige, kas saate lugeda ja kirjutada /dev/kvm’i ja kas olete grupis kvm — pärast enda lisamist logige välja ja uuesti sisse. Windowsis on väljaandel Hyper-V puudu; see on väljaande omadus, mitte seadistus. |
| Executori juhtelemendid puuduvad täielikult | Ehitus ei ole kontrollitavalt pärit eeldatud väljaandjalt. Linuxis peab käituskeskkond olema juurkasutaja omanduses, ilma grupi- või kõigi kirjutamisõiguseta bitita; Windowsis ja macOS-is peab allkiri vastama ehitusse kinnitatud väljaandjale või meeskonnale. Iga neist keeldub sõnadega ja nimetab lahenduse, selle asemel et peita juhtelemendid. |
| Teenus töötab, kuid ei käivita deemonit ja keeldub igast käsust | Paigalduse midagi asendati pärast pakendamist. See on kavandatud käitumine: muudetud paigaldus vastab põhjusega, selle asemel et kaduda, sest peatatud teenus paneks teavitusala nimetama vale lahenduse. |
| Käitus lõpeb tundmatu tulemusega | Lõppkinnitus kadus. Nessie ei teata tulemust, mida ta ei saanud: käsk märgitakse tundmatuks, käitus järgib taastamisteed ja kõrvalmõju ei kordu. Hiline kinnitus deemonilt võib tundmatuse siiski lahendada. |
| Operatsioon, mis eile töötas, keeldutakse täna | Reegel muutus sidumise ja edastamise vahel ning kontrollid kordatakse igal sammul: õigus on tagasi võetud, kirjeldaja revisjon ootab ülevaatust, kohalik reegel on kitsendatud, ulatus ei sobi enam käitusega või toimub tühistamine. Keeldumine nimetab, milline neist. |
| Agent palub brauserit ja teda teavitatakse, et ta ei saa | Brauseri- ja koodiseansi töö käivitab inimene kanalist tervikliku komplektina uuel käitusel. Tavaline sidumistee keeldub neist tahtlikult ning brauseri operatsiooni ei saa lisada käitusele, mis juba midagi muud teeb. |