project:administrativa:brmlib
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revision | |||
project:administrativa:brmlib [2012/07/20 13:21] – [Optional Modules] pasky | project:administrativa:brmlib [2012/07/23 09:06] (current) – [Architektura] da3m0n22 | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== 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 | ||
+ | |||
+ | <note important> | ||
+ | |||
+ | <note warning> | ||
+ | |||
+ | 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í, | ||
+ | * 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, | ||
+ | * 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), | ||
+ | * 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/ | ||
+ | * 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, | ||
+ | |||
+ | *POPO - Plain Old PHP Object (viz. POJO koncept) | ||
+ | |||
+ | ===== Core Modules ===== | ||
+ | |||
+ | <note tip> | ||
+ | |||
+ | * 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 " | ||
+ | * 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 ===== | ||
+ | |||
+ | <note tip> | ||
+ | |||
+ | * BrmDoor | ||
+ | * AccessLogging | ||
+ | * LDAP interface | ||
+ | * Automatická správa SSH klíčů na brmlabích strojích | ||
+ | * ??? |