ovirt笔记:基于ovirt4.0的虚拟资源管理的权限分析

尾调薄雾
• 阅读 1487

前言

虚拟资源管理平台是在ovirt4.0的基础上开发的,从原有的一个admin用户扩展成三个管理员用户和普通用户,下面简单分析一下其实现权限管理的原理。

数据库表

主要包括三张表:roles(角色表)、roles_group(角色与操作组关系表)、permissions(权限表)
角色RoleType有五种:SystemAdmin、SecurityAdmin、AuditAdmin、UserRole、QuotaConsumer

  • roles

ovirt笔记:基于ovirt4.0的虚拟资源管理的权限分析

  • roles_group角色与操作组关系表(操作组id就是actionGroup中的id,也就是动作组的id,)

ovirt笔记:基于ovirt4.0的虚拟资源管理的权限分析

  • permissions权限信息表(也相当于角色和用户的关联表,表示某个用户拥有对某个操作对象的权限,操作对香指存储,虚拟机,模板等对象)

ovirt笔记:基于ovirt4.0的虚拟资源管理的权限分析

定义操作:

通过VdcActionType进行操作自定义,通过枚举设置操作与操作组的从属关系,而ActionGroup是定义操作组(或者说动作组)
比如瘦客thinClient作为一个操作组,则其包括好多种操作,比如登录VdcLogin和退出VdcLogout等等

// VdcLogin
    VdcLogin(5003, ActionGroup.THINCLIENT, QuotaDependency.NONE),
    VdcLogout(5004, ActionGroup.THINCLIENT, QuotaDependency.NONE),

ovirt笔记:基于ovirt4.0的虚拟资源管理的权限分析

  • 通过00500_insert_roles.sql初始化角色权限

ovirt笔记:基于ovirt4.0的虚拟资源管理的权限分析

  • 权限验证事务:系统中所有操作Command都提供getPermissionCheckSubjects方法,用来定义执行操作的权限列表

ovirt笔记:基于ovirt4.0的虚拟资源管理的权限分析
permissionList权限列表中,包含权限对象PermissionSubject,权限对象的属性如下:

ovirt笔记:基于ovirt4.0的虚拟资源管理的权限分析

  • 在系统的各种command的执行时,会检测权限,每个操作Command执行,必须定义操作权限列表,否则会直接提示没有操作权限:

ovirt笔记:基于ovirt4.0的虚拟资源管理的权限分析

  • 最终通过存储过程进行权限查询get_entity_permissions

ovirt笔记:基于ovirt4.0的虚拟资源管理的权限分析
ovirt笔记:基于ovirt4.0的虚拟资源管理的权限分析

ovirt笔记:基于ovirt4.0的虚拟资源管理的权限分析

满足权限的条件判断(1,2必须满足,3,4,5满足其中一个)

  1. 系统登录用户系统登录用户(user_id) 所属的 角色(role),必须与 操作组(action_group_id) 在 roles_groups 表中有对应关系

role_id IN( SELECT role_id FROM roles_groups WHERE action_group_id = v_action_group_id)
2.必须拥有需要删除的虚拟机的权限( 或者 所属群集、数据中心的权限。有待探讨)
AND (object_id IN(SELECT id FROM fn_get_entity_parents(v_object_id,v_object_type_id)))
3.功能分配了everyone权限
v_everyone_object_id := getGlobalIds('everyone');
ad_element_id = v_everyone_object_id
4.功能分配了该登录用户的权限
ad_element_id = v_user_id
5.功能分配了该登录用户所属用户组的权限
ad_element_id IN(SELECT * FROM getUserAndGroupsById(v_user_id)

权限的增加和删除:

通过 AddPermissionCommand操作添加权限
ovirt笔记:基于ovirt4.0的虚拟资源管理的权限分析
通过RemovePermissionCommand的paramPermission操作删除权限,根据权限ID删除
getDbFacade().getPermissionDao().remove(perms.getId());

点赞
收藏
评论区
推荐文章
Stella981 Stella981
3年前
Spring Security使用详解5(角色继承)
之前的文章中,各个角色之间不具备任何关系,但一般来说角色之前是有关系的,例如ROLE\_admin一般既有admin的权限,又具有user的权限。下面介绍如何配置这种角色之间相互继承的关系。五、角色继承1、配置角色关系要配置角色继承关系,只需在SpringSecurity的配置类中提供一个RoleHierar
Wesley13 Wesley13
3年前
MySQL.授权管理
查看权限:showgrantsfor'用户’@‘IP地址’  授权:grant权限on数据库.表to‘用户’@‘IP地址’取消权限:revoke权限on数据库.表from‘用户’@‘IP地址’常用权限:allprivileges除grant外的所有权限     select  仅查权限     select,i
Wesley13 Wesley13
3年前
MySQL权限管理
\权限管理  \mysql用户权限表  mysql库的user表  mysqlselectuser,hostfromuser;    |user|host|    |d
Wesley13 Wesley13
3年前
030 SSM综合练习06
1.权限操作涉及的三张表(1)用户表信息描述users!(https://oscimg.oschina.net/oscnet/a4a2b1f943cbc2db1c8ddd613e7ed00a9ae.png)sql语句:CREATETABLEusers(idVARCHAR2(32)DEFAU
Stella981 Stella981
3年前
PHP Laravel5实现的RBAC权限管理操作示例
根据不同的权限,在菜单栏显示不同的功能,只对菜单进行了限制,若对路由也进行限制,可以根据菜单的例子,请自行完善,开发。下面请认真学习一下laravel的RBAC设计1、建表(用户表、角色表、权限表、用户角色表、角色权限表)1CREATETABLEIFNOTEXISTSmr_role2(3id
Wesley13 Wesley13
3年前
MySQL一一sql的视图、索引、约束
一、视图本质上相当于一张\\“虚拟表”\\,可当作独立的一张表进行操作(增、删、改、查)\\     作用:\\\\      a)\\可通过权限控制,只将“表中的少数列”暴露给数据库用户,而不让该用户直接操纵数据库中“实际表”\\      b)\\可将常用的,较复杂的SQL在数据库中预先定义好
Wesley13 Wesley13
3年前
oracle用户权限管理
oralce对权限管理比较严谨,普通用户之间也是默认不能互相访问的,需要互相授权1.查看当前数据库所有用户:select\fromall\_users;2.查看表所支持的权限:select\fromuser\_tab\_privs;3.把表的权限赋予用户:  grantselect,insert,updateon
Wesley13 Wesley13
3年前
oracle数据库逐步学习总结【基础二】
原创作品,转载请在文字开头明显位置注明出处:https://www.cnblogs.com/sunshine5683/p/10067872.html接着上一篇,继续总结!五、oracle表管理首先,在开头说一下sys用户和system用户的区别:sys用户是超级管理员,权限最大,system是系统管理员,权限次之,一般在管理系统时使用system
Wesley13 Wesley13
3年前
Mysql用户与权限操作
1.用户与权限概述用户是数据库的使用者和管理者。MySQL通过用户的设置来控制数据库操作人员的访问与操作范围。服务器中名为mysqI的数据库,用于维护数据库的用户以及权限的控制和管理。MySQL中的所有用户信息都保存在mysql.user数据表中。根据my
Stella981 Stella981
3年前
PostgreSQL学习手册(十) 角色和权限
 PostgreSQL是通过角色来管理数据库访问权限的,我们可以将一个角色看成是一个数据库用户,或者一组数据库用户。角色可以拥有数据库对象,如表、索引,也可以把这些对象上的权限赋予其它角色,以控制哪些用户对哪些对象拥有哪些权限。    一、数据库角色:   1\.创建角色:   CREATEROLE
Wesley13 Wesley13
3年前
C 实现基于角色的权限系统
本文demo下载地址:http://www.wisdomdd.cn/Wisdom/resource/articleDetail.htm?resourceId1068实例使用C实现基于角色的权限菜单管理系统,管理员可以添加用户,删除用户,添加分组,删除分组,添加角色,删除角色,为角色关联权限等功能,管理员用户自定义各个操作员的权限