OT: Agenda přístupových práv
Petr Ferschmann
pferschmann na softeu.com
Středa Srpen 5 13:37:29 CEST 2009
Zdravím,
my jsme tyto problémy obvykle řešili tak, že jsem pravidla pro výpis
měli současně zakódované i pro SQL dotazy. Obvykle totiž výpisová
pravidla byla výrazně jednodušší než
pro editaci nebo detail.
Nicméně to vždy znamenalo duplicitní pravidla. Do určité složitosti to jde.
Petr
Roman Pichlík napsal(a):
> Podle me mate tri moznosti:
>
> - zkuste to bez predpocitani, vytvorte si nejaky reprezentativni
> vzorek dat a na nem udelejte vykonostni test
> - pouzijte predpocitani, dle meho nazoru zmena tech ACL pripadne
> nejakych roli nemusi byt tak casta
> - uplne se na to vykaslete pri vypisovani seznamu zaznamu, proste bude
> listovat vsechny a pro ty, ktere nema pravo nepovolite danou akci. V
> podstate udelate vzdy dotaz jestli ma clovek opravneni na to s danym
> zaznamem pracovat. Da se to udelat i batchove jednim dotazem pro
> nactenou stanku.
>
> 2009/8/5 <jan.slusek na seznam.cz>:
>
>> Ahoj,
>>
>> vyvíjíme standartní obchodní evidenční systém s trochu sofistikovanější agendou přístupových práv, ktará je postavena na přístupových rolích uživatelů a vztahů těchto rolí k jednotlivým entitním objektům (uloženým záznamům v db) systému. Oprávnění na každou operaci (CRUD) na daném objektu se vyhodnocují podle složitých pravidel závislých na hodnotách jejích atributů a jejich vztahu k rolím přiděleným danému uživateli. Navíc se role mohou různě sčítat apod, zkrátka pravidla a algoritmy pro vyhodnocení povolení operace nad daným záznamem pro konkrétního uživatele jsou dost složitá. Analyticky máme celý systém vytvořen, ten zjednodušeně pro každý záznam vyhodnotí přístupová práva pro daného uživatele a případně povolí nebo zamítne požadovanou operaci. Nastává však problém v návrhové rovině, např. při generování seznamů. Pokud bude chtít uživatel zobrazit stránkovatelný seznam všech záznamů, musí se mu samozřejmě zobrazit jen ty, u kterých má právo čtení. Nedokážu si z výkonostního hlediska představit, že pro každý uložený záznam, kterých můžou být i miliony, budu až při generování seznamu ověřovat, zda jej má užvatel právo zobrazit nebo ne, pro každý záznam by se pak spouštěly složité algoritmy pro ověření práv a pokud by měl ve finále uživatel právo třeba na méně záznamů než kolik je zobrazovaných záznamů na stránku musely by se projít třeba i všechny záznamy. Zatím se jako jedno z řešení jeví, předpočítávat si konečná oprávnění pro danou operaci, uživatele a záznam někde na pozadí, ukládat si je do nějaké pomocné tabulky a při generování seznamu prostě jen tuto tabulku připojit. Toto ale zase vyvolává problém s aktualizacemi těchto pomocných tabulek, pokud se v runtime stane něco co by mohlo mít vliv na konečná oprávnění (např. změna rolí uživatelů, pravidel vyhodnocenování apod), budou se muset celé aktualizovat, což při celkovém počtu entit systému X (stovky) počet záznamů každé enity (statisíce) X počet uživatelů (tisíce) bude opět znamenat výkonostní problém. Myslím, že tady už určitě někdo řešil něco podobného, proto bych byl vděčen za jakékoliv poznatky jak to třeba řešíte vy.
>>
>> Díky
>>
>>
>
>
>
>
--
Petr Ferschmann
--
SoftEU s.r.o.
Lochotínská 18, 301 00 Plzeň, Česká republika
Phone: +420 371 124 300, +420 371 124 384
E-mail: pferschmann na softeu.com http://www.softeu.com/
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://amaio.cz/pipermail/konference/attachments/20090805/2b9fe43f/attachment.htm>
------------- další část ---------------
A non-text attachment was scrubbed...
Name: pferschmann.vcf
Type: text/x-vcard
Size: 381 bytes
Desc: [žádný popis není k dispozici]
URL: <http://amaio.cz/pipermail/konference/attachments/20090805/2b9fe43f/attachment.vcf>
Další informace o konferenci Konference