添加保密属性
通过将保密字段放入独立类并控制访问权限,实现字段级别的保密属性。
本文档介绍如何在 iTop 中为特定对象添加保密属性,限制特定用户角色的读写访问。更多详细内容请参考 iTop 官方文档。
目标
需求: 特定对象上的某些信息需要对部分用户限制可见性。
约束: 目前 iTop 按类和组织全局控制读取访问,没有字段级别的选项。
方案: 本教程提供一种实现保密属性的方式:
- 读取权限限制为具有特定角色的用户,其他用户只能看到
* - 写入权限按角色分配
- 保密属性可以是任意类型:成本、HTML 描述、图片、案例日志等
设计概述
为确保该字段不被未授权用户读取,我们将其放入一个独立的类中。
注意: 基于当前用户隐藏对象详情中的字段是一种虚假的安全性。通过配置对象列表中显示的字段,任何人都可以获取该字段的值。
实现步骤:
- 创建保密类
- 更新宿主类
- 建立一对一关系的连接
保密类
这个新类只包含:
- 一个硬编码的友好名称
****** - 一个
value字段,类型对应需要存储的保密值 - 一个指向宿主类的外部键(宿主类本应包含该保密属性)
该类必须设置 category = grant_by_profile, application:
grant_by_profile允许控制谁可以看到它。需要创建一个包含此新类的组,以及包含该组的配置文件application将其从 “所有类” 组提供的读取访问中移除
定义一个摘要卡片,显示 “value” 和宿主对象的友好名称。
可以放在任何模块中,但放在宿主类所在的模块更合理。
- 防止从保密属性类编辑外部键 → 设为只读(2 个事件)
- 当不存在外部键时,通过 CheckToWrite 阻止创建此类对象(事件)
- 从表单中隐藏该字段,但将
host_id_friendlyname放入表单以帮助记住正在修改的内容
宿主类
创建一个指向新创建类的外部键:
- 添加过滤器,只列出未分配的保密属性(实际上避免提供任何已有项)
- 确保 AfterWrite → 更新保密属性的外部键
- 当外部键 != 0 时阻止编辑,但仍可以更改其内容
在保密类上创建一个 LinkedSet 属性,使用外部键 host_id,并将其显示为 “properties”。
同步键
参考 添加 1:1 关系。
局限性
- 无法阻止保密属性的纯创建,可能导致孤儿值
- 无法在弹出窗口中编辑属性
原文:https://www.itophub.io/wiki/page?id=3_2_0:customization:confidential-attribute
版本:3_2_0/customization/confidential-attribute.txt · Last modified: 2025/05/20 12:39 by 127.0.0.1