当前位置:天才代写 > tutorial > JAVA 教程 > 利用DMTF尺度的Profile打点IBM i用户权限

利用DMTF尺度的Profile打点IBM i用户权限

2017-11-11 08:00 星期六 所属: JAVA 教程 浏览:402

副标题#e#

引言

漫衍式打点事情组(Distributed Management Task Force,DMTF)是一个领 导开拓和采用打点尺度的行业组织。DMTF 的打点技能对付加强企业内部利用的 多厂商的东西之间的互操纵性起到要害浸染。通过在殽杂系统情况内陈设切合 DMTF 尺度的打点应用,客户可以举办统一打点,有效低落打点的巨大度和本钱 。

DMTF 已经针对差异的打点规模拟定和宣布了一系列打点 Profile。譬喻针对 软件规模的 Software Inventory Profile 等。这些 Profile 运用通用信息模 型(Common Information Model,CIM)来描写打点工具,以面向工具的要领构 建受管工具类,接洽,属性,操纵等。本文示譬喻何把 Role Based Authorization Profile 运用到 IBM i 系统长举办权限打点,并团结 Standards Based Linux Instrumentation for Manageability(SBLIM)开拓东西 包展示如何开拓打点接口。

IBM i 上的用户脚色和权限

IBM i界说了 5 种脚色和 8 个权限,这些脚色和权限之间存在着如表 1 所 示的默认的对应干系。QSECURITY 是一个暗示安详级此外系统值,在差异的安详 级别上脚色对应的权限也有相应的不同。IBM i 支持用户修改默认权限,譬喻, 在 QSECURITY 为 10 的环境下,用户 A 被授予 USER 脚色,那么用户 A 应该 默认拥有 *ALLOBJ 和 *SAVSYS 两个权限,但也答允为用户 A 特别授予 *SECADM 权限,这种权限的定制只范围于当前用户。

表 1. IBM i 脚色和权限对应干系表

Role Privileges
QSECURITY level 10 or 20 QSECURITY level 30 or above
USER "*ALLOBJ", "*SAVSYS"  
SYSOPR "*ALLOBJ", "*SAVSYS", "*JOBCTL" "*SAVSYS", "*JOBCTL"
PGMR "*ALLOBJ", "*SAVSYS", "*JOBCTL"  
SECADM "*ALLOBJ", "*SAVSYS", "SECADM", "*JOBCTL" "*SECADM"
SECOFR "*ALLOBJ", "*AUDIT", "*IOSYSCFG", "*JOBCTL", "*SAVSYS", "SECADM", "*SERVICE", "*SPLCTL" "*ALLOBJ", "*AUDIT", "*IOSYSCFG", "*JOBCTL", "*SAVSYS", "SECADM", "*SERVICE", "*SPLCTL"

基于脚色授权 Profile

图 1 显示了 DMTF 基于脚色授权 Profile 的类以及他们之间的接洽。个中 类 Role 用来建模脚色,类 Privilege 用来建模权限,这两个类之间利用关联 类 MemberOfCollection 来暗示表 1 中的对应干系。类 Identity 用来暗示账 号,用户可能用户组的安详署理,为用户产生脚色或权限验证等操纵提供安详相 关的信息。在 Identity 和 Role 之间的关联类 MemberOfCollection 用来辅佐 发明一个用户拥有的脚色。类和类之间的干系可分为两种,个中赤色线条代表关 联干系,绿色线条暗示组合或包括干系;类和类存在一对一,一对多和多对多等 环境。

图 1. 基于脚色授权 Profile 的类图

操作DMTF标准的Profile解决IBM i用户权限


#p#副标题#e#

类 RoleBasedAuthorizationService 声明白 Profile 支持的内部操纵和外 部要领。这些要领为打点应用提供了修改用户权限的手段。从实现者的角度,可 以有选择的支持这些要领。这些要领主要有:

CreateRole(),建设具有非凡权限的新脚色

DeleteRole(),删除一个脚色

ModifyRole(),修改脚色及其具有的权限

AssignRole(),授予用户某个脚色

ShowAccess(),查询用户权限

ShowRoles(),查询用户脚色

以 ModifyRole() 要领为例,该要领需要一个 Role 的实例和若干 Privilege 的实例作为输入参数,这些实例是通过关联类 ServiceAffectsElement 来获得的,ServiceAffectsElement 用来查询支持 RoleBasedAuthorizationService 类上的要领的脚色和权限的荟萃。

作为 Profile 的利用者,如何得知以上要领是否被支持呢?类 RoleBasedManagementCapabilities 中的属性 SupportedMethods 中包括了已经 实现的要领。在挪用 RoleBasedAuthorizationService 中相应的要领前,应该 先查询 RoleBasedManagementCapabilities 的 SupportedMethods 中是否已经 支持了该要领。

用户权限打点

#p#分页标题#e#

由于代表权限的类 Privilege 和代表用户的类 Identity 之间并未存在直接 的接洽,为了发明一个用户的权限,需要通过该用户的脚色,即通过两次 MemberOfCollection 关联干系来获得用户的权限,这也说明权限的组合界说了 脚色。在默认环境下,一个通用的脚色应该拥有牢靠的众所周知的某些权限,例 如表 1 中的 5 种脚色都属于通用的脚色。如果有一个用户 A,我们想赋予他 *ALLOBJ 和 *SAVSYS 权限,那么我们为他指定一个通用的 USER 脚色即可。如 图 2 所示:

图 2. 利用系统通用脚色举办权限打点

操作DMTF标准的Profile解决IBM i用户权限

但思量以下环境:假如我们同时想授予用户 A 一个 *SECADM 权限,但不幸 的是没有一个通用的脚色同时拥有且只拥有这三个权限,那么基于脚色授权 Profile 是怎么处理惩罚这种环境呢?

#p#副标题#e#

方法一:建设新的通用脚色

基于脚色授权 Profile 答允建设拥有客户化权限的新的通用脚色。一个具有 以上三种权限的脚色被建设和指定给用户 A 即可,同时该脚色生存在系统中并 可以指定给其他用户。这样通过 MemberOfCollection,一个 Identity 类的实 例不再关联到通用脚色 USER 而是新建的脚色,通过该新脚色就能获取用户 A 的 3 个权限。遗憾的是在 IBM i 上并不支持建设新脚色,所以这种方法不合用 于 IBM i。

图 3. 通过建设新的通用脚色举办权限打点

操作DMTF标准的Profile解决IBM i用户权限

方法二:专有的脚色

在这种方法下,用户 A 通过 ConcreteDependency 关联到一个专门用于用户 A 的脚色,这个脚色不能应用到其他用户,该脚色关联 3 个权限。这个专门的 脚色存在的前提是没有通用的脚色可以表达用户的权限。这样客户化的权限可以 单独授予每个用户。请留意专有脚色和 Identity 之间利用的毗连类是 ConcreteDependency 而非 MemberOfCollection 以区分专有脚色和通用脚色。

图 4. 通过专有脚色举办权限打点

操作DMTF标准的Profile解决IBM i用户权限

在实现进程中,这两种权限打点方法可以同时存在。

#p#副标题#e#

基于脚色授权 Profile 的应用示例

基于 Profile 开拓打点应用措施的长处是流程和接口的尺度化。固然在系统 一侧,由于地址平台的差别,结构 Profile 中每个类的实例需要依赖平台相关 的代码,但假如支持了 Profile,那么在构建用户接口即 Console 侧,凭据 Profile 的用例来对这些打点数据的提取和利用,可以省略接口协商进程和做到 平台无关。

下面的代码利用到了 SBLIM 提供的开拓包,SBLIM 是 IBM 提倡的旨在 GNU/Linux 上打点尺度化的一个开源项目。SBLIM CIM Client for Java 是一个 Linux 客户应用框架,也可用于对切合 DMTF 打点尺度的其他平台上的打点应用 实现举办测试。

清单 1. 利用 SBLIM 开拓包构建打点措施实例

import  org.sblim.wbem.cim.CIMClass;
  import org.sblim.wbem.cim.CIMDataType;
  import org.sblim.wbem.cim.CIMException;
  import org.sblim.wbem.cim.CIMInstance;
  import org.sblim.wbem.cim.CIMObjectPath;
  import org.sblim.wbem.cim.CIMNameSpace;
  import org.sblim.wbem.cim.CIMProperty;
  import org.sblim.wbem.cim.CIMValue;
  import org.sblim.wbem.client.CIMClient;
  import org.sblim.wbem.client.PasswordCredential;
  import org.sblim.wbem.client.UserPrincipal;

……
  UserPrincipal cimPrinciple = new UserPrincipal ("JINGLEI");
  String password = "password";
  PasswordCredential cimCredential = new PasswordCredential (password.toCharArray());
  CIMNameSpace cimNamespace =
   new CIMNameSpace("http://CD06070C.CN.IBM.COM:5988",  "root/cimv2");
  CIMClient cimClient =
   new CIMClient(cimNamespace, cimPrinciple,  cimCredential,  CIMClient.CIM_XML);
  CIMObjectPath aPath = new CIMObjectPath("CIM_Identity",  "root/cimv2");
  Enumeration instNames = cimClient.enumerateInstanceNames (aPath);
  while(instNames.hasMoreElements())
  {
   CIMObjectPath eachEnumPath = (CIMObjectPath) instNames.nextElement();
   Enumeration assoNames = cimClient.associatorNames (eachEnumPath,
       "CIM_ConcreteDependency",null,null,null);

   while(assoNames.hasMoreElements())
   {
     CIMObjectPath retPath = (CIMObjectPath) assoNames.nextElement();
    Enumeration assoInsts = cimClient.associatorNames (retPath,
       "CIM_MemberOfCollection", null, null, null);
     while(assoInsts.hasMoreElements())
     {
       CIMObjectPath path = (CIMObjectPath) assoInsts.nextElement();
       String privilege = path.getKey ("InstanceID").getValue().toString();
     }
   }
  }
……

措施片段阐明 :

#p#分页标题#e#

本措施用来遍历 CD06070C.CN.IBM.COM 呆板上用户及其权限。CIMClient 是 SBLIM 提供的用于和打点应用处事器端举办通信的类,用来向处事一侧请求打点 工具信息。它封装了底层的通信毗连成立 , 动静发送吸收等根基成果。打点对 象的信息利用类 CIMObjectPath 来封装,cimClient.enumerateInstanceNames (aPath) 操纵将获取所有 CIM_Identity 类的实例,而 CIM_Identity 是 DMTF 界说的用来建模系统帐户的类,即该操纵将获取 IBM i 上所有系统帐户的实例 。对付每一个帐户 , 为了获得其对应的权限 , 参照图 4 的权限打点建模方法 , 首先通过关联类 CIM_ConcreteDependency 获得该用户的脚色 CIM_Role 的实 例。cimClient.associatorNames 实现从 CIM_Identity 到 CIM_Role 的映射。 在得到了用户脚色之后,再通过 cimClient.associatorNames 和关联类 CIM_MemberOfCollection 找到这个脚色拥有的权限 , 即 CIM_Privilege 的实 例。权限值放在 InstanceID 属性里 , 可以通过 CIMObjectPath 的 getKey 方 法提取。

竣事语

Profile 的呈现敦促了漫衍式情况下系统打点应用的尺度化历程。今朝, DMTF 已经宣布了几十个打点 Profile,内容设计软件,硬件,网络,虚拟化等 方面。跟着 Profile 的应用不绝深入,单点式的跨平台的系统打点软件将日趋 风行。

 

    关键字:

天才代写-代写联系方式