7.2.1. Activities do Actions on Resources

Ověření práv se s oblibou modeluje tak, že se definuje množina aktivit, množina prostředků a množina akcí, a pak se do tabulky kde osy určují aktivitu a prostředek zapisují povolené akce. Udržovat takovou tabulku v kuse by však bylo nepraktické, takže se ukládá po skupinách, odtud access control lists a capabilities.

7.2.1.1. Access Control Lists

Access control lists je technika, kde se s každým prostředkem uloží seznam aktivit a jim dovolených akcí. ACL umí leckteré UNIXy, v těch jsou zpravidla jako aktivity bráni users nebo groups a akce jsou klasické RWX nad soubory. Z téhož principu vlastně vycházejí i standardní atributy u UNIX souborů.

Nevýhod ACL je řada, zřejmě největší z nich je statičnost vzhledem k aktivitám, kvůli které se ACL dělají pro users a ne pro processes. To může vést k situaci, kdy procesy mají zbytečně silná práva, řeší se mimo jiné vytvářením pseudo users pro některé procesy či dodatečným omezováním práv.

Další věcí je scalability, vlastně nutím prostředky ukládat informace o aktivitách, kterých může být hafo. Odtud pokusy o dědění práv z hierarchicky nadřazených objektů a zaznamenávání změn, sdružování práv do skupin a podobně.

7.2.1.2. Capabilities

Capabilities je technika, kdy si každá aktivita nese seznam prostředků a nad nimi povolených akcí. Při přístupu k prostředku se pak aktivita prokáže svou capability, kterou systém verifikuje. Toto je mechanizmus, který běžné systémy příliš často nemívají, ale u distribuovaných systémů nachází značné uplatnění, příklady jsou capabilities u Amoeby, Machu či EROSu nebo credentials v CORBE.

Problémem capabilities je otázka kam je umístit. Samozřejmě není možné dát je jen tak k dispozici procesům, protože ty by mohly zkoušet je padělat. Jedním z řešení je mít capabilities v protected paměti, to je třeba příklad Machu (procesy mají jen handles do svých tabulek capabilities, tabulky samy jsou v kernelu). Jiné řešení je šifrování capabilities, to dělá Amoeba. Každý objekt má u sebe 48 bitů náhodné číslo, toto číslo plus rights z capability se proženou oneway funkcí a ta se přidá do capability, kterou má uživatel k dispozici. Pokud nemá to štěstí, nemůže si změnit capability aby ukazovala na jiný objekt, ani aby nešla jiná práva.

Ačkoliv to na první pohled vypadá jako že capabilities a access control lists jsou ekvivalentní, jsou v nich důležité rozdíly. Capabilities mohou náležet jednotlivým procesům, tedy je možné je použít například při ochraně dat před vyzrazením tím, že se untrusted procesům omezí initial capabilities.