Etäsuorittimet
Anna agentille oikea tietokone työskentelyyn: Linuxissa, macOS:ssä tai Windowsissa.
Mikä etäsuoritin on
Nessien agentilla ei ole tietokonetta. Se voi lukea Nessiessä olevaa sisältöä, keskustella ihmisten kanssa ja kutsua yhdistettyjä työkaluja verkon kautta, mutta se ei voi avata tiedostoa kannettavalta tietokoneelta, suorittaa komentoa tai tarkastella sivua, joka on olemassa vain jonkun kirjautumisen takana. Etäsuoritin on tapa antaa agentille kone, jolla se voi työskennellä.
Suoritin on pieni daemon, jonka asennat tietokoneeseen, jota hallitset. Se muodostaa ulospäin yhteyden Nessie-instanssiisi, todistaa avaimella, mikä kone se on, eikä avain koskaan poistu isäntäkoneelta. Sen jälkeen se tarjoaa kiinteän, nimetyn joukon toimintoja, eikä mitään muuta. Työ saapuu yksittäisinä allekirjoitettuina komentoina, ja tulokset palautuvat rajattuina, jäsenneltyinä kuittauksina. Kone ei koskaan hyväksy saapuvaa yhteyttä Nessiestä.
On hyvä olla tarkkana siitä, mitä suoritin ei ole, koska useimmat etäkäyttötyökalut ovat jotakin näistä, ja suoritin on tarkoituksella mikään niistä. Siinä ei ole SSH:ta, ei yleistä etäkomentokehotetta, ei liittymistä jo avoinna olevaan terminaalin multiplekseriin, ei pilvipuolen vakiosyötettä eikä yleistä lähiverkon välityspalvelinta. Se ei ole MCP-palvelin, eikä se ole kontti tai pilvisuoritusympäristö. Nessiessä on jo sellaiset, ja ne ovat eri asia. Suoritin on valtuuksia kantava päätepiste, jolla on suljettu lista toimintoja, ja tuo lista on koko pinta.
Kenelle suoritin kuuluu
Jokainen suoritin luodaan täsmälleen yhdellä laajuudella, eikä laajuutta voi myöhemmin muuttaa. Laajuus määrää, kuka saa kutsua suoritinta ja kuka sitä hallinnoi.
| Laajuus | Kuka voi kutsua sitä | Kuka hallinnoi käyttöoikeuksia |
|---|---|---|
| Yksityinen | Pyytävän henkilön ja juuri kutsutun agentin on molempien olla nimettyjä vastuuhenkilöitä. Pelkkä toinen ei riitä. | Nimetty ihmisylläpitäjä. Agentit voivat käyttää yksityistä suoritinta, mutta eivät hallinnoida sitä. |
| Projekti | Henkilö, jolla on oikeus juuri siihen projektiin, ja vain projektissa käynnistetystä ajosta. | Organisaation hallinnoija, tai projektin omistaja tai ylläpitäjä. |
| Organisaatio | Henkilö, jolla on organisaation oikeus. | Organisaation hallinnoija. |
Yksityisellä suorittimella on aina oltava vähintään yksi aktiivinen ihmisylläpitäjä. Viimeisen poistaminen suoraan epäonnistuu. Jos offboarding-tapahtuma jättäisi suorittimella ei ketään, suoritin lakkaa ottamasta vastaan uutta työtä, tyhjentää jo saamansa työn ja peruuttaa itsensä. Organisaation omistajalla on vain peruutukseen tarkoitettu hätäkatkaisu, jolla hän voi lopettaa suorittimen, jota hän ei muuten hallinnoi, näkemättä sen yksityistä listaa, istuntoja tai sisältöä. Yksityistä käyttöoikeutta ei siirretä hiljaa kenellekään toiselle.
Mitä agentti voi todella tehdä sillä
Toimintosanasto on kiinnitetty koodiin, eikä sitä määritetä käyttöönottokohtaisesti. Se jakautuu kahteen. Osan toiminnoista daemon palvelee omasta väliaikaishakemistostaan ilman virtuaalikonetta. Loput tarvitsevat isännällä istuntokohtaisen vieras-VM:n. Asennettava osa riippuu siitä, mitä toimintoja tarvitset.
| Toiminto | Mitä se tekee | Vieras-VM |
|---|---|---|
file.list, file.read | Listaa ja lukee tiedostoja vain siitä yhdestä työtilan juurikansiosta, joka valitaan paritettaessa. | Ei |
file.write | Kirjoittaa työtilan copy-on-write-luonnokseen. Se ei koskaan avaa oikeaa juurikansiota kirjoitettavaksi. | Ei |
workspace.review | Raportoi, mitä luonnos muutti: enintään 100 suhteellista polkua tyyppinsä ja tavumääränsä kanssa sekä luettelon tiiviste. Se ei sisällä tiedostojen sisältöä. | Ei |
sandbox.stop | Purkaa istunnon, jonka tämä ajo omistaa. | Ei |
command.run | Suorittaa yhden komennon shell-vapaana argumenttivektorina vieras-VM:ssä, jossa ei ole ulosliikennettä. Tässä polussa ei ole missään shell-merkkijonoa. | Kyllä |
browser.open, browser.observe, browser.act | Ohjaa selainta vieras-VM:ssä koneella määritettyä alkuperälistaa vasten. Havainto palauttaa rajatun saavutettavuuspuun ja halutessa pienennetyn kuvan. Toimintoja ovat navigoi, napsauta, kirjoita, paina ja vieritä, ja ne kohdistuvat solmuun, jonka agentti on juuri havainnut. Ne eivät kohdistu selektoriin, koordinaattiin tai skriptiin. | Kyllä |
coding.launch, coding.observe | Käynnistää hallitun Codex-istunnon vieras-VM:ssä ja lukee takaisin tyypitetyn elinkaaritilan. Terminaaliin ei voi liittyä eikä kehotekanavaa ole. Agentti saa tietää, onko istunto käynnissä, mutta ei sitä, mitä sen näytöllä on. | Kyllä |
workspace.promote | Vie tarkistetun luonnoksen oikeaan työtilaan. Tämä on ainoa toiminto, joka kirjoittaa isännälle, ja sitä ei tarjota malleille lainkaan. | Ei |
Toiminnot, jotka eivät tarvitse vieras-VM:ää, muodostavat työtilapaketin. Isäntä, joka ei pysty käynnistämään vieras-VM:ää, ei ole rikkinäinen suoritin. Se paritetaan normaalisti, ilmoittaa hiekkalaatikon taustajärjestelmäksi none ja mainostaa vain työtilapaketin. Tähän tilaan päätyy Windows-painos ilman Hyper-V:tä tai Linux-kone, jonka käyttäjä ei voi käyttää /dev/kvm-laitetta. Käyttöliittymä nimeää tilanteen sen sijaan, että epäonnistuisi epämääräisesti.
Agentti ei koskaan aloita selaintyötä omasta aloitteestaan. Tavallinen yhden toiminnon sidontareitti hylkää browser.open- ja browser.observe-toiminnot ilman poikkeusta. Selainajon käynnistää ihminen kanavasta yhtenä neljän toiminnon nippuna tuoreella ajolla, eikä siihen voi enää lisätä sidontoja. Hallitut koodaussessiot toimivat samalla tavalla.
Koodissa on vielä kaksi ryhmää, jotka ovat tarkoituksella poissa käytöstä. Toiminnoilla, joilla ohjataan Chrome-välilehteä, johon olet jo kirjautunut, on täydellinen paikallinen toteutus ja natiivi viestintälaajennus. Hallintataso ei kuitenkaan mainosta niitä, ennen kuin palvelin pystyy todistamaan, että alkuperäinen keskustelu oli yksityinen, ja tallentamaan, kuka mitä paljasti. Perusta on tarkoituksella toimimaton, eikä laajennusta toimiteta kummassakaan asennusohjelmassa. Lisäksi useita koodaustoimintoja, eli liittämistä, kehotetta, keskeytystä ja sulkemista, on nimetty skeemassa, mutta niillä ei ole toteutusta, joten niitä ei voi myöntää.
Miten se toimii
Yhteys on aina ulospäin suuntautuva
Daemon muodostaa ulospäin suuntautuvia HTTPS- ja WSS-yhteyksiä vain Nessie-API:in eikä mihinkään muualle. Nessie ei koskaan yhdistä kannettavaan tietokoneeseen, ei pidä sen osoitetta eikä käsittele mitään katalogin päätepistettä koneen kuljetusreittinä. Siksi suoritin toimii kotiverkosta, NAT:n takaa, yrityksen VPN:stä, ilman porttiohjausta ja ilman saapuvaa palomuurisääntöä. Siksi myös daemonin pysäyttäminen on täydellinen ja välitön katkaisu.
API-alkuperän on oltava HTTPS. Ainoa poikkeus on loopback-osoite niille, jotka ajavat Nessietä omalla koneellaan. Sitä varten on oma ympäristömuuttujansa. Mikään tavallinen lippu ei muuta tuotantoalkuperää tavalliseksi HTTP:ksi.
Paritus todistaa koneen, ja ihminen vahvistaa sen
Paritus on kaksipuolinen todistus. Valtuutettu henkilö luo suorittimen Nessiessä sen laajuuden kanssa, ja Nessie antaa rekisteröintitunnuksen. Se on 256-bittinen satunnaishaaste, josta Nessie tallentaa vain SHA-256-tarkisteen. Haaste on voimassa kymmenen minuuttia ja kelpaa kerran.
Koneella daemon luo Ed25519-avainparin ja tallentaa sen omistajalle yksinomaisessa, käyttöjärjestelmän suojaamassa tallennustilassa. Se kirjoittaa tarkan allekirjoitetun pyynnön levylle ennen kuin tekee yhtään verkkokutsua. Näin kadonnut vastaus voidaan yrittää uudelleen samalla valmistellulla avaimella eikä parittaa hiljaa kahdesti. Sen jälkeen daemon lähettää rekisteröintitunnuksen, haasteen, julkisen avaimensa ja omistustodisteen allekirjoituksen. Nessie tallentaa julkisen avaimen ja sen sormenjäljen. Se ei koskaan tallenna yksityistä avainta.
Nessie näyttää sitten sormenjäljen ihmiselle, joka vahvistaa sen. Ennen tätä vahvistusta ja myöhempää omistustodistusta suoritin pysyy offline-tilassa. Paritusta ei voi koskaan suorittaa chat-tekstillä tai terminaalin tulosteella. Se vaatii tarkoituksellisen toiminnon ihmiseltä web- tai työpöytäkäyttöliittymässä.
Kone, joka menettää avaimensa, ei voi palauttaa suoritintietuettaan. Se peruutetaan ja rekisteröidään uudelleen uutena suorittimena. Avaimen vaihto sen sijaan on yksi tapahtuma, joka allekirjoitetaan sekä vanhalla että uudella avaimella.
Descriptor on koneen allekirjoitettu väite itsestään
Paritettu daemon julkaisee descriptorin. Se on allekirjoitettu lausunto, jonka versio kasvaa aina, ja se sisältää pelkkiä rakenteellisia tosiasioita: mitä toimintoskeemoja daemon tukee, sen resurssi- ja verkkorajat, sen alusta sekä tiiviste paikallisesta käytännöstä. Descriptor ei sisällä isäntäpolkuja eikä luo valtuuksia pilvessä.
Uutta versiota ei aktivoida heti saapuessaan. Se tallennetaan odottamaan tarkistusta, ja valtuutetun henkilön on nähtävä se ja vahvistettava se, ennen kuin se voi vaikuttaa siihen, mitä on saatavilla. Tämä estää kyvykkyyspäivitystä hiljaa myöntämästä uutta valtaa: juuri mainostettu toiminto alkaa kiellettynä.
Ole selvillä siitä, mitä allekirjoitus todistaa. Paritetun suorittimen avaimella allekirjoitettu descriptor todistaa, että tämä avain teki väitteen. Se ei todista, että isäntä on turvallinen, ja käyttöliittymän on sanottava niin.
Lähetys: ehdokas, sidonta, komento, kuittaus
Agentti ei koskaan nimeä suoritinta. Ennen kuin ajo voi käyttää suoritinta, Nessie ratkaisee loogisen toiminnon läpinäkymättömäksi, lyhytikäiseksi saatavuusehdokkaaksi. Vastaus ei sisällä suoritintunnusta. Tietokanta säilyttää vain tunnuksen tiivisteen sekä sen, kenelle ja mihin se ratkaistiin. Mallit ja asiakkaat saavat tunnuksen, eivät valittavaa konetta.
Saatavuus on yksi ratkaisija, jota API, worker, käyttöliittymä ja avustaja käyttävät samalla tavalla:
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 operationEhdokkaan kuluttaminen luo sidonnan tietokantalukon alla. Lukko tarkistaa jokaisen näistä portista uudelleen ja kasvattaa monotonista aitausta. Lähetys tarkistaa portit vielä kerran. Seurauksena peruttu oikeus, kavennettu käytäntö tai peruutettu suoritin kahden vaiheen välissä pysäyttää työn sen sijaan, että se huomattaisiin jälkikäteen. Uusintayritys ei myöskään voi koskaan osua toiselle koneelle kuin sille, johon ajo sidottiin.
Komento kulkee Nessien tavallisen jonotyön ja työkalukutsun elinkaaren kautta eikä omaa toista jonoaan. Daemon kysyy töitä autentikoidulta ohjauskanavaltaan, eikä sille koskaan työnnetä mitään. Komento liikkuu neljän kuittauksen läpi eikä muita:
leased → accepted → started → result-acknowledgedJokainen kehys sitoo komennon tunnisteen, ajon alkuperän, sidonnan aitauksen, kyvykkyysversion, vanhenemisajan, idempotenssiavaimen sekä argumenttien ja hyötykuorman tiivisteet. Daemon hylkää epäsuhdan, vanhentuneen käytännön, toiston tai toisen tuloksen komennolle, jonka se on jo suorittanut. Argumentit ja lopputulokset salataan levossa AES-256-GCM:llä. Tietokanta säilyttää rajatun salatekstin ja kanonisen tiivisteen, ei sisältöä.
Jos kuittaus katoaa, Nessie ei oleta onnistumista. Komento kirjataan tuntemattomaksi tulokseksi, ja ajo seuraa tavallista palautumispolkua. Daemon kirjaa paikallisesti jokaisen vastaanottamansa komennon ennen työn aloittamista, joten se ei toista sivuvaikutusta. Myöhäinen kuittaus voi silti ratkaista epäselvyyden rehellisesti.
Luottamusraja
| Toimija | Voi | Ei voi |
|---|---|---|
| Ihminen | Parittaa suorittimen, hallinnoida sitä kun on oikeus, vahvistaa käyttöoikeuden ja käytäntömuutokset. | Laajentaa käytäntöä, jonka kone itse kieltää, tai toimia ilman voimassa olevaa oikeutta. |
| Agentti, myös henkilökohtainen avustaja | Kutsua toimintoa, joka sille on jo saatavilla. Valmistella ehdotettu käyttöoikeusmuutos sitä pyytäneelle henkilölle. | Hallinnoida käyttöoikeuksia, hyväksyä itseään, valita konetta, muuttaa paikallista käytäntöä tai ottaa käyttöön muutosta, jonka se itse valmisteli. |
| Nessien hallintataso | Ratkaista saatavuus, sitoa ajo, vuokrata komennot ja säilyttää redaktoituja tarkastustietoja. | Soittaa koneelle, laajentaa paikallista käytäntöä, päästä isäntäkoneen tunnistetietoihin tai käsitellä päätteen tekstiä valtuutuksena tai tuloksena. |
| Suoritindaemon | Noudattaa paikallista käytäntöä, parittua ulospäin, ajaa vieras-VM:n ja yhdyskäytävän sekä kuitata komennot. | Laajentaa omaa laajuuttaan, hyväksyä vanhentunutta tai toistettua työtä, paljastaa isäntätyötilaa tai tunnistetietoja suoraan tai lähettää raakaa paikallista dataa tarkastusjälkeen. |
| Vieras-VM ja sen sisällä olevat työkalut | Työskennellä copy-on-write-hiekkalaatikossa ja saavuttaa verkon vain yhdyskäytävän kautta. | Päästä isäntätiedostoihin, isäntätunnistetietoihin, suoraan verkkoon tai DNS:ään tai siirtää isäntämuutosta. |
Suorittimen asentaminen ja paritus
Asenna Mac-CLI Homebrew'llä, Mac-sovellukset Homebrew-caskeilla, Linux-CLI APT:n tai DNF:n kautta tai Windows-suoritin WinGetillä. Jokaisella paritetulla tiimillä on omat oikeutensa, jotka on tallennettu tietokoneelle. Nessie hallitsee käyttöoikeuksia tiimin sisällä, mutta ei voi muuttaa paikallisia resursseja.
Asennus- ja paritusohje sisältää tarkat komennot, kaksipuolisen, kahdeksannumeroisen koodin kulun, paikalliset asetukset, käynnistyksen, päivitykset ja poistamisen.
Miten pitkälle kukin alusta on todella todistettu
Kolmen vierasympäristön tila eroaa toisistaan, ja ero on olennainen. macOS on taustajärjestelmä, jossa on toimiva ja testattu vierasreitti. Linuxin Firecracker-taustajärjestelmä ja Windowsin Hyper-V-taustajärjestelmä on toteutettu ja katettu isäntäpuolen testeillä: käynnistyssarjalla, levykuvilla, ohjaus- ja ulosliikenneyhteyksillä sekä luonnosprotokollalla. Yhtäkään vierasta ei kuitenkaan ole vielä käynnistetty oikealla laitteistolla tämän projektin jatkuvassa integraatiossa. Se vaatisi koneen, jossa on KVM tai Hyper-V, eikä töitä, jotka sen todistaisivat, ole koskaan ajettu sellaisella koneella. Työtilapaketti, joka ei tarvitse vierasta, on testattu päästä päähän Windowsilla oikeaa ohjaussilmukkaa vastaan. Pidä Linuxin ja Windowsin vierasta tukevia toimintoja todistamattomina, kunnes olet todistanut ne omalla laitteistollasi. Nessien paritusnäkymä sanoo saman omin sanoin.
Turvallisuus ja eristäminen
Yksi työtilan juurikansio, ja sen polku pysyy koneella
Paritus valitsee tasan yhden kanonisen työtilan juurikansion. Se on yksi hakemisto, ei joukko kansioita, eikä koskaan niiden lähin yhteinen vanhempi. Nessielle kerrotaan juurikansion nimi, jotta ihminen tunnistaa rajan käyttöliittymästä. Koko polku pysyy omistajalle luettavassa koneen tilassa eikä sitä koskaan ladata ylös. Juurikansion vaihtaminen on mahdollista, mutta vasta kun kaikki paikalliset luonnokset ja hiekkalaatikot on poistettu. Vaihto tuottaa uuden descriptor-version, joka kulkee samaa ihmisen tarkistusta kuin mikä tahansa käytäntömuutos. Juurikansio ei voi hiljaa laajentua ylemmälle hakemistolle.
Tiedostotoiminnot hyväksyvät vain suhteellisia polkuja. Ne hylkäävät kulkureitit ja jokaisen symbolisen linkin osan. Ne tarkistavat uudelleen, että määritetty juuri on yhä tavallinen kansio, ja palauttavat rajattuja, jäsenneltyjä tuloksia, jotka eivät sisällä isäntäpolkua.
Kirjoitukset menevät kopioon, ja vain ihminen voi siirtää ne
Agentti ei koskaan kirjoita tiedostoihisi. file.write luo rajatun copy-on-write-puun daemonin omaan tilahakemistoon. Puu on sidottu ajoon, ja myöhemmät lukemiset ja listaukset kyseiselle ajolle näkevät luonnoksen. Vieraalla tehtävä työ, koodaussessiot mukaan lukien, käyttää samaa copy-on-write-väliaikaistilaa.
Luonnoksen vieminen oikeaan työtilaan on yksi toiminto, workspace.promote, ja se on ainoa isäntäkirjoitus järjestelmässä. Sillä ei ole lainkaan mallille näkyvää skeemaa. Mikään agentti, avustaja tai kutsujan antama polku ei voi muuttaa luonnosta isäntäkirjoitukseksi. Sen sijaan ihminen avaa Your reviewed drafts -näkymän, painaa Review promotion ja vahvistaa siirron nykyisellä salasanallaan. Palvelin tarkistaa sitten hyväksytyn tarkistustiivisteen, manifestin tiivisteen, ajon, käyttäjän ja agentin, valtuutusversion, toimintooikeuden ja voimassa olevan paikallisen käytännön, ennen kuin se luo komennon. Koneella daemon rakentaa manifestin itse uudelleen ja hylkää tiivisteen, joka on muuttunut. Näin tarkistuksen jälkeen tehty muokkaus ei pääse mukaan tarkistuksen hyväksynnällä.
Varsinainen siirto on kuvaajapohjainen ja kirjattu lokiin. Natiivi apuohjelma saa työtilan juuren ja luonnoksen jo avattuina hakemistokuvaajina, ei polkuina. Se validoi jokaisen osan operaatioilla, jotka eivät seuraa linkkejä, ja hylkää symboliset linkit, kovat linkit, erikoistiedostot sekä levyrajojen ylitykset. Lisäksi se pitää yllä kaikki-tai-palauta-lokia, joten kaatuminen joko viimeistelee validoidun manifestin tai palauttaa alkuperäisen ennen mitään muuta ajoa.
Vieraalla ei ole verkkoa, ja ulosliikenne pakotetaan
Kun toiminto tarvitsee vieraan, se on istuntokohtainen Linux-mikro-VM. Sillä ei ole isäntäkotia, Docker-socketia, SSH-agenttia, perittyä ympäristöä eikä muuta isäntäliitosta kuin työtilan jako. Suoritettava ajoympäristöliitos on vain luettava, ja kirjoitettava työtilaliitos kieltää suorittamisen. Kaikki ajettava tulee siksi vahvistetusta ajoympäristön hyötykuormasta eikä agentin kirjoittamasta tiedostosta. Vieras pudottaa oikeutensa etuoikeudettomaan identiteettiin ennen kuin se avaa yhtään socketia. Juuren omistama jako keskeyttää käynnistyksen sen sijaan, että jättäisi etuoikeutetun kuorman käyntiin.
Tärkeintä on, että vieraalla ei ole verkkoliitäntää. Linuxilla käynnistyssarja ei koskaan määritä verkkoa, eikä TAP-laitetta luoda. Windowsilla Hyper-V:n oletuksena lisäämä virtuaalinen verkkosovitin poistetaan asennuksen aikana. Vieraan ainoa reitti koneen ulkopuolelle on sen sisällä oleva loopback-välityspalvelin. Se tunnelloidaan virtuaalisen socketin kautta isännän siltaan, ja silta antaa tavut daemonin omalle yhdyskäytävälle. Yhdyskäytävä on paikallinen socket-kuuntelija, jonka omistaja yksin voi käyttää. Sillä ei ole TCP-kuuntelijaa eikä yleistä välitystilaa. Yhdyskäytävässä valvotaan HTTP-, CONNECT-, WebSocket-, uudelleenohjaus-, alkuperä-, lataus- ja lähetyskäytäntöä. Se käyttää Nessien olemassa olevaa pinned-fetch-koneistoa eikä toteuta samoja sääntöjä uudelleen. NAT-siltaa ei ole eikä suoraa DNS-selvittäjää. Vaihtoehtoinen DNS, raaka TCP, QUIC ja välityspalvelimen ohitus ovat kaikki kiellettyjä.
Yhdyskäytävän valvoman alkuperälistan määrittää koneen omistaja paikallisesti, eikä sitä koskaan ladata ylös. Käyttöliittymä nimeää tämän puutteen sen sijaan, että se teeskentelisi Nessien olevan alkuperäkäytäntöjen muokkain. Jos haluat tietää, mihin selainsuoritin saa yhteyttä, kysy koneen omistajalta.
Tunnistetiedot
Isännän tunnistetietovarastoa ei koskaan liitetä vieraaseen. Ei avainnippua, ei ~/.codex- tai ~/.claude-hakemistoa, ei yleistä CLI-tunnusta eikä ympäristömuuttujaa, joka kantaa API-avainta. Ainoa tuettu kirjautuminen hallitussa koodaussessiossa on omistajan yksityinen todennustiedosto. Sen sisältöä lukee vain omistajan hallitsema initrd-rakentaja, ei koskaan Nessie, ei descriptor, ei loki eikä komentoargumentti. Tiedosto siirretään kerran vieraan sisäiseen yksityiseen kotiin, joka tuhoutuu VM:n mukana. Tuo vieras voi saavuttaa tasan yhden alkuperän.
Selainsuoritin on vielä tiukempi. Jokainen istunto saa uuden yksityisen selainprofiilin, eikä se hyväksy työtilan valmistelemaa profiilia. Näin se alkaa ilman evästeitä, laajennuksia tai kirjautumistilaa.
Raakaa paikallista dataa voi päätyä mallin tarjoajalle vain nimenomaisessa, rajatussa ajossa. Nessie tallentaa redaktoituja manifesteja, argumentti- ja käytäntötiivisteitä, tulostiivisteitä sekä jäsenneltyä tilaa. Tiedostosisällöt, päätteen tuloste, selaimen DOM, tunnistetiedot ja todennustekijät ovat kiellettyjä tietokantatietueista, tarkastusmerkinnöistä, lokeista, reaaliaikaisista tapahtumista ja virheraporteista.
Mitä ylläpitäjä myöntää ja miten hän perii sen takaisin
Oikeus käyttää suoritinta ei ole yksi kytkin. Agentti voi kutsua toimintoa vain, jos sillä on myöntö täsmälleen siihen suorittimeen ja täsmälleen siihen toimintoon, ja tavallinen looginen työkalukäytäntö sallii sen, ja ajon laajuus täsmää, ja koneen oma paikallinen käytäntö sallii sen. Toiminnon myöntäminen yhdelle suorittimelle ei siis valtuuta mitään toisella. Kyvykkyyspäivitys ei myöskään voi laajentaa mitään, koska uudet toiminnot saapuvat kiellettyinä.
Agentin käyttöoikeus ja jakaminen tulevat voimaan heti itse sivulla, ilman hyväksyntäjatkoa, salasanakehotetta tai uutta todennusvaihetta. Suorittimen Agents-välilehdellä hallinnoija kytkee agentin koneen käytön päälle tai pois suoraan. Sharing-välilehdellä hallinnoija antaa henkilölle Can use- tai Admin-oikeuden tai laajentaa käytön projektiin tai kaikille nykyisen tiimin jäsenille samalla tavalla. Omassa avustajakeskustelussasi avustaja voi valmistella agentin käyttöoikeus- tai tehtävämuutoksen, joka julkaisee vahvistuskortin siihen keskusteluun. Tämä on mahdollista vain siellä, ei koskaan jaetussa kanavassa, ajastetussa työssä tai toisen agentin ajossa. Mitään ei muutu ennen kuin painat kortin Allow access -painiketta, eikä chat-teksti ole koskaan vahvistus.
Kolme muutosta vaatii vielä, että syötät nykyisen salasanasi vahvistushetkellä. Ne ovat descriptor-version aktivointi, avustajan valmistelema tehtävä, joka antaa koneen henkilölle eikä agentille, ja pysyvä käytäntö, joka sallii kollegoiden käynnistää komentoja koneella sen omistajana eli valvomattoman tikettityön käytäntö. Koneen irrottaminen tai poistaminen ei vaadi salasanaa, koska hätäkatkaisimen ei pidä olla vaikeampi tavoittaa kuin se, mitä se pysäyttää. Tarkistetun luonnoksen siirto vaatii aina salasanan. Tarkastusloki kirjaa toimivan henkilön ja avustajan osuuden erikseen.
Suoritin siirtyy pieneen ja selkeään tilajoukkoon:
pending_pairing → online ↔ offline
│ ↓
└──────────→ draining → revoked
↓
errorOtsikon Computer-valikosta hallinnoija valmistelee jokaisen elinkaarimuutoksen: keskeyttää suorittimen, jatkaa keskeytettyä, irrottaa sen tai poistaa sen. Keskeytys pitää suorittimen verkossa, mutta lopettaa komentojen vastaanoton. Irrottaminen mitätöi sen asiakassertifikaatit ja kaikki vireillä olevat ehdokastunnukset, eikä sitä voi perua. Irrotettu suoritin paritetaan uudelleen uutena. Poisto tekee saman ja poistaa lisäksi suorittimen listalta. Toisin kuin irrotus, sitä tarjotaan riippumatta suorittimen tilasta, myös odottavan parituksen ja jo irrotettujen suorittimien kohdalla, koska se on ainoa tapa poistua listalta. Tyhjentäminen eli jo saadun työn loppuun vieminen ennen kuin uutta työtä otetaan vastaan, on protokollan todellinen kolmas tila. Käyttöliittymä voi näyttää koneen siinä, mutta mikään tässä ei käynnistä sitä, vain suora API-kutsu. Jokainen vahvistettu käyttöoikeusmuutos, descriptor-tarkistus ja elinkaarisiirtymä, tyhjentäminen mukaan lukien, kasvattaa myös daemonin yhteysjaksoa. Sen seuraava ohjauskysely, enintään sekunnin kuluttua, epäonnistuu suljetusti ja pysäyttää jokaisen elävän vieraan ennen kuin daemon voi yhdistyä uudelleen. Peruutus ei ole pyyntö, jonka kone voi jättää huomiotta.
Suorittimen käyttäminen
Terveyden tarkistaminen
Nessien oma vastaus on elonmerkki. Daemon allekirjoittaa sykkeen. Suoritin, jonka viimeisin todennettu toiminta on yli kuusikymmentä sekuntia vanha, merkitään pysyvästi offline-tilaan ennen kuin sitä voi listata, valita tai lähettää sille työtä. Suoritin, joka näkyy online-tilassa, on todistanut itsensä viimeisen minuutin aikana.
Koneella ei ole terveyspäätepistettä, koska daemon ei kuuntele yhtään käyttäjälle näkyvää porttia, ja se on tarkoituksellista. macOS:llä ja Linuxilla kysy tila suoraan CLI:ltä:
nessie-executor status # every paired executor, plus linger state
nessie-executor status <executorId>
systemctl --user status nessie-executor@<executorId>macOS:llä status näyttää kunkin tiimin launchd-agentin. systemctl-komento on vain Linuxille. Windowsilla ilmoitusalueen kuvake kertoo tilan ensisilmäyksellä, sen valikko nimeää syyn ja palvelulokissa on tarkemmat tiedot. Kummallakin alustalla Nessien suorittimen Overview-välilehti näyttää hyväksytyt profiilit, datarajan, milloin suoritinta viimeksi nähtiin ja odottavat paikallisen käytännön ehdotukset tarkistusta varten.
Lokit
| Alusta | Missä |
|---|---|
| Linux | journalctl --user -u nessie-executor@<executorId>. Daemon ei pidä omaa lokitiedostoa. |
| Windows | %ProgramData%\Nessie Executor\logs\service.log, jonka ilmoitusalueen Open logs folder -valinta avaa |
Jokainen kieltäytyminen, johon ihminen voi reagoida, päätyy lokiin. Näitä ovat allekirjoittamaton tai muokattu ajoympäristö, tila, jota ei voi suojata, ja suoritin, joka ei käynnistynyt käynnistyksen yhteydessä. Lokiin ei koskaan päädy paritushaastetta, avainta eikä lapsiprosessin tulostetta. Lokitasoa ei ole, jota voisi nostaa, koska ei ole mitään yksityiskohtaisempaa, minkä voisi kytkeä päälle.
Mac-CLI kirjoittaa kunkin tiimin palvelulokin tiedostoon ~/Library/Logs/NessieExecutor/<executorId>.log.
Päivittäminen
Päivitä CLI Homebrew'n, APT:n tai DNF:n kautta ja käynnistä kunkin tiimin palvelu uudelleen komennoilla disable ja sen jälkeen enable. WinGet päivittää Windows-suorittimen. Suorat Nessie Desktop -asennusohjelmat tarjoavat allekirjoitettuja päivityksiä sovelluksen sisältä. MSI- ja Debian-asennukset käyttävät pakettienhallintaansa. Paritukset ja paikalliset oikeudet säilyvät päivityksissä.
Pysäyttäminen ja poistaminen
Pysäyttäminen on sulava polku, jonka daemon itse hallitsee. Se ei ole tappamista. Daemon saa lopetussignaalin, pysäyttää jokaisen vierasistunnon, vapauttaa lease-varauksensa ja poistuu. Linuxilla yksikkö odottaa viisitoista sekuntia, joka kattaa kymmenen sekunnin purkubudjetin. Yksikkö ei koskaan tapa prosessia pysäyttämättömästi, koska daemon, joka tapetaan kesken purkamisen, jättää mikro-VM:n ja työtilan peittokerroksen ilman prosessia, joka siivoaisi ne. Jumiutunut pysäytys näkyy siis systemctl --user status-komennossa eikä jää huomaamatta. Pakottaminen on tietoinen ihmisen päätös.
Linux-paketin poistamiseksi:
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 tooWindowsilla msiexec /x pysäyttää ja poistaa palvelun, sen rekisterimerkinnät ja ilmoitusalueen käynnistysmerkinnän. Kummallakin alustalla paritettu tila jätetään tarkoituksella paikalleen: ~/.local/state/nessie-executor/ Linuxilla ja %ProgramData%\Nessie Executor Windowsilla. Paritus on koneen avain ja allekirjoitettu käytäntöversio. Ohjelman asennuksen poistaminen ei ole pyyntö tuhota niitä, ja uudelleenasennus löytää ne samasta paikasta. Poista kansio käsin, jos haluat unohtaa parituksen. Peruuta suoritin Nessiessä, jos haluat lopettaa sen toiselta puolelta.
Windowsin ilmoitusalueen valikko ja työpöytäkumppani tarjoavat molemmat Forget pairing on this computer -toiminnon ensiluokkaisena toimintona. Se pysäyttää paikallisen daemonin, poistaa koneen avaimen ja kansiovalinnan sekä poistaa pysyvästi paikalliset luonnoskopiot yhden natiivin vahvistuksen jälkeen. Palvelinpuolen suoritin ja sen tarkastushistoria jätetään omistajan säilytettäviksi tai peruutettaviksi.
Yleisimmät virheet
| Oire | Mitä se tarkoittaa |
|---|---|
| Suoritin paritetaan, mutta se tarjoaa vain tiedostotoimintoja | Isäntä ilmoitti, ettei sillä ole käytettävää hiekkalaatikon taustajärjestelmää. Linuxilla tarkista, voitko lukea ja kirjoittaa /dev/kvm-laitetta ja oletko kvm-ryhmässä. Kun olet lisännyt itsesi ryhmään, kirjaudu ulos ja takaisin sisään. Windowsilla painoksessa ei ole Hyper-V:tä. Kyse on painoksesta, ei asetuksesta. |
| Suorittimen hallintalaitteet puuttuvat kokonaan | Rakennus ei ole varmennetusti odotetusta julkaisijasta. Linuxilla ajoympäristön on oltava juuren omistama, eikä siinä saa olla ryhmän tai kaikkien kirjoitusoikeutta. Windowsilla ja macOS:llä allekirjoituksen on vastattava rakennukseen kiinnitettyä julkaisijaa tai tiimiä. Jokainen näistä kieltäytyy sanoin ja nimeää korjauksen sen sijaan, että piilottaisi hallintalaitteet. |
| Palvelu käynnistyy, mutta ei käynnistä daemonia ja hylkää jokaisen komennon | Asennuksessa on jotain korvattu paketoinnin jälkeen. Tämä on tarkoitettu toiminta. Muokattu asennus vastaa syyn kanssa sen sijaan, että katoaisi, koska pysähtynyt palvelu saisi ilmoitusalueen nimeämään väärän korjauksen. |
| Ajo päättyy tuntemattomaan tulokseen | Päätteen kuittaus katosi. Nessie ei raportoi tulosta, jota se ei vastaanottanut. Komento merkitään tuntemattomaksi, ajo siirtyy palautusreittiin, eikä sivuvaikutusta toisteta. Daemonin myöhäinen kuittaus voi silti ratkaista tilanteen. |
| Toiminto, joka toimi eilen, hylätään tänään | Portti muuttui sidonnan ja lähetyksen välillä. Tarkistukset toistetaan jokaisessa vaiheessa: peruttu oikeus, descriptor-versio odottaa tarkistusta, kaventunut paikallinen käytäntö, ajon kanssa yhteensopimaton laajuus tai peruutus. Virheviesti kertoo, mikä niistä. |
| Agentti pyytää selainta ja kuulee, ettei se voi | Selain- ja koodaustyöt käynnistää henkilö kanavasta koko nippuna tuoreella ajolla. Tavallinen sidontareitti hylkää ne tarkoituksella. Selaintoimintoa ei voi lisätä ajoon, joka tekee jo jotain muuta. |