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
Tato specifikace je otevřená, ale toto není místo pro diskuzi, pokud vám na aktuálním návrhu něco extrémně vadí nebo se chcete poradit/diskutovat o možných úpravách, použijte kanál #brmlab na
IRC
Název BrmLib je finální a definitivní, o názvu se žádná diskuze vést nebude
Základní charakteristiky
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
-
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 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
moduly nezbytné pro potřeby BrmLab, ale ne nezbytné pro běh BrmLib
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
BrmBar
Optional Modules
Přidávejte prosím jakékoli nápady na využití tohoto projektu, aby se při jeho realizaci daly odhalovat nesrovnalosti s jeho plánovaným využitím