Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
project:administrativa:brmlib [2012/07/20 15:21]
pasky [Optional Modules]
project:administrativa:brmlib [2012/07/23 11:06] (current)
da3m0n22 [Architektura]
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>​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</​note>​
 +
 +<note warning>​Název **BrmLib** je finální a definitivní,​ o názvu se žádná diskuze vést nebude</​note>​
 +
 +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 =====
 +
 +<note tip>​moduly nezbytné pro potřeby BrmLab, ale ne nezbytné pro běh BrmLib</​note>​
 +
 +  * 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 =====
 +
 +<note tip>​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</​note>​
 +
 +  * BrmDoor
 +  * AccessLogging
 +  * LDAP interface
 +  * Automatická správa SSH klíčů na brmlabích strojích
 +  * ???
 
Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Noncommercial-Share Alike 4.0 International
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki