IT运维流程库历史主题 · 只读
← 返回目录

二次开发-数据环境-管理工具委派


委托'管理工具'菜单
先决条件:您必须熟悉教程中使用的语法 并且已经创建了一个扩展.

学习:将管理员菜单授予管理员以外的用户

水平:[ ttps://]高级

域:[ ttps://]XMLL [ ttps://]Access rights

最低版本:2.5.0

从iTop 2.5版本开始,您可以将管理员菜单授予管理员以外的用户。

局限性
除管理员以外,不能将以下菜单提供给其他任何人:

  • Schedule Backup
  • Configuration
  • ITSM Designer
  • ITop Hub

因此,某些类(例如与对象历史相关的所有类)都没有组织,从而允许访问带有允许组织的查询到查询的运行,从而产生用户漏洞,因为它们可以看到不允许看到的对象的历史。

菜单可视化
使用XML的1.5版本,现在可以控制访问基于类和右功能的任何菜单(读,写,删除等)。只有在该课程上拥有功能的人才能看到此菜单。

可以通过类上的功能绑定对菜单的访问

看到XML引用 有关自定义菜单的XML标签的详细信息。

如果组菜单没有当前用户的子菜单,则不显示组菜单

默认情况下,以下管理菜单由类上的功能控制。

  • Users:在用户上写
  • Profile:在简档上写
  • Notifications:写在触发器上
  • Audit:在AuditCategory上写
  • Run Query:在ResourceRunQueriesMenu上写
  • Query phrasebook:在查询上写
  • Export:在ResourceAdminMenu上写
  • Data Model:在ResourceRunQueriesMenu上写
  • Universal Search:在ResourceAdminMenu上写
  • Synchronization Data Sources:在SynchroDataSource上写

上面的所有类都可以在简档(角色)中(通过组)对其访问进行管理。

开箱即用,有6个新功能[ :8082/bin/view/5/5.2/5.2%C2%B711/#new_groups]团体 它们是预定义,可以由现有或新的简档(角色)使用:

群组编号默认包含菜单组中包含的类
User
用户帐户,配置文件User, URP_UserOrg, URP_UserProfile, URP_Profiles
Audit
UAudit, 运行查询AuditCategory, AuditRule, ResourceRunQueriesMenu
Notification
通知,运行查询Trigger, Action, lnkTriggerAction, ResourceRunQueriesMenu
Query
查询短语手册,运行查询Query, QueryOQL, ResourceRunQueriesMenu
SynchroData
同步数据源SynchroDataSource
AdminTools
以上所有菜单all classes above

要访问该组之一,只需将该组添加到简档或创建以下建议的其中一项[ :8082/bin/view/5/5.2/5.2%C2%B711/#profiles_which_could_be_created]简档(角色)

无论您配置了什么,非管理员用户都将永远不允许:

  • 编辑拥有管理员简档的用户,
  • 将管理员简档赋予用户。


分步示例

假设您想让拥有简档'Config经理'的用户访问'导出Menu'

  • 控制没有明显的Class这个菜单,我们将创建一个新的Abstract类,命名为:'RessourceExportMenu'
  • 我们将自定义“导出菜单”条目以将其绑定到该新创建的类上(用“ RessourceExportMenu”替换“ ResourceAdminMenu”)
  • 我们将通过一个新的组自定义“ Config经理”简档,以在“ RessourceExportMenu”类上包含“ modify”


创建抽象类

您可能会使用一个现有的类,这对于控制对该菜单的访问很有意义,但是在“导出”的情况下,我们找不到任何令人满意的类,因此我们将创建一个新的类。

新课程必须:

  • 扩展AbstractResource
  • 拥有类别grant_by_profile

<class id="RessourceExportMenu" _delta="define"> <parent>AbstractResource</parent> <properties> <comment>/* Export Menu access control. */</comment> <abstract>true</abstract> <category>grant_by_profile</category> </properties> <presentation/> <methods/> </class>

覆盖菜单定义


[ ttps://]datamodels/2.x/itop-welcome-ITIL/datamodel.itop-welcome-ITIL.xml <menu id="ExportMenu" xsi:type="WebPageMenuNode" _delta="must_exist"> <enable_class _delta="redefine">RessourceExportMenu</enable_class> <enable_action _delta="redefine">UR_ACTION_MODIFY</enable_action> </menu>

完整的组和简档定义
[ ttps://]datamodels/2.x/itop-profiles-ITIL/datamodel.itop-profiles-ITIL.xml <user_rights> <groups> <group id="Export" _delta="define"> <classes> <class id="RessourceExportMenu"/> </group> </groups> <profiles> <profile id="3" _delta="must_exist"> <!-- id=3 correspond to the Configuration Manager profile --> <groups> <group id="Export" _delta="define"> <actions> <action id="action:write">allow</action> </actions> </group> </groups> </profile> </profiles> </user_rights>

在datamodel.itop-简档(角色)-ITIL.xml中检入现有简档(角色)的ID。

可以创建的简档(角色)
这些简档(角色)不存在,但是您可以创建它们,以便将“管理工具”菜单委托给用户:

<user_rights>
<profiles> <profile id="43" _delta="define"> <name>User Manager</name> <description>create/modify/delete users...</description> <groups> <group id="User"> <actions> <action id="action:write">allow</action> <action id="action:delete">allow</action> <action id="action:read">allow</action> <action id="action:read bulk">allow</action> <action id="action:write bulk">allow</action> </actions> </group> </groups> </profile> <profile id="44" _delta="define"> <name>Notification Manager</name> <description>Has the rights to create and modify the triggers and actions</description> <groups> <group id="Notification"> <actions> <action id="action:write">allow</action> <action id="action:delete">allow</action> <action id="action:read">allow</action> <action id="action:read bulk">allow</action> <action id="action:write bulk">allow</action> </actions> </group> </groups> </profile> <profile id="45" _delta="define"> <name>Audit Manager</name> <description>Has the rights to create and modify the audit</description> <groups> <group id="Audit"> <actions> <action id="action:write">allow</action> <action id="action:delete">allow</action> <action id="action:read">allow</action> <action id="action:read bulk">allow</action> <action id="action:write bulk">allow</action> </actions> </group> </groups> </profile> <profile id="46" _delta="define"> <name>Query Manager</name> <description>Has the rights to create and modify the Query Phrasebook</description> <groups> <group id="Query"> <actions> <action id="action:write">allow</action> <action id="action:delete">allow</action> <action id="action:read">allow</action> <action id="action:read bulk">allow</action> <action id="action:write bulk">allow</action> </actions> </group> </groups> </profile> <profile id="47" _delta="define"> <name>SynchroData Manager</name> <description>Has the rights to create and modify the Synchro data source</description> <groups> <group id="SynchroData"> <actions> <action id="action:write">allow</action> <action id="action:delete">allow</action> <action id="action:read">allow</action> <action id="action:read bulk">allow</action> <action id="action:write bulk">allow</action> </actions> </group> </groups> </profile> <profile id="48" _delta="define"> <name>Admin Tools Manager</name> <description>Has the rights to Admin</description> <groups> <group id="AdminTools"> <actions> <action id="action:write">allow</action> <action id="action:delete">allow</action> <action id="action:read">allow</action> </actions> </group> </groups> </profile> </profiles> </user_rights> 技术细节
详细说明了菜单访问中2.5所做的修改和补充:

XML中的“管理工具”菜单
管理员菜单以前完全用纯PHP编写,并通过isAdministrator()检查加以保护。它已被翻译成XML,因此现在可以被覆盖。

菜单XML引用已得到丰富,可以指定,类,功能甚至是访问菜单所需的刺激。

当标签enable_admin_only设置为1时,将忽略提供的任何<enable_class>标签:只有具有管理员简档的用户才能看到此菜单。

如果要授予对enable_admin_only菜单的访问权限,则必须将标签enable_admin_only设置为0,或者使用_delta =“ delete”完全删除标签,并至少添加enable_class和enable_标签标签。

设计旨在与以前的iTop版本保持扩展兼容性。

NewObjectMenuNode,SearchMenuNode和OQLMenuNode具有控制可访问的自动类

需要保护WebPageMenuNode以防止直接访问(用户可能会猜测WebPage的URL,即使他没有看到菜单也尝试访问它)。为此,每个网页都将根据ApplicationMenu :: CheckMenuIdEnabled(“ MenuId”);进行检查。与MenuIdbeeinging在菜单的xml定义中使用的ID。这确保了为了能够执行网页,用户必须有权访问相应的菜单。

新的抽象类
一些管理菜单没有任何逻辑类可绑定,因此我们创建了专门用于控制此访问的新类。您可以根据需要使用此列表。

班级名称用法
抽象资源新的访问权限类应继承自AbstractResource
资源运行查询菜单用于根据菜单运行查询检查用户访问权利
资源管理菜单默认情况下用于所有没有适当类别的菜单


bizmodel vs grant_by_profile classes
组*具有bizmodel类别的所有类。某些简档具有对组*的读取访问权限。

默认情况下,除Administrators以外的用户无法访问带有类别grant_by_profile classes。

  • 用于控制“管理工具”菜单的应用类具有类别grant_by_profile。
  • 新的抽象类还具有类别grant_by_profile。


Grant矩阵型的变更

授权矩阵型显示具有类别grant_by_profile或bizmodel的类。

在iTop 2.5之前,仅显示带有类别bizmodel的类。

示例:对于具有用户经理简档的用户,请参见授权矩阵型中的新条目:



新组

这是6个新的组,它们是预定义,可以由现有的或新的简档(角色)使用:

[ ttps://]datamodels/2.x/itop-profiles-ITIL/datamodel.itop-profiles-ITIL.xml
<user_rights> <group id="Notification" _delta="define"> <classes> <!-- This class list is also present in AdminTools group --> <class id="Trigger"/> <class id="lnkTriggerAction"/> <class id="Action"/> <class id="ResourceRunQueriesMenu"/> </classes> </group> <group id="User"> <classes> <!-- This class list is also present in AdminTools group --> <class id="User"/> <class id="URP_UserOrg"/> <class id="URP_UserProfile"/> <class id="URP_Profiles"/> </classes> </group> <group id="Audit"> <classes> <!-- This class list is also present in AdminTools group --> <class id="AuditCategory"/> <class id="AuditRule"/> <class id="ResourceRunQueriesMenu"/> </classes> </group> <group id="Query"> <classes> <!-- This class list is also present in AdminTools group --> <class id="Query"/> <class id="QueryOQL"/> <class id="ResourceRunQueriesMenu"/> </classes> </group> <group id="SynchroData"> <classes> <!-- This class list is also present in AdminTools group --> <class id="SynchroDataSource"/> </classes> </group> </user_rights> </itop_design>