Attālinātie izpildītāji
Dodiet aģentam reālu datoru darbam — Linux, macOS vai Windows.
Kas ir attālais izpildītājs
Aģentam Nessie nav datora. Tas var lasīt to, kas atrodas Nessie, sarunāties ar cilvēkiem un izsaukt pievienotos rīkus tīklā, taču tas nevar atvērt failu klēpjdatorā, izpildīt komandu vai apskatīt lapu, kas pastāv tikai aiz kāda pieteikšanās. Attālais izpildītājs ir veids, kā aģentam dot mašīnu, ar kuru strādāt.
Izpildītājs ir neliels daemons, ko jūs instalējat datorā, kuru kontrolējat. Tas izveido savienojumu uz āru ar jūsu Nessie instanci, pierāda, kura mašīna tas ir, izmantojot atslēgu, kas nekad neatstāj resursdatoru, un pēc tam piedāvā fiksētu, nosauktu operāciju kopumu — nekas cits. Darbs ierodas kā atsevišķas parakstītas komandas; rezultāti atgriežas kā ierobežoti, strukturēti apliecinājumi. Mašīna nekad nepieņem ienākošu savienojumu no Nessie.
Ir svarīgi precīzi noteikt, ko izpildītājs nav, jo lielākā daļa attālās piekļuves rīku ir kāds no šiem, bet izpildītājs ir apzināti neviens no tiem. Nav SSH, nav vispārējas attālas čaulas, nav pievienošanās termināla multipleksoram, kas jau ir atvērts, nav mākoņa puses standartievades un nav vispārēja vietējā tīkla starpniekserveris. Tas nav MCP serveris, un tas nav konteiners vai mākoņa izpildes vide — Nessie tādus jau ir, un tie ir kas cits. Izpildītājs ir ar spējām apveltīts galapunkts ar slēgtu operāciju sarakstu, un šis saraksts ir viss tā darbības apjoms.
Kam pieder izpildītājs
Katrs izpildītājs tiek izveidots tieši ar vienu darbības jomu, un to vēlāk nevar mainīt. Tā nosaka, kas drīkst to izsaukt un kas drīkst to administrēt.
| Darbības joma | Kas drīkst to izsaukt | Kas pārvalda piekļuvi |
|---|---|---|
| Privāta | Pieprasītājam un tieši izsauktajam aģentam abiem jābūt nosauktiem kā norīkotajiem. Viens no tiem vien nav pietiekams. | Norīkots cilvēks administrators. Aģenti var izmantot tikai privātu izpildītāju, bet nekad to nevar administrēt. |
| Projekts | Persona, kurai ir tiesības uz tieši šo projektu, un tikai no izpildes šajā projektā. | Organizācijas pārvaldnieks vai projekta īpašnieks vai administrators. |
| Organizācija | Persona ar organizācijas tiesībām. | Organizācijas pārvaldnieks. |
Privātam izpildītājam vienmēr jābūt vismaz vienam aktīvam cilvēkam administratoram. Pēdējā administratora tiešā noņemšana neizdodas; ja atbrīvošanās darījums neatstātu nevienu, izpildītājs pārtrauc pieņemt jaunu darbu, izpilda to, kas tam jau ir, un pats sevi atsauc. Organizācijas īpašniekam ir tikai atsaukšanas avārijas ceļš, kas izbeidz izpildītāju, ko viņš citādi nepārvalda, neparādot viņam tā privāto sarakstu, sesijas vai saturu. Privātā piekļuve nekad netiek klusi nodota kādam citam.
Ko aģents patiesībā var ar to izdarīt
Operāciju vārdnīca ir fiksēta kodā, nevis konfigurēta katrā izvietojumā. Tā dalās divās daļās, un šī dalīšana nosaka, kas jums jāinstalē: dažas operācijas daemons apkalpo no sava pagaidu direktorija bez jebkādas virtuālās mašīnas, bet pārējām vajadzīga viesa VM katrai sesijai resursdatorā.
| Operācija | Ko tā dara | Viesa VM |
|---|---|---|
file.list, file.read | Uzskaita un lasa failus zem vienas darba vietas saknes, kas izvēlēta pārī savienošanas laikā. | Nē |
file.write | Raksta kopējamā (copy-on-write) melnrakstā šajā darba vietā. Tā nekad neatver īsto sakni rakstīšanai. | Nē |
workspace.review | Ziņo, ko melnraksts ir mainījis — līdz 100 relatīvajiem ceļiem ar veidu un baitu skaitu, kā arī manifesta jaucējvērtību. Tajā nav failu satura. | Nē |
sandbox.stop | Aptur sesiju, ko šī izpilde pārvalda. | Nē |
command.run | Izpilda vienu komandu kā argumentu vektoru bez čaulas viesī bez izejošā tīkla. Šajā ceļā nekur nav čaulas virknes. | Jā |
browser.open, browser.observe, browser.act | Vada pārlūkprogrammu viesī pret izcelsmju sarakstu, kas nokonfigurēts mašīnā. Novērošana atgriež ierobežotu pieejamības koku un pēc izvēles samazinātu attēlu; darbības ir pāriet, noklikšķināt, rakstīt, nospiest un ritināt, un tās attiecas uz mezglu, ko aģents tikko novēroja — nekad uz selektoru, koordinātēm vai skriptu. | Jā |
coding.launch, coding.observe | Sāk pārvaldītu Codex sesiju viesī un nolasa tipizētu dzīves cikla stāvokli. Nav termināļa pievienošanās un nav uzvedņu kanāla: aģents uzzina, vai sesija darbojas, bet ne to, kas ir tās ekrānā. | Jā |
workspace.promote | Piemēro pārskatītu melnrakstu īstajai darba vietai. Tā ir vienīgā operācija, kas raksta resursdatorā, un tā apzināti nav piedāvāta modeļiem vispār. | Nē |
Operācijas, kurām nav vajadzīgs viesis, ir darba vietas komplekts. Resursdators, kas nevar palaist viesi, nav bojāts izpildītājs: tas savienojas pārī normāli, ziņo, ka tā smilškastes backend ir none, un piedāvā tikai darba vietas komplektu un neko citu. Tieši šādā stāvoklī nonāk Windows izdevums bez Hyper-V vai Linux mašīna, kuras lietotājs nevar izmantot /dev/kvm, un saskarne to nosauc, nevis neskaidri neizdodas.
Pārlūkprogrammas darbu aģents nekad nesāk pats pēc savas iniciatīvas. Parastais maršruts vienas operācijas piesaistei atsakās no browser.open un browser.observe bez izņēmumiem; pārlūkprogrammas izpildi sāk persona no kanāla kā vienu četru operāciju komplektu jaunā izpildē, un pēc tam šai izpildei nevar pievienot nevienu piesaisti. Pārvaldītas kodēšanas sesijas darbojas tieši tāpat.
Kodā ir vēl divas grupas, un tās apzināti nav pieejamas. Operācijām, kas vada Chrome cilni, kurā jūs jau esat pieteicies, ir pilnīga vietējā realizācija un native-messaging paplašinājums, taču vadības plakne atsakās tās reklamēt, kamēr serveris nevar pierādīt, ka sākotnējā saruna bija privāta, un ierakstīt, kas ko atklājis. Pamats ir apzināti neaktīvs, un paplašinājums nav iekļauts nevienā instalētājā. Turklāt vairākas kodēšanas operācijas — attach, prompt, interrupt un close — ir nosauktas shēmā, bet nav realizētas, tāpēc tās nevar piešķirt.
Kā tas darbojas
Savienojums vienmēr ir izejošs
Daemons veido izejošus HTTPS un WSS savienojumus tikai ar jūsu Nessie API, un ne ar ko citu. Nessie nekad nedzen savienojumu uz klēpjdatoru, nekad neglabā tā adresi un nekad nelieto kāda kataloga galapunktu kā mašīnas transportu. Tāpēc izpildītājs darbojas no mājas tīkla, aiz NAT, korporatīvā VPN, bez porta pārsūtīšanas un bez ienākoša ugunsmūra noteikuma — un tāpēc daemona apturēšana ir pilnīga un tūlītēja atvienošanās.
API izcelsmei jābūt HTTPS. Vienīgais izņēmums ir atgriešanās adrese (loopback) cilvēkiem, kuri Nessie darbina paši savā mašīnā; to iespējo atsevišķs vides mainīgais. Neviens parasts karogs nepārvērš ražošanas izcelsmi par vienkāršu HTTP.
Savienošana pārī pierāda mašīnu, un persona to apstiprina
Savienošana pārī ir divpusējs pierādījums. Pilnvarota persona izveido izpildītāju Nessie ar tā darbības jomu, un Nessie izdod reģistrāciju: 256 bitu nejaušu izaicinājumu, no kura tā glabā tikai SHA-256 pārbaudes vērtību, derīgu desmit minūtes un izmantojamu vienu reizi.
Mašīnā daemons ģenerē Ed25519 atslēgu pāri, glabā tās īpašniekam pieejamā, OS aizsargātā krātuvē un uzraksta precīzo parakstīto pieprasījumu diskā pirms jebkāda tīkla izsaukuma — lai pazaudēta atbilde varētu tikt atkārtota ar to pašu sagatavoto atslēgu, nevis klusi savienota pārī divreiz. Pēc tam tas iesniedz reģistrācijas identifikatoru, izaicinājumu, savu publisko atslēgu un parakstu. Nessie glabā publisko atslēgu un tās pirkstu nospiedumu. Privāto atslēgu tā nekad neglabā.
Nessie pēc tam parāda šo pirkstu nospiedumu personai, kas to apstiprina. Līdz šim apstiprinājumam un vēlākai piederības pierādīšanai izpildītājs paliek bezsaistē. Savienošanu pārī nekad nevar pabeigt no tērzēšanas teksta vai termināļa žurnāla: tai vajadzīga apzināta cilvēka darbība tīmekļa vai darbvirsmas saskarnē.
Mašīna, kas pazaudē savu atslēgu, nevar atgūt savu izpildītāja ierakstu. Tas tiek atsaukts un reģistrēts no jauna kā jauns izpildītājs. Savukārt atslēgas rotācija ir viens darījums, ko paraksta gan vecā, gan jaunā atslēga.
Deskriptors ir mašīnas parakstīts apgalvojums par sevi
Savienots daemons publicē deskriptoru: parakstītu apgalvojumu ar monotoni augošu versiju, kas satur tikai strukturālus faktus — kuru operāciju shēmas tas atbalsta, tā resursu un tīkla ierobežojumus, platformu un tā lokālās politikas jaucējvērtību. Tajā nav resursdatora ceļu, un mākonī tas nerada nekādas pilnvaras.
Jauna versija nekad netiek aktivizēta, tiklīdz tā ierodas. To glabā kā gaidošu pārskatīšanai, un pilnvarotai personai tā jāredz un jāapstiprina, pirms tā var ietekmēt, kas ir pieejams. Tas neļauj spēju atjaunināšanai klusi piešķirt jaunas pilnvaras: jaunreklamēta operācija sākotnēji ir liegta.
Esiet skaidri par to, ko paraksts pierāda. Deskriptors, kas parakstīts ar savienota izpildītāja atslēgu, pierāda, ka šī atslēga izteica apgalvojumu. Tas nepierāda, ka resursdators nav apdraudēts, un saskarnei to jāpasaka.
Nosūtīšana: kandidāts, piesaiste, komanda, apstiprinājums
Aģents nekad nenorāda izpildītāju. Pirms izpildes var izmantot izpildītāju, Nessie loģisko operāciju pārvērš necaurspīdīgā, īsi derīgā pieejamības kandidātā. Atbildē nav izpildītāja identifikatora; datubāze glabā tikai roktura jaucējvērtību kopā ar to, kam un kam tas tika atrisināts. Modeļi un klienti saņem rokturi, nevis izvēlamu mašīnu.
Pieejamību nosaka viens risinātājs, ko vienādi izmanto API, darbinieks, lietotāja saskarne un asistents:
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 operationKandidāta izmantošana izveido piesaisti zem datubāzes slēdzenes, kas vēlreiz pārbauda katru no šiem vārtiem un paaugstina monotoni augošu fence numuru. Nosūtīšana tos pārbauda vēlreiz. Sekas: piešķīrums, kas atsaukts, politika, kas sašaurināta, vai izpildītājs, kas atsaukts starp diviem soļiem, aptur darbu, nevis tiek pamanīts tikai vēlāk — un atkārtojums nekad nevar nonākt citā mašīnā, nekā tā, kurai izpilde bija piesaistīta.
Pati komanda izmanto Nessie parasto rindas darbu un rīka izsaukuma dzīves ciklu, nevis savu otro. Daemons pieprasa darbu pa savu autentificēto vadības kanālu; daemonam darbs nekad netiek nosūtīts pašam. Komanda iziet cauri četriem apstiprinājumiem un nevienam citam:
leased → accepted → started → result-acknowledgedKatrs rāmis piesaista komandas identifikatoru, izpildes izcelsmi, piesaistes fence numuru, spēju versiju, derīguma termiņu, idempotences atslēgu un gan argumentu, gan lietderīgās slodzes jaucējvērtības. Daemons noraida neatbilstību, novecojušu politiku, atkārtojumu vai otru rezultātu komandai, ko tas jau ir pabeidzis. Argumenti un gala rezultāti glabāšanā tiek šifrēti ar AES-256-GCM; datubāze glabā ierobežotu šifrētu tekstu un kanoniskas jaucējvērtības, nevis saturu.
Ja apstiprinājums pazūd, Nessie nepieņem, ka darbība izdevusies. Komanda tiek ierakstīta kā nezināms rezultāts, un izpilde seko parastajam atkopšanas ceļam; daemons, kas katru piegādāto komandu vietēji ieraksta žurnālā, pirms sāk darbu, blakusefektu neatkārtos. Vēlu saņemts apstiprinājums joprojām var godīgi atrisināt neskaidrību.
Uzticamības robeža
| Dalībnieks | Var | Nevar |
|---|---|---|
| Persona | Savienot izpildītāju pārī, pārvaldīt to, ja ir tiesības, apstiprināt piekļuvi un politikas izmaiņas. | Paplašināt politiku, ko pati mašīna liedz, vai rīkoties bez pašreizējām tiesībām. |
| Aģents, arī personīgais asistents | Izsaukt operāciju, kas tam jau ir pieejama; sagatavot ierosinātu piekļuves izmaiņu personai, kas to lūdza. | Administrēt piekļuvi, apstiprināt sevi, izvēlēties mašīnu, mainīt lokālo politiku vai piemērot izmaiņu, ko tas pats sagatavoja. |
| Nessie vadības plakne | Atrisināt pieejamību, piesaistīt izpildi, izsniegt komandas, glabāt redigētus revīzijas faktus. | Piezvanīt mašīnai, paplašināt lokālo politiku, sasniegt resursdatora akreditācijas datus vai uzskatīt termināļa tekstu par pilnvarojumu vai rezultātu. |
| Izpildītāja daemons | Ievērot lokālo politiku, savienoties pārī uz āru, palaist viesi un vārteju, apstiprināt komandas. | Paplašināt savu darbības jomu, pieņemt novecojušu vai atkārtotu darbu, tieši atklāt resursdatora darba vietu vai akreditācijas datus vai nosūtīt neapstrādātus lokālos datus revīzijas žurnālā. |
| Viesa VM un tajā esošie rīki | Strādāt kopējamā (copy-on-write) smilškastē, sasniedzot tīklu tikai caur vārteju. | Sasniegt resursdatora failus, resursdatora akreditācijas datus, tiešu tīklu vai DNS, vai piemērot izmaiņu resursdatorā. |
Izpildītāja uzstādīšana un savienošana pārī
Uzstādiet Mac CLI ar Homebrew, Mac lietotnes ar Homebrew casks, Linux CLI caur APT vai DNF, vai Windows izpildītāju caur WinGet. Katrai savienotajai komandai ir atsevišķas atļaujas, kas glabājas datorā. Nessie kontrolē piekļuvi komandas ietvaros; tā nevar mainīt lokālos resursus.
Uzstādīšanas un savienošanas pārī ceļvedis sniedz precīzas komandas, divpusējo astoņu ciparu koda plūsmu, lokālos iestatījumus, palaišanu, atjauninājumus un noņemšanu.
Cik tālu katra platforma patiesībā ir pārbaudīta
Trīs viesa smilškastu stāvoklis atšķiras, un atšķirība ir būtiska. macOS ir backend ar darbojošos un izmēģinātu viesa ceļu. Firecracker backend Linux un Hyper-V backend Windows ir realizēti un aptverti ar resursdatora pusē veiktiem testiem — palaišanas secība, diska attēli, vadības un izejas transporti, melnraksta protokols —, taču neviens viesis vēl nav palaists uz reāla aparatūras šī projekta nepārtrauktajā integrācijā, jo tam vajadzīga mašīna ar KVM vai Hyper-V, un pārbaudes darbiem, kas to pierādītu, šāda mašīna nekad nav bijusi. Darba vietas komplekts, kam viesis nav vajadzīgs, ir pilnībā izmēģināts Windows vidē pret reālu vadības ciklu. Traktējiet viesī balstītas operācijas Linux un Windows kā nepierādītas, līdz esat tās pierādījuši savā aparatūrā. Nessie savienošanas pārī ekrāns to pasaka savos vārdos.
Drošība un izolācija
Viena darba vietas sakne, un tās ceļš paliek mašīnā
Savienošana pārī izvēlas tieši vienu kanonisku darba vietas sakni: vienu direktoriju, nevis failu kopu, un nekad nevienu tuvāko kopīgo vecākdirektoriju. Nessie tiek pastāstīts saknes pamatnosaukums, lai persona saskarnē varētu atpazīt robežu; pilnais ceļš paliek īpašnieka pieejamā mašīnas stāvoklī un nekad netiek augšupielādēts. Saknes maiņa ir iespējama, taču tikai pēc tam, kad ir noņemti visi lokālie melnraksti un smilškastes, un tā rada jaunu deskriptora versiju, kas iet caur to pašu cilvēka pārskatīšanu kā jebkura cita politikas izmaiņa. Tā nekad klusi nepaplašinās līdz vecākdirektorijai.
Failu darbības pieņem tikai relatīvus ceļus. Tās noraida pārvietošanos augšup pa direktorijām un katru simbolisko saites komponentu, no jauna pārbauda, vai konfigurētā sakne joprojām ir parasts direktorijs, un atgriež ierobežotus strukturālus rezultātus bez resursdatora ceļa.
Ieraksti iet uz kopiju, un tikai persona tos piemēro
Aģents nekad neraksta jūsu failos. file.write izveido ierobežotu kopējamu (copy-on-write) koku zem paša daemona stāvokļa direktorijas, piesaistītu izpildei, un vēlākie lasījumi un uzskaitījumi šai izpildei redz melnrakstu. Viesa darbs, arī kodēšanas sesijas, izmanto to pašu kopējamo (copy-on-write) pagaidu vietu.
Melnraksta piemērošana īstajai darba vietai ir viena darbība — workspace.promote — un tā ir vienīgais resursdatora ieraksts sistēmā. Tai nav nekādas shēmas, kas būtu redzama modelim: neviens aģents, asistents un neviens izsaucēja nodrošināts ceļš nevar pārvērst melnrakstu resursdatora ierakstā. Tā vietā persona atver Jūsu pārskatītie melnraksti, nospiež Pārskatīt piemērošanu un apstiprina ar savu pašreizējo paroli. Serveris tad pārbauda apstiprināto pārskatīšanas jaucējvērtību, manifesta jaucējvērtību, izcelsmes izpildi, lietotāju un aģentu, pilnvarojuma versiju, operācijas piešķīrumu un aktīvo lokālo politiku, pirms izveido komandu. Mašīnā daemons pats pārveido manifestu un noraida jaucējvērtību, kas mainījusies — tādējādi pēc pārskatīšanas veikta rediģēšana nevar pārvietoties zem pārskatīšanas apstiprinājuma.
Pati piemērošana balstās uz deskriptoriem un tiek žurnalizēta. Natīvais palīgs saņem darba vietas sakni un melnrakstu kā jau atvērtus direktoriju deskriptorus, nevis kā ceļus; tas pārbauda katru komponentu ar darbībām bez sekošanas (no-follow), noraida simboliskās saites, cietās saites, speciālos failus un montēšanas punktu šķērsošanu un uztur visu-vai-atjaunošanas žurnālu, tā ka avārija vai nu pabeidz pārbaudīto manifestu, vai atjauno sākotnējo stāvokli pirms jebkā cita palaišanas.
Viesim nav tīkla, un izeja ir piespiesta
Ja operācijai tiešām vajadzīgs viesis, tā ir viena Linux mikro-VM katrai sesijai bez resursdatora mājas direktorijas, bez Docker socket, bez SSH aģenta, bez mantotas vides un bez resursdatora montējuma, izņemot darba vietas kopīgojumu. Izpildāmais izpildlaika montējums ir tikai lasāms; rakstāmais darba vietas montējums aizliedz izpildi, tāpēc viss, kas tiek palaists, nāk no pārbaudītās izpildlaika kravas, nevis no tā, ko rakstījis aģents. Viesis pirms jebkura sokela atvēršanas pāriet uz nepriviliģētu identitāti, un root īpašumā esošs kopīgojums liek palaišanai neizdoties, nevis atstāt darbojoties privileģētu darba slodzi.
Vissvarīgākais: viesim nav tīkla saskarnes. Linux palaišanas secība apzināti nekad nekonfigurē tīklu, un TAP ierīce netiek izveidota; Windows virtuālais tīkla adapteris, ko Hyper-V noklusēti pievieno, uzstādīšanas laikā tiek noņemts. Viesa vienīgais ceļš ārā no mašīnas ir atgriešanās starpniekserveris viesa iekšienē, ko tunelē pa virtuālu soketu uz tiltu resursdatorā, kurš baitus nodod daemona pašam vārtejam — tikai īpašniekam pieejamam lokālam soketa klausītājam bez TCP klausītāja un bez vispārēja pārsūtīšanas režīma. Šī vārteja ir vieta, kur tiek piespiesta politika attiecībā uz HTTP, CONNECT, WebSocket, pāradresāciju, izcelsmi, lejupielādi un augšupielādi, izmantojot esošo Nessie pinned-fetch mehānismu, nevis otru šo pašu noteikumu realizāciju. NAT tilta nav, un tiešā DNS atrisinātāja nav: alternatīvais DNS, neapstrādāts TCP, QUIC un starpniekservera apiešana ir visi liegti.
Izcelsmju saraksts, ko šī vārteja piespiež, ir konfigurēts mašīnā tās īpašnieka un apzināti nekad netiek augšupielādēts. Saskarne to atzīmē kā trūkumu, nevis liekas, ka Nessie ir izcelsmes politikas redaktors: lai uzzinātu, kur pārlūkprogrammas izpildītājs drīkst piekļūt, jautājiet personai, kurai pieder mašīna.
Akreditācijas dati
Resursdatora akreditācijas datu krātuve nekad netiek montēta viesī. Ne atslēgu ķēde, ne ~/.codex vai ~/.claude, ne globāls CLI marķieris, ne vides mainīgais ar API atslēgu. Vienīgā atbalstītā pieteikšanās pārvaldītai kodēšanas sesijai ir īpašniekam privāts autentifikācijas fails, kura saturu lasa vienīgi īpašnieka kontrolēts initrd veidotājs — nekad Nessie, nekad deskriptors, nekad žurnāls vai komandas arguments — un to vienreiz pārvieto uz privātu mājas direktoriju viesī, kas tiek iznīcināts kopā ar VM. Šis viesis var sasniegt tieši vienu izcelsmi.
Pārlūkprogrammas izpildītājs ir vēl stingrāks: katra sesija saņem jaunu privātu pārlūkprogrammas profilu un noraida profilu, ko sagatavojusi darba vieta, tāpēc tā sākas bez sīkdatnēm, paplašinājumiem un bez jebkāda pieteikšanās stāvokļa.
Neapstrādāti lokāli dati var nonākt pie modeļa nodrošinātāja tikai iekšā skaidri norādītā, ierobežotā izpildē. Nessie saglabā tikai redigētus manifestus, argumentu un politikas jaucējvērtības, rezultātu jaucējvērtības un strukturētu statusu. Failu saturs, termināļa izvade, pārlūkprogrammas DOM, akreditācijas dati un autentifikācijas faktori ir aizliegti datubāzes ierakstos, revīzijas ierakstos, žurnālos, reāllaika notikumos un kļūdu ziņojumos.
Ko operators piešķir un kā to atsauc
Atļauja izmantot izpildītāju nav viens slēdzis. Aģents var izsaukt operāciju tikai tad, ja tam ir piešķīrums tieši šim izpildītājam un tieši šai operācijai, un parastā loģiskā rīka politika to atļauj, un izpildes darbības joma sakrīt, un mašīnas pašas lokālā politika to atļauj. Piešķīrums vienam izpildītājam nedod nekādas tiesības citā, un spēju atjaunināšana nevar neko paplašināt, jo jaunās operācijas sākas liegtas.
Aģenta piekļuve un koplietošana stājas spēkā uzreiz pašā lapā, bez apstiprinājuma turpinājuma, paroles pieprasījuma vai jaunas autentifikācijas soļa. Izpildītāja cilnē Aģenti pārvaldnieks ieslēdz vai izslēdz aģenta piekļuvi mašīnai tieši; cilnē Koplietošana viņš piešķir personai tiesības Var izmantot vai Administrators, vai paplašina lietošanu uz projektu vai visiem pašreizējās komandas dalībniekiem tādā pašā veidā. Jūsu pašu asistenta sarunā — tikai tur, nekad kopīgā kanālā, plānotā darbā vai cita aģenta izpildē — asistents tā vietā var sagatavot aģenta piekļuves vai norīkojuma izmaiņu, kas ievieto apstiprinājuma kartīti šajā sarunā; nekas nemainās, līdz nospiežat Atļaut piekļuvi uz tās, un tērzēšanas teksts nekad nav apstiprinājums.
Trīs izmaiņām joprojām jāievada pašreizējā parole brīdī, kad tās apstiprina: aktivizējot deskriptora versiju; asistenta sagatavotu norīkojumu, kas mašīnu piešķir personai, nevis aģentam; un pastāvīgu politiku, kas ļauj kolēģiem palaist komandas šajā mašīnā kā tās īpašniekam — neuzraudzītas biļešu darba politiku. Mašīnas atvienošana vai dzēšana tīši neprasa nevienu no tiem, jo avārijas slēdzim nekad nedrīkst būt grūtāk sasniedzamam nekā tam, ko tas aptur. Pārskatītā melnraksta piemērošana vienmēr prasa paroli. Revīzijas žurnāls atsevišķi ieraksta darbojošos personu un asistenta līdzdalību.
Izpildītājs pārvietojas caur nelielu, skaidri noteiktu stāvokļu kopumu:
pending_pairing → online ↔ offline
│ ↓
└──────────→ draining → revoked
↓
errorGalvenes izvēlne Dators ir vieta, kur pārvaldnieks sagatavo katru dzīves cikla izmaiņu: apturēt, atsākt pēc apturēšanas, atvienot vai dzēst. Apturēšana atstāj izpildītāju tiešsaistē, bet pārtrauc tā komandu pieņemšanu. Atvienošana anulē tā klienta sertifikātus un katru neizpildīto kandidāta rokturi, un to nevar atsaukt — atvienotu izpildītāju atkārtoti savieno pārī kā jaunu. Dzēšana dara to pašu un vēl noņem izpildītāju no saraksta; atšķirībā no atvienošanas tā tiek piedāvāta neatkarīgi no izpildītāja stāvokļa, arī gaidošai savienošanai pārī un jau atvienotam, jo tas ir vienīgais veids, kā tas pamet sarakstu. Izvadīšana — pabeigt jau saņemto darbu, pirms pārtraukt jaunu pieņemšanu — protokolā ir īsts trešais stāvoklis, un saskarne to var parādīt, taču šeit nekas to neuzsāk: to dara vienīgi tiešs API izsaukums. Katra apstiprināta piekļuves izmaiņa, deskriptora pārskatīšana un dzīves cikla pāreja, arī izvadīšana, palielina daemona savienojuma laikmetu, tāpēc tā nākamā vadības aptauja — ne vairāk kā pēc sekundes — neizdodas slēgtā veidā un aptur visus aktīvos viesus, pirms tie var atkal pieslēgties. Atsaukšana ir pieprasījums, ko mašīna nedrīkst ignorēt.
Izpildītāja darbināšana
Pārbaude, vai tas darbojas
Nessie pati nosaka dzīvumu. Daemons paraksta pulsa signālu, un izpildītājs, kura pēdējā autentificētā aktivitāte ir vecāka par sešdesmit sekundēm, pirms to var uzskaitīt, izvēlēties vai nosūtīt tam darbu, tiek pastāvīgi atzīmēts kā bezsaistē. Izpildītājs, kas rādās kā tiešsaistē, ir pierādījis sevi pēdējā minūtē.
Resursdatorā nav veselības galapunkta — daemons apzināti neklausās nevienu ostu, kas paredzēta operatoram. macOS un Linux pajautājiet CLI tieši:
nessie-executor status # every paired executor, plus linger state
nessie-executor status <executorId>
systemctl --user status nessie-executor@<executorId>macOS statuss ziņo par katras komandas launchd aģentu. systemctl komanda ir tikai Linux. Windows paziņojumu apgabala ikona ir ātrā atbilde, tās izvēlnē ir nosaukts iemesls, un pakalpojuma žurnālā ir sīkāka informācija. Abās platformās izpildītāja cilnē Pārskats Nessie rāda tā apstiprinātos profilus, datu robežu, kad tas pēdējoreiz redzēts, un jebkuru gaidošu lokālās politikas priekšlikumu pārskatīšanai.
Žurnāli
| Platforma | Atrašanās vieta |
|---|---|
| Linux | journalctl --user -u nessie-executor@<executorId>; daemons neglabā savu žurnāla failu |
| Windows | %ProgramData%\Nessie Executor\logs\service.log, ko atver paziņojumu apgabala ikonas Atvērt žurnālu mapi |
Katrs atteikums, ar ko persona var rīkoties, nonāk tur: parakstīts vai pārveidots izpildlaiks, stāvokļa direktorija, ko nevar nodrošināt, izpildītājs, kas neiesākās palaišanas brīdī. Tur nekad nenonāk izaicinājums savienošanai pārī, atslēga vai bērnprocesa izvade. Nav žurnāla līmeņa iestatījuma, ko paaugstināt, jo nav nekā detalizētāka, ko ieslēgt.
Mac CLI katras komandas pakalpojuma žurnālu raksta uz ~/Library/Logs/NessieExecutor/<executorId>.log.
Atjaunināšana
Atjauniniet CLI caur Homebrew, APT vai DNF, pēc tam restartējiet katras komandas pakalpojumu ar disable un pēc tam enable. WinGet atjaunina Windows izpildītāju. Tiešie Nessie Desktop instalētāji piedāvā parakstītus atjauninājumus lietotnē; MSI un Debian instalācijas izmanto savu pakotņu pārvaldnieku. Savienojumi pārī un lokālās atļaujas saglabājas pēc atjauninājumiem.
Apturēšana un noņemšana
Apturēšana ir graciozs ceļš, ko kontrolē daemons, nevis nogalināšana. Tas saņem izbeigšanas signālu, aptur katru viesa sesiju, atbrīvo savu nomu un iziet. Linux vienība gaida piecpadsmit sekundes, lai desmit sekunžu demontāžas budžets varētu tikt pabeigts, un apzināti nekad neeskalē līdz nenotveramai nogalināšanai — jo daemons, kas nogalināts demontāžas vidū, atstātu nomaldījušos mikro-VM un darba vietas pārklājumu bez procesa, kas tos notīrītu. Apturēšana, kas aizķeras, tādēļ ir redzama systemctl --user status, nevis klusa, un eskalēšana ir skaidrs cilvēka lēmums.
Lai noņemtu Linux pakotni:
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 tooWindows msiexec /x aptur un noņem pakalpojumu, tā reģistra ierakstus un paziņojumu apgabala ikonas startēšanas ierakstu. Abās platformās savienotais stāvoklis apzināti paliek aiz sevis — ~/.local/state/nessie-executor/ Linux un %ProgramData%\Nessie Executor Windows. Savienojums pārī ir mašīnas atslēga un parakstīta politikas versija, un programmas atinstalēšana nav pieprasījums tās iznīcināt; pārinstalējot tās atrod tur, kur tās bija. Lai aizmirstu savienojumu pārī, dzēsiet direktoriju ar roku, un atsauciet izpildītāju Nessie, lai to izbeigtu no otras puses.
Windows paziņojumu apgabala ikona un darbvirsmas palīgs abi piedāvā Aizmirst savienojumu pārī šajā datorā kā pirmās šķiras darbību: tā aptur lokālo daemonu, noņem mašīnas atslēgu un mapes izvēli un neatgriezeniski dzēš lokālās melnrakstu kopijas pēc vienas vietējās apstiprināšanas — vienlaikus atstājot serverpuses izpildītāju un tā revīzijas vēsturi īpašniekam, lai tos paturētu vai atsauktu.
Biežākās kļūmes
| Simptoms | Ko tas nozīmē |
|---|---|
| Izpildītājs tiek savienots pārī, bet piedāvā tikai failu operācijas | Resursdators nav ziņojis par lietojamu smilškastes backend. Linux pārbaudiet, vai varat lasīt un rakstīt /dev/kvm un vai esat kvm grupā — pēc pievienošanas grupai izrakstieties un pieteikieties atkārtoti. Windows izdevumam nav Hyper-V; tas ir izdevums, nevis iestatījums. |
| Izpildītāja vadīklas pilnībā trūkst | Būve nav pārbaudāma no paredzētā izdevēja. Linux izpildlaikam jābūt root īpašumā, bez grupas vai pasaules rakstīšanas bita; Windows un macOS parakstam jāatbilst izdevējam vai komandai, kas piesaistīta būvei. Katrs no šiem atsakās vārdos un nosauc risinājumu, nevis paslēpj vadīklas. |
| Pakalpojums darbojas, bet nepalaiž daemonu un noraida katru komandu | Kaut kas instalācijā tika aizstāts pēc paketēšanas. Tā ir paredzētā uzvedība: pārveidota instalācija atbild ar iemeslu, nevis pazūd, jo apturēts pakalpojums liktu paziņojumu apgabalam nosaukt nepareizu risinājumu. |
| Izpilde beidzas ar nezināmu rezultātu | Gala apstiprinājums ir pazudis. Nessie nepaziņos rezultātu, ko nav saņēmis: komanda tiek atzīmēta kā nezināma, izpilde iet atkopšanas ceļā, un blakusefekts netiek atkārtots. Vēlu saņemts apstiprinājums no daemona joprojām var to atrisināt. |
| Operācija, kas vakar strādāja, šodien tiek noraidīta | Vārti mainījās starp piesaisti un nosūtīšanu, un pārbaudes tiek atkārtotas katrā solī: atsaukts piešķīrums, deskriptora versija, kas gaida pārskatīšanu, sašaurināta lokālā politika, darbības joma, kas vairs neatbilst izpildei, vai atsaukšana. Kļūda nosauc, kurš no tiem. |
| Aģents pieprasa pārlūkprogrammu un tam saka, ka tā nevar | Pārlūkprogrammas un kodēšanas darbu sāk cilvēks no kanāla kā veselu komplektu jaunā izpildē. Parastais piesaistes maršruts tos apzināti noraida, un nevienu pārlūkprogrammas operāciju nevar pievienot izpildei, kas jau dara ko citu. |