摘要:前言虛擬資源管理平臺(tái)是在的基礎(chǔ)上開發(fā)的,從原有的一個(gè)用戶擴(kuò)展成三個(gè)管理員用戶和普通用戶,下面簡單分析一下其實(shí)現(xiàn)權(quán)限管理的原理。
前言
虛擬資源管理平臺(tái)是在ovirt4.0的基礎(chǔ)上開發(fā)的,從原有的一個(gè)admin用戶擴(kuò)展成三個(gè)管理員用戶和普通用戶,下面簡單分析一下其實(shí)現(xiàn)權(quán)限管理的原理。
數(shù)據(jù)庫表主要包括三張表:roles(角色表)、roles_group(角色與操作組關(guān)系表)、permissions(權(quán)限表)
角色RoleType有五種:SystemAdmin、SecurityAdmin、AuditAdmin、UserRole、QuotaConsumer
roles
roles_group角色與操作組關(guān)系表(操作組id就是actionGroup中的id,也就是動(dòng)作組的id,)
permissions權(quán)限信息表(也相當(dāng)于角色和用戶的關(guān)聯(lián)表,表示某個(gè)用戶擁有對(duì)某個(gè)操作對(duì)象的權(quán)限,操作對(duì)香指存儲(chǔ),虛擬機(jī),模板等對(duì)象)
定義操作:通過VdcActionType進(jìn)行操作自定義,通過枚舉設(shè)置操作與操作組的從屬關(guān)系,而ActionGroup是定義操作組(或者說動(dòng)作組)
比如瘦客thinClient作為一個(gè)操作組,則其包括好多種操作,比如登錄VdcLogin和退出VdcLogout等等
// VdcLogin VdcLogin(5003, ActionGroup.THINCLIENT, QuotaDependency.NONE), VdcLogout(5004, ActionGroup.THINCLIENT, QuotaDependency.NONE),
通過00500_insert_roles.sql初始化角色權(quán)限
權(quán)限驗(yàn)證事務(wù):系統(tǒng)中所有操作Command都提供getPermissionCheckSubjects方法,用來定義執(zhí)行操作的權(quán)限列表
permissionList權(quán)限列表中,包含權(quán)限對(duì)象PermissionSubject,權(quán)限對(duì)象的屬性如下:
在系統(tǒng)的各種command的執(zhí)行時(shí),會(huì)檢測權(quán)限,每個(gè)操作Command執(zhí)行,必須定義操作權(quán)限列表,否則會(huì)直接提示沒有操作權(quán)限:
最終通過存儲(chǔ)過程進(jìn)行權(quán)限查詢get_entity_permissions
滿足權(quán)限的條件判斷(1,2必須滿足,3,4,5滿足其中一個(gè))
系統(tǒng)登錄用戶系統(tǒng)登錄用戶(user_id) 所屬的 角色(role),必須與 操作組(action_group_id) 在 roles_groups 表中有對(duì)應(yīng)關(guān)系
role_id IN( SELECT role_id FROM roles_groups WHERE action_group_id = v_action_group_id)
2.必須擁有需要?jiǎng)h除的虛擬機(jī)的權(quán)限( 或者 所屬群集、數(shù)據(jù)中心的權(quán)限。有待探討)
AND (object_id IN(SELECT id FROM fn_get_entity_parents(v_object_id,v_object_type_id)))
3.功能分配了everyone權(quán)限
v_everyone_object_id := getGlobalIds("everyone");
ad_element_id = v_everyone_object_id
4.功能分配了該登錄用戶的權(quán)限
ad_element_id = v_user_id
5.功能分配了該登錄用戶所屬用戶組的權(quán)限
ad_element_id IN(SELECT * FROM getUserAndGroupsById(v_user_id)
通過 AddPermissionCommand操作添加權(quán)限
通過RemovePermissionCommand的paramPermission操作刪除權(quán)限,根據(jù)權(quán)限ID刪除
getDbFacade().getPermissionDao().remove(perms.getId());
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/77104.html
摘要:最近在寫登錄策略配置模塊,現(xiàn)在通過分析登錄策略配置模塊來說明系統(tǒng)的層次結(jié)構(gòu)。這樣實(shí)現(xiàn)起來簡單明了,不過由于是根據(jù)角色定義登錄限制策略,同一種角色只有一種登錄限制策略,對(duì)不同用戶暫時(shí)不能做到多樣性控制,后期再修正。 最近在寫登錄策略配置LoginConfig模塊,現(xiàn)在通過分析登錄策略配置模塊來說明系統(tǒng)的層次結(jié)構(gòu)。系統(tǒng)后臺(tái)主要包括四層: 1. 數(shù)據(jù)庫層:包括表、存儲(chǔ)過程、實(shí)體類 2. 數(shù)據(jù)...
摘要:最近在寫登錄策略配置模塊,現(xiàn)在通過分析登錄策略配置模塊來說明系統(tǒng)的層次結(jié)構(gòu)。這樣實(shí)現(xiàn)起來簡單明了,不過由于是根據(jù)角色定義登錄限制策略,同一種角色只有一種登錄限制策略,對(duì)不同用戶暫時(shí)不能做到多樣性控制,后期再修正。 最近在寫登錄策略配置LoginConfig模塊,現(xiàn)在通過分析登錄策略配置模塊來說明系統(tǒng)的層次結(jié)構(gòu)。系統(tǒng)后臺(tái)主要包括四層: 1. 數(shù)據(jù)庫層:包括表、存儲(chǔ)過程、實(shí)體類 2. 數(shù)據(jù)...
摘要:彼時(shí),從虛擬化管理到公有云,熱鬧異常。雖然年才明顯放棄公有云的全面競爭,但在年決定發(fā)起和開源項(xiàng)目是,不說明確,至少已經(jīng)隱隱覺得肯定搞不過亞馬遜了。年前賣的多火,被視為虛擬主機(jī)的升級(jí)版。當(dāng)然不是新堆棧,而是傳統(tǒng)堆棧。 還記得在十多年前,SaaS鼻祖SalesForce喊出的口號(hào)『No Software』嗎?SalesForce在這個(gè)口號(hào)聲中開創(chuàng)了SaaS行業(yè),并成為當(dāng)今市值460億美元的Saa...
摘要:本人的學(xué)習(xí)筆記,主要是對(duì)我的第一本書從入門到實(shí)踐的學(xué)習(xí)記錄,并結(jié)合其他各種資源的學(xué)習(xí),歡迎大牛們指點(diǎn)。最新的容器引入了容器如,容器不再僅僅是一個(gè)單純的運(yùn)行環(huán)境。鏡像是基于聯(lián)合文件系統(tǒng)的一種層式的結(jié)構(gòu),由一系列指令一步步構(gòu)建處理。 本人的學(xué)習(xí)筆記,主要是對(duì)《我的第一本Docker書》、《Docker —— 從入門到實(shí)踐》的學(xué)習(xí)記錄,并結(jié)合其他各種資源的學(xué)習(xí),歡迎大牛們指點(diǎn)。 容器簡介 ...
閱讀 3160·2021-11-22 12:01
閱讀 3780·2021-08-30 09:46
閱讀 793·2019-08-30 13:48
閱讀 3227·2019-08-29 16:43
閱讀 1671·2019-08-29 16:33
閱讀 1862·2019-08-29 13:44
閱讀 1426·2019-08-26 13:45
閱讀 2241·2019-08-26 11:44