Zabezpečení založené na způsobilosti (Capability-based security) je koncept v návrhu zabezpečených výpočetních systémů, jeden ze stávajících modelů zabezpečení. Způsobilost (známé v některých systémech jako klíč) je přenosným a nepadělatelným projev autority. Odkazuje na hodnotu, která jedinečně odkazuje na objekt spolu s přidruženou sadou přístupových práv. Na základě svého držení procesem, který používá odkazovaný objekt, token způsobilosti uděluje tomuto procesu způsobilost komunikovat s objektem určitými způsoby. V systému založeném na způsobilostech je to uživatel, který musí předložit svou autorizační způsobilost (a prokázat, že je jejím vlastníkem) poskytovateli služeb, zatímco v tradičním systému ACL je to poskytovatel služeb, který musí kontrolovat, zda je uživatel přímo nebo nepřímo (například prostřednictvím role vlastněné uživatelem) oprávněn provádět požadovanou operaci na požadovaném prostředku. [1]
Termín „způsobilost“ pochází z článku z roku 1966, který napsali Dennis a Van Horn. Ackerman a Plummer poté pro PDP-1 vytvořili operační systém založený na těchto myšlenkách. Existovaly však dřívější systémy, které implementují funkce přímo do hardwaru. Všechny „akce“ v systémech, které využívají schopnosti, spočívají v implementaci a dosažení jejich nepadělatelnosti.[2]
Zabezpečení založené na způsobilosti bylo poprvé vyvinuto v kontextu operačních systémů a bylo aplikováno na programovací jazyky a síťové protokoly. IBM System / 38, který byl předchůdcem úspěšného AS / 400, používal funkce pro správu přístupu k objektům. V 90. letech kombinoval programovací jazyk E se zabezpečením založeném na způsobilostech s objektově orientovaným programováním a vytvořilo zabezpečení založené na objektových schopnostech, kde jsou odkazy na objekty v programovacím jazyce OO bezpečně v paměti. Zabezpečení založené na objektových schopnostech dobře zapadá do konvenční moudrosti týkající se dobrého OO designu a návrhových vzorů, protože oba zdůrazňují eliminaci globálních proměnných a vyhýbání se statickým metodám, které mají vedlejší účinky. E také zahrnoval zabezpečený protokol pro volání metod přes síť pomocí funkcí. Tento protokol byl přijat a aktualizován Cap'n Proto frameworkem, který poskytuje efektivní binární protokol pro implementaci API na základě vzdálených volacích procedur. Funkce se nyní také objevují na populárních webech a rozhraních REST API, včetně těch od Google a Dropboxu.[3]
Zabezpečení založené na způsobilostech je podstatně lepší přístup k dnešnímu rámci ACL pro správu identit a přístupu pro vytváření zabezpečeného systému správy identit a přístupu.[4] Systému se způsobilostmi stačí pouhá skutečnost, že uživatelský program vlastní způsobilost, jenž jej opravňuje používat odkazovaný objekt v souladu s právy, která jsou specifikována touto způsobilostí. Teoreticky systém s funkcemi odstraňuje potřebu jakéhokoli seznamu řízení přístupu nebo podobného mechanismu tím, že poskytuje všem entitám všechny a pouze funkce, které skutečně budou potřebovat.
Díky způsobilostem mohou vývojáři velmi snadno psát kód, který podrobně definuje bezpečnostní oprávnění. Po vytvoření nelze pravidla v rámci způsobilosti změnit bez změny samotného klíče. To umožňuje vývojářům automaticky zachycovat Ambient Authority, protože způsobilost je vázána na samotný objekt.[4]
Způsobilost lze chápat jako dvojici (x, r), kde x je název objektu a r je množina výsad a práv. U každého subjektu můžeme uložit jeho způsobilost. A předmět prezentuje strážci způsobilosti k získání přístupu k objektu. Funkce je zcela přenositelná, nezáleží na tom, kdo tuto způsobilost představuje. Tento framework zcela eliminuje potřebu ověřování. S ACL jsme však předpokládali, že autentizace je neodpustitelná. Díky funkcím nyní potřebujeme způsob, jak učinit funkce neodpustitelnými. Na tom závisí úspěch mechanismu založeného na způsobilostech.[2]
Ve srovnání s předchozími přístupy autorizace založenými na způsobilostech, tato poskytuje následující další funkce, které představují zásadní inovaci oproti předchozím technikám založeným na způsobilostech: