“Iendeshe ndani ya sandbox” inasikika kama agizo moja. Kivitendo kuna mipaka minne ya kawaida ambayo watu humaanisha, na inazuia vitu tofauti sana. Kuchagua isiyofaa kunakuacha bila ulinzi au kunafanya kila uendeshaji uwe wa polepole na ghali kuliko inavyohitajika.
Ulinganisho huu unachukulia kwamba msimbo kweli hauaminiki: umeandikwa na modeli ya lugha, umewasilishwa na mtumiaji, au umefika kwenye pull request kutoka kwa mtu usiyemjua. Msimbo uliouandika mwenyewe una mahitaji tofauti.
Kinachoweza kwenda vibaya
Kabla ya kulinganisha mipaka, inasaidia kutaja ni ya nini. Msimbo usioaminika unaweza:
- Kusoma kisichopaswa: vigezo vya mazingira, funguo za SSH, faili kwenye saraka yako ya nyumbani, endpoint za metadata za wingu.
- Kumaliza rasilimali: kuzunguka milele, kuzalisha michakato hadi mashine ikwame, kujaza diski.
- Kutumia vibaya mtandao: kuchanganua wenyeji wengine, kutuma barua taka, kuchimba sarafu za kidijitali, kuita huduma zako za ndani.
- Kujikita: kusakinisha cron job au huduma inayodumu baada ya kazi kuisha.
- Kutoroka: kutumia hitilafu katika tabaka la chini kuendesha msimbo kwenye mwenyeji mwenyewe.
Kila kiwango hapa chini kinashughulikia sehemu ya haya, si yote.
Kiwango cha 1: mchakato
Sandbox rahisi zaidi ni mchakato mtoto: subprocess.run yenye kikomo cha muda, labda chini ya mtumiaji wake, ikiwa na mipaka ya rasilimali na kichujio cha seccomp kama wewe ni makini.
Inazuia: uendeshaji usio na mwisho (kikomo cha muda), sehemu ya kumaliza rasilimali (mipaka), baadhi ya miito hatari ya mfumo (seccomp). Haizuii: kusoma chochote ambacho mtumiaji huyo anaweza kusoma, ufikiaji wa mtandao, kujikita kupitia chochote ambacho mtumiaji anaweza kuandika, na hitilafu yoyote ya kernel. Kushindwa kwa kawaida: msimbo husoma faili uliyosahau inasomeka, au mkalimani wa lugha “aliyezuiliwa” anagundulika kuwa na mlango wa nyuma. Historia imejaa sandbox ndani ya lugha zilizoshindwa kustahimili.
Muda wa kuwaka ni karibu sifuri. Inafaa kwa msimbo wako; si mpaka kwa msimbo wa wengine.
Kiwango cha 2: kontena
Namespaces huupa msimbo mwonekano wake wa faili, michakato na mtandao; cgroups hupunguza CPU na kumbukumbu; capabilities zilizoondolewa na seccomp hupunguza kile unachoweza kuomba kutoka kwa kernel.
Inazuia: kusoma faili za mwenyeji (isipokuwa zimeunganishwa), kuona michakato mingine, matumizi ya rasilimali yasiyo na kikomo, sehemu kubwa ya tatizo la kujikita kama kontena linatupwa. Haizuii: hitilafu katika kernel inayoshirikiwa ya mwenyeji. Kila kontena kwenye mashine huzungumza na kernel ileile, kwa hiyo udhaifu wa kernel unaofikika ni njia ya kutoka. Kushindwa kwa kawaida: usanidi badala ya mashambulizi ya ajabu. Kontena lenye mamlaka maalum, soketi ya runtime ya kontena iliyounganishwa ndani, mtandao wa mwenyeji uliowashwa “kwa utatuzi tu”. Kila moja huondoa mpaka kimyakimya.
Muda wa kuwaka ni milisekunde. Kuna aina zilizoimarishwa, zikiwemo kernel za nafasi ya mtumiaji zinazonasa miito ya mfumo kabla haijamfikia mwenyeji, kwa gharama ya kasi na upatanifu. Kwa msimbo kutoka kwa watu unaowaamini, kontena lililosanidiwa vizuri ni chaguo-msingi la busara.
Kiwango cha 3: microVM
MicroVM huendesha kernel yake chini ya hypervisor, kama VM kamili, lakini karibu bila vifaa vinavyoigwa. Mfano unaojulikana zaidi ni Firecracker.
Inazuia: kila kitu ambacho kontena linazuia, pamoja na tatizo la kernel inayoshirikiwa. Ili kumfikia mwenyeji, msimbo lazima uvunje hypervisor au mojawapo ya kiganja cha vifaa pepe, uso mdogo sana kuliko kiolesura cha miito ya mfumo cha kernel. Haizuii: matumizi mabaya ya kile unachoipa. Trafiki iliyo wazi ya kutoka bado inaweza kutumiwa vibaya; siri zilizoingizwa bado zinaweza kuvuja. Kushindwa kwa kawaida: sera, si utengaji. Mtu hupitisha token ya uzalishaji “ili majaribio yafanye kazi”, au huacha trafiki ya kutoka bila vikwazo mahali isipohitajika.
Muda wa kuwaka ni kati ya sehemu ya sekunde na takriban sekunde moja, kwa gharama ya ziada ya megabaiti chache. Hiyo ni kasi ya kutosha kuunda moja kwa kila kazi na kuifuta baadaye, jambo ambalo pia hutatua tatizo la kujikita: hakuna kitu kinachobaki cha kurudia.
Kiwango cha 4: mashine pepe kamili
VM ya kawaida, au VPS, ina aina ileile ya mpaka kama microVM: uboreshaji pepe wa vifaa na hypervisor. Tofauti iko katika kila kitu kinachoizunguka: mfumo kamili wa vifaa, mfumo mzima wa uendeshaji, IP ya umma ukitaka, na mzunguko wa maisha unaopimwa kwa siku au miezi.
Inazuia: aina zilezile za matatizo kama microVM, kwa uso wa mashambulizi mkubwa kidogo kwa sababu vifaa zaidi vinaigwa. Haizuii: matumizi mabaya ya utambulisho wake wa mtandao. VM yenye IP ya umma inayoendesha msimbo hatari hufanya IP yake iingie kwenye orodha za kuzuia, jambo muhimu kama IP hiyohiyo inatuma barua pepe zako. (Kama hilo limeshatokea, tazama la kufanya IP yako ikiwa kwenye orodha ya kuzuia.) Kushindwa kwa kawaida: inaishi muda mrefu mno. VM iliyoundwa kwa jaribio moja hukusanya vitambulisho na hali, na polepole inakuwa mashine inayoaminika ambayo ilipaswa kuilinda.
Muda wa kuwaka ni makumi ya sekunde hadi dakika, na utozaji kwa kawaida ni wa mwezi. Huo ndio umbo sahihi kwa huduma ya muda mrefu inayohitaji porti za kuingia, na umbo lisilofaa kwa kuendesha msimbo kwa sekunde 20.
Ulinganisho
| Mchakato | Kontena | MicroVM | VM kamili | |
|---|---|---|---|---|
| Kernel yake | hapana | hapana | ndiyo | ndiyo |
| Mpaka mkuu | ruhusa za mtumiaji | namespaces + kernel inayoshirikiwa | hypervisor, mfumo mdogo kabisa wa vifaa | hypervisor, mfumo kamili wa vifaa |
| Muda wa kuwaka | ~0 | ms | ~0.1–1 sek | sek 10 – dakika |
| Gharama ya ziada | hakuna | ndogo | MiB chache | makumi–mamia ya MiB |
| Kutupa baada ya kila kazi | rahisi | rahisi | rahisi | polepole, ghali |
| Porti za kuingia / IP ya umma | za mwenyeji | za mwenyeji | kwa kawaida hakuna | ndiyo |
Kuchagua
- Msimbo ulioandikwa na wewe au timu yako: mchakato au kontena linatosha.
- CI kwa matawi yako mwenyewe: kontena kwenye runner yako.
- Msimbo wa mawakala, mawasilisho ya watumiaji, pull request za nje: microVM moja kwa kila kazi, inayofutwa baadaye.
- Huduma isiyoaminika inayopaswa kupokea miunganisho au kuendeshwa kwa wiki: VM tofauti yenye IP yake, mbali na chochote kinachohifadhi vitambulisho vyako au kutuma barua pepe zako.
Chochote utakachochagua, kanuni mbili zinaongezeka juu yake: usiweke ndani kitu chochote ambacho usingempa mwandishi wa msimbo, na amua kwa makusudi mtandao unaruhusiwa kufanya nini.
Bidhaa zetu ziko wapi
Kwa kiwango cha 3, tunatoa sandbox za msimbo: microVM za Firecracker zinazowaka kwa takriban sekunde moja, zenye intaneti ya kutoka, bila porti za kuingia na malipo kwa sekunde. Zinalenga hasa kipengele cha tatu hapo juu; ukurasa wa kinga za MCP unaeleza jinsi ya kupunguza kile ambacho wakala anaweza kufanya nazo. Kwa kiwango cha 4, VPS kama ushuru wa AI agent inakupa mashine nzima kwa mwezi. Mifano iliyochambuliwa kwenye sandbox kwa mawakala wa AI inaonyesha mtindo wa microVM kuanzia mwanzo hadi mwisho, na kile ambacho mawakala wa AI wanahitaji kweli kutoka kwa miundombinu inatazama utengaji kama moja ya mahitaji kadhaa.
Maoni
Bado hakuna maoni. Kuwa wa kwanza.