snap sandbox?

Fórumok

El tudná magyarázni valaki érthetően, röviden, hogy a snap alá telepített programok esetén mi is az a sandbox? Mit korlátoz? Mire való?

Próbáltam utánanézni, de szokás szerint vagy rossz helyen keresek vagy átsiklok lényeges részletek felett, de nem találtam olyan irományt, amit végig tudok olvasni és meg is értem.

Az előzmény: valamikor telepítettem a pycharm nevű IDE-t a gépemre snap-pel. Csak --classic kapcsolóval engedte telepíteni, ami a help szerint kikapcsolja a biztonsági korlátokat. O.K., ezt megértem, hiszen egy IDE nem árt, ha hozzáfér legalább az őt futtató user $HOME-jához. Amit nem értek: ma felraktam a chromium böngészőt ugyanígy, majd elindítottam: snap run chromium. Az így elindított böngésző látszólag hozzáfért a teljes fájlrendszerhez. És innen kezdve nem értem. Akkor mire jó a snap sandbox? Vagy a chromium ilyen beállításokkal települ? De akkor a pycharm miért követelte a --classic-ot? Miért nem tudták azt is ugyanígy beállítani?

Nem az érdekel, hogyan korlátozzam a chromiumot/pycharm-t! Általánosságban érdekelne, mire való a snap sandboxa.

Hozzászólások

Közben azt hiszem, megtaláltam: https://forum.snapcraft.io/t/security-policy-and-sandboxing/554

Szerk: vagy mégsem...

Szerk2: egyre kevésbé értem az eddig olvasottakat. A snap úgy volt reklámozva egyes helyeken, mintha valami hűdeforradalmian új dolog lenne ami benne van. Ehhez képest most úgy tűnik, hogy ez a sandbox valójában egy apparmor/SELinux/stb. profilokkal korlátozott környezet.

Pedig a linken mindent elmondanak rola.

A nagy otletuk, hogy ne kelljen neked apparmor profilokkal szarakodnod, hanem valassz ki azokat a plug-okat amiket akarsz es kesz, aztan majd ezek alapjan az alkalmazasnak automatikusan legeneralodnak az apparmor rule-jai. Valahogy ugy szerettek volna megcsinalni, mint ahogy a mobiltelefonodon megkerdezi az android "es akkor akarod, hogy ez hozzaferjen a kamerahoz?" - te meg ha engeded, akkor a hatterben megtortennek azok a valtozasok, hogy az app elerje a kamerat.

Itt vannak az interfeszek: https://github.com/snapcore/snapd/wiki/Interfaces (a fenti linekeden megtalalhato link)

Az meg, hogy a pycharm fejlesztoi mit csinalnak, az o dolguk. Ha nem adjak a "home" interfeszt hat nem adjak.

Az interface-eket néztem, csak nem volt elég egyértelmű számomra, hogy ha ez valóban így megy, hogy ők a snap saját szabályrendszerei amiket a használatban lévő MAC rendszer szabályaira tud konvertálni, akkor miért kell ezzal a --classic kapcsolóval szívni időnként. Az olvasottak alapján egy ilyen interface-t egy alkalmazáshoz párosítani egy mozdulat, miért nem kötelező?
Vagy valamit nagyon félreértek.

Mert megcsinálni magát a programot, hogy ne akarjon kimászni a sandboxból nem egy mozdulat. Kb egyenértékű azzal, amikor a mindenféle okos vendorok csoda (drága) cuccára rá van írva, hogy supported on redhat, aztán azzal kezd az install guide, hogy kapcsold a selinuxot permisszívre.

User szempontból jó indikátor, hogy akarod-e azt a snapet használni :)

Jól érted, ez "csak" annyi hogy értelmesen használja ezeket az interfaceket, és ezért jól el tudja szeparálni egymástól az appokat. Az érték elvileg az benne, hogy ezt könnyen megoldhatóvá teszi. Ami, ha próbáltál már kiigazodni mondjuk a redhat által szállított targeted selinux policyk többszázezer rulejával, nem is olyan kis dolog. Miért kéne a base technológiát újra kitalálni?

Ilyen alapon a docker se csinál semmit pl, az is csak namespaceket, cgroupsokat, meg ilyeneket toszogat, meg iptablessel routeol.

Meg persze még ezt azt csinál, de ezt-azt még csinál a snap is (pl atomi, jól rollbackelhető upateket)