Zenoss Core管理权限相对比较简单,只有ZenUser,ZenManager,Manager三个角色。Manager为超级管理员角色。ZenManager为一般性管理员角色。而ZenUser为一般访问角色。三个角色都可以遍访所有设备。因此,Zenoss Core版本不能做到基本不同用户分配不同设备管理(查看与调整)的功能,不能说这是Zenoss Core版本的一大缺陷(企业版本支持)。
    但实际上,Zenoss在设计中,支持利用Administered Objects(以下简称AO)设定某一对象(设备或组织)的访问权限。因此,只需要提供更为丰富的角色权限,即可以实现用户分类管理的功能。
    Skills1st公司提供了简单的USerRole Zenpack,该Zenpack的具体功能如下:
  • Create a new role, ZenOperator, that has the normal ZenUser permissions plus "Manage Events" which lets a user Ack / Close events
  • Create a new role, ZenCommon, with very minimal permissions
  • For those devices / device organizers that are allocated as Administered Objects to a user,  devices can be viewed, their events can be Ack'ed / Closed, performance graphs are available and Locations will appear on the Dashboard GoogleMaps portlet.
  • Conversely, users ONLY see what are allocated to them as Administerd Objects
  • I have included a utility I found on the wiki (I think from cluther???) - copyDashboardState.py - that copies a model dashboard to other users - it's in the lib directory.
  • Fixes various bugs to do with Administered Objects so that Locations, Groups Systems and Device Classes can be allocated / removed successfully as Administered Objects
    接下来,我们来安装这个Zenpack(该Zenapck支持3.X和4.X版本)
    # su - zenoss
    $ wget -c http://community.zenoss.org/servlet/JiveServlet/download/60516-5544/ZenPacks.skills1st.UserRoles.tar
   将下载的文件复制到zenoss的主目录中,并将修改所有权限。
   $ cp ZenPacks.skills1st.UserRoles.tar $ZENHOME/
   $ cd $ZENHOME
   解压Tar包。
   $ tar xvf ZenPacks.skills1st.UserRoles.tar
   利用Link方式将Zenapck安装
   $ zenpack --link --install ZenPacks.skills1st.UserRoles
   重启Zope和Zenhub进程
   $ zenhub restart
   $ zopectl restart
   UserRole的Zenpack已经安装好了。官方提示通过浏览:8080/zport/manage_access查看两个角色是否安装完毕,当然,你可以通过ADVANCED中的用户查看是否安装了这两个包角色。

简单的测试权限管理的应用:
   首先,在Zenoss中创建一个帐号,并分配给ZenCommon角色(ZenCommon是最小的访问权限,只登录界面,没有访问任何对象的权限)
   在用户的管理界面中,提供了AO的定制,我们可以通过这里AO,分配给指定的对象相对应的角色。(ZenUser是用户访问角色;ZenOpertor在ZenUser的基础上管理事件。ZenManager可以基于对象进行管理近操作)。
   AO的操作即可以对于具体的用户,也可以应用于一个用户组,在用户管理界面中,可以添加用户组。(由于Zenapck仍处于Beta,因此,比较建议利用用户组进行管理,一但某些AO操作无效的话,删除这一组即可。)
   如果使用用户组定义AO,哪么,最后只需要将用户指定到该组即可。

我的测试实例。建立一个winmin用户,管理Windows服务器。在AO设定上,我利用了Windows的组进行限定。
zenoss Core 用户权限管理的实现(UserRoles.zenpack)-LMLPHP
图1:用户与组的定义

zenoss Core 用户权限管理的实现(UserRoles.zenpack)-LMLPHP
图2:组中AO的设定

zenoss Core 用户权限管理的实现(UserRoles.zenpack)-LMLPHP
图3:使用winmin用户登录,测试结果。



11-22 22:25