但实际上,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的组进行限定。
图1:用户与组的定义
图2:组中AO的设定
图3:使用winmin用户登录,测试结果。