Table of Contents
Projekt BrmLib
Hlavním cílem projektu je vytvořit jednotnou základní modulární dokumentovanou opensource platformu, která splňuje naše vysoké bezpečnostní standardy a poskytne základ pro celou řadu rozšíření a projektů integrovaných v rámci BrmLabu
Základní charakteristiky
- Knihovna slouží především k evidenci uživatelů a jejich autorizaci
- uživatel != člen, může to být host, nebo bot, uživatel nebo systemova role
- Poskytuje veřejné dokumentované API pro veškeré dostupné funkce
- Přenosová technologie je irelevantní, překlad do XML, JSON, CSV objektu je na urovni API interpreta
- V průběhu vývoje bude na přidružených repozitářích zveřejněna implementace API v dalších jazycích
- Defaultně dostupná bude knihovna v jazyce ve kterém se vyvíjí BrmLib
- Knihovna bude démon sandboxovaný do vlastního virtuálního stroje
- Bezpečnost na všech úorvních je ke specifikaci v nižší kapitole
- Základní součásti
- Databáze členů (Včetně všech různých přístupových objektů aka. ssh klice, certifikaty, name/pass, …)
- Firewall k datům a návazným modulům
- ACL (Access Control Layer)
- Webový interface
- Shell interface
- API
Bezpečnost
Obecně předpokládám že na tomhle tématu se bude vést nejbouřlivější diskuze prosím veškeré návrhy do seznamu níže: Jednotlivé kroky prověření bezpečnosti systému jsou k dispozici jako free tasks
- Fuzz testing API
- Minimalizace napadnutelných vektorů
- Předpokládám otevření pouze portů 80,22
- Pentesting všech funkcí ( i napadnutelnost interne z modulu)
Architektura
- Základem celého systému je BrmLib VM, ten zajišťuje
- Autentifikace uživatele
- Správu validity tokenu
- Správa uživatelů a přístupových oprávnění
- Validace a Autorizace každé akce provedené přímo na BrmLib nebo na podřízených modulech
- Validace dat ukádaných do databáze
- Veškeré moduly jsou registrovány do BrmLib pomocí API volání Ad-Hoc, není potřeba jejich autorizace
- Každý modul musí implementovat interface, pomocí kterého probíhá komunikace a kterým může být modul validován
- Většinou se modul dá považovat za poskytovatele dat (eg. Sklad je poskytovatel položek na skladě, účetní systém bude mít interní API pro zjištění zda má člen BrmLab dluh, etc..)
- Každý modul by měl být schopen definovat nové ACL prvky (attributy, skupiny)
- ACL pravidla budou mít úrovně (modul ji může pouze zvýšit, ne však snížit pod sys. hranici), tak že modul nemůže přepsat ACL daná BrmLib nebo Core Modules
- eg. přidělit danému uživateli dodatečné attributy, které mu poskytují dodatečné pravomoce v rámci modulů (eg. více modulů na dohodnutým attributem poskytuje různou funkčnost, ale autorizace je pouze jedna)
- V systému bude možné definovat posluchače pro události, a cílové akce které se mají provést
- Modul může definovat jak “Hook ID” (tj. název akce na kterou se poslouchá, ve stylu tld.modulename.hookid), tak registraci posluchače pro konkrétní ID
- Hook je chráněn ACL, a vykonává se v rámci uživatelských pravomocí které vytvořily událost
- eg. V případě že se objeví nová uživatelská skupina tak modul Sklad si zaktualizuje interní databázi skupin, pro svojí validní funkčnost
Technologie realizace
- Systém bude realizován jako webová aplikace v PHP
- Jako databázový podklad bude PostgreSQL
- Jak vrstva persistence (ukládání dat) tak vrstva přenosová (API) budou generické, tj. interpretace interních objektů bude závislá na interpretu (serializace/deserializace JSON/XML/… stejně jako persistence POPO* )
- Databáze je s ohledem na generičnost řešení pro potřeby BrmLab built-in do BrmLib VM, BrmLib však přebírá ODBC konektor, tedy nezávislý na lokaci a technologii DB
- Jednotlivé moduly mohou komunikovat mezi sebou, veškeré akce musí znovu autorizovat BrmLib (eg. ACL, validita pozadavku, existence ciloveho modulu, validace odpovedi, …)
Technologie byla zvolena s ohledem na jednoduchost jazyka a budoucí možnosti ořezání a poskytnutí široké veřejnosti jako základ modulárního IS To samozřejmě neznamená že by klient neměl použít alespoň VPS pro hosting funkčnosti, tj. nejsme omezeni v použití platform-specific řešení/hacků
*POPO - Plain Old PHP Object (viz. POJO koncept)
Core Modules
- Dokumenty
- sklad všech dokumentů s aplikováním ACL i na úrovni FS a katalogizačním systémem
- Účetní systém
- Správa pokladny (transakce, etc..)
- Implementace kontroly členskcýh poplatků
- Správa financování grantů, etc..
- BrmBüro
- správa veškerých “legal” záležitostí BrmLab
- napojeno na systém dokumentů
- napojeno na finance
- generování dokumentů
- katalogizace smluv a faktur
- Sklad
- Nový skladový systém, napojený na finance, dokumenty
- Muze poskytovat API pro naskladneni produktu
- BrmBar
- Napojený na sklad, účetní systém
- Klient (screen+scanner v kuchyni) bude thin-client nad BrmBar API
Optional Modules
- BrmDoor
- AccessLogging
- LDAP interface
- Automatická správa SSH klíčů na brmlabích strojích
- ???