Created
December 24, 2016 20:56
-
-
Save Pooky/07ec14fb0d54d1aea4a3a5d12489ba43 to your computer and use it in GitHub Desktop.
rbac ALGORITMUS
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
## Algoritmus pro získání rolí z množiny uživatel x oprávnění | |
Výsledkem tohoto algoritmu je množina rolí R, ve které jsou extrahovány optimální role s výčtem uživatelů, kteří tuto roli vlastní a společně s oprávněnými, která tato role má. | |
Krom těchto rolí, je výsledkem i množina zbytkových oprávnění, společně se seznamem uživatelů. | |
Algoritmus: | |
- vstupní parametry : | |
* k = nejmenší počet oprávnění v roli | |
* n = minimální počet uživatelů vlastnící roli | |
* z = optimální velikost role | |
* množina uživatel x oprávění [0,1] *(binární matrix)* | |
#### Postup algoritmu | |
1 ) Extrakce všech možných rolí | |
**Pro všechny uživatele v úplném binárním matrixu:** | |
* Vyber všechna jejich oprávnění | |
* Má uživatel méně oprávnění než **k** ? | |
* ulož všechny uživatelova oprávnění jako **zbytková oprávnění**¨ | |
* přidej uživatele ke každému zbytkovému oprávnění | |
* přejdi na dalšího uživatele | |
* Ulož oprávnění do množiny **oprávnění na zpracování** | |
* PRO VŠECHNA oprávnění v množině **oprávnění na zpracování** | |
* Vyber počet oprávnění větší než **k** | |
* aplikace algoritmu kombinací | |
* u daných kombinací nezáleží na pořadí | |
* je nutné mít všechny kombinace > k | |
* http://stackoverflow.com/a/29914908 | |
* Nejsou tyto oprávnění ještě v množině **ROLE**? | |
* ulož novou Roli Rx do množiny **ROLE** | |
* přidej této roli Rx všechna oprávnění | |
* JINAK | |
* vyber roli, která má shodné oprávnění role | |
* přičti jedničku k proměné **počet uživatelů vlastnící tuto roli** | |
* přidej uživatele k této roli do proměnné **uživatelé role** | |
2) Seřaď ROLE podle kritérí sestupně | |
- **Kritérium: velikost role** | |
- v porovnání role, zvýhodni role, které mají nejbližší odstup od optimální velikosti role | |
- **absolutní hodnota (počet oprávnění - optimální počet oprávnění)** | |
- **Kritérum: počet uživatelů** | |
- v porovnání role, zvýhodi role, které mají vyšší počet uživatelů | |
*Díky tomuto setřídění, lze iterovat role a postupně odebírat, jelikož vrchní role mají větší důležitost, než role následující.* | |
3) PRO VŠECHNY ROLE | |
- Existuje už role se stejnými oprávněnmi? | |
- Odeber tuto roli | |
- existuje už role, která je podřazená nebo nadřazená aktuální roli? | |
- lze z aktuální role oddělit roli podřazenou či nadřazenou? | |
- budou obě role vyhovovat providlu >= než **k**? | |
- POKUD ANO | |
- **proveď rozdělení rolí** | |
* přidej všem uživatelům nadřazené role, roli podřazenou | |
* přidej všem uživatelům podřazené role, roli nadřazenou | |
* odeber oprávnění role podřazené z role nadřazené | |
* **Znovu setřiď role** | |
* *Rozdělením role se mohla porušit hiearchie rolí, proto je potřeba role znovu setřídit a znovu projít.* | |
- obsahuje role některé oprávnění z aktuální role? | |
- má tato role stejné uživatele, jako testovaná role? | |
- **tato role je duplicitní, odeber tuto roli.** | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment