步骤 24。为安全标签定义对象初始化规则 - 可选
在系统中的对象可用前,正确设置对象的安全标签很重要。例如,应该在最初检入对象时设置安全标签,以防止将敏感信息暴露给意料之外的访问者。如果在创建对象时没有设置安全标签,安全标签将自动默认为其空值。因此对象将不受限制,任何具有对象“读取”权限的用户都能够查看它。您有责任定义对象初始化规则,其中默认的安全标签值必须是非空值。
某些对象没有用于创建操作的用户界面。例如,对于使用“从压缩文件上传文档”操作创建的升级通知和文档,没有界面。如果要使这些对象受到限制,则必须为它们定义对象初始化规则,以便创建对象时可设置相应的安全标签值。
对象初始化规则也可用于为使用创建用户界面的对象类型设置默认安全标签值。有关可带有安全标签的对象的列表,请参阅 <Windchill>/conf/exposedSecurityLabelObjects.xml 文件,其中 <Windchill> 是 Windchill 解决方案的安装位置。
在新对象窗口中设置安全标签值时可使用以下属性约束:
• GetHiddenConstraint:在新的对象窗口中隐藏安全标签和安全标签值。
• GetDiscreteSetConstraint:在下拉列表中仅显示在对象初始化规则中指定的标签值。
|
使用自定义安全标签时,通过使用 GetDiscreteSetConstraint 属性约束来设置对象初始化规则,可对用户为自定义安全标签指定的值加以限制。
|
• GetImmutableConstraint:防止用户更改显示值。
• GetServerAssignedConstraint:显示标签名称,但不显示标签值。代替该值显示的文本是“(生成的)”。
• GetServerPreGeneratedValue:将指定的值显示为标签的默认值。
可通过
“对象初始化规则管理”实用程序创建和编辑对象初始化规则。以下过程提供了创建或更新对象类型的对象初始化规则的一般步骤。有关使用
“对象初始化规则管理”实用程序的详细信息,请参阅
对象初始化规则表。
1. 在要定义其规则的上下文的“实用程序”页面中,打开“对象初始化规则管理”实用程序。可以在任何上下文级别指定对象初始化规则。这表示您可以为站点级别上下文中某个类型的所有对象设置默认规则,并且在组织上下文或者特定应用程序上下文 (如产品或项目) 中指定不同规则。例如,可以将对象初始化规则指定为,在您站点上创建的任何文档的默认“公司专有”安全标签值均为“专用”,但是应指定特定项目中所有文档的默认“公司专有”安全标签值均为“公司最高机密”。
2. 如果对象类型具有规则,则将现有规则下载到您的本地计算机,然后在文本编辑器中打开 XML 文件。如果正在创建新规则,PTC 建议您下载现有规则,并将其保存为新文件以作为新规则的模板使用。
3. 编辑 XML 文件,为安全标签添加所需的默认值。尽管在特定上下文中一个对象只能拥有一个对象初始化规则,但是该规则可以包含多个元素。
例如,要指定“出口管制”安全标签默认为“需要许可证 - 政府”,并且在显示值列表时此值将会默认选中,请添加以下内容:
<!--set default security label values-->
<AttrValue id="EXPORT_CONTROL" algorithm=
"wt.rule.algorithm.StringConstant">
<Arg>LNS</Arg>
</AttrValue>
<AttrConstraint id="EXPORT_CONTROL" algorithm="com.ptc.core.
rule.server.impl.GatherAttributeConstraints">
<Value algorithm="com.ptc.core.rule.server.impl.
GetServerPreGeneratedValue"/>
</AttrConstraint>
要用于默认安全标签值的算法需要生成一个包含 <Arg> 元素的安全标签值名称的字符串。例如,可使用 wt.rule.algorithm.StringConstant 算法。
AttrValue 元素 id 属性的值是在安全标签配置文件中定义的安全标签名称。
可以为系统中的每个安全标签添加 AttrValue 元素。
Arg 元素应是在 securityLabelsConfiguration.xml 文件中为标准安全标签指定的安全标签值的名称和自定义安全标签的安全标签值的外部值。
4. 将 XML 文件保存到计算机上的已知位置。如果需要,可以为该文件指定一个有意义的名称。
5. 如果编辑现有规则,从“对象初始化规则管理”表格的规则的操作列表中选择“编辑”。浏览到刚编辑的 XML 文件。
如果要创建新规则,请单击“新建对象初始化规则”图标
。输入对象的名称和类型标识符,然后浏览到刚编辑的 XML 文件。
6. 单击“确定”。该规则将立即生效。不需要重新启动方法服务器。
示例
以下示例说明如何将属性限制应用至“公司专有”示例安全标签的安全标签值选择。有关示例标签和可用值的详细信息,请参阅
公司专有 - 示例安全标签。
• 所需行为:将安全标签设置为默认值并隐藏安全标签,以使用户无法对值进行更改。如果未指定默认值,则将设置空 (无限制的) 值。
属性限制:GetHiddenConstraint
示例:
<AttrValue id="CORPORATE_PROPRIETARY" algorithm=
"wt.rule.algorithm.StringConstant">
<Arg>INT</Arg>
</AttrValue>
<AttrConstraint id="CORPORATE_PROPRIETARY" algorithm="com.ptc.core.
rule.server.impl.GatherAttributeConstraints">
<Value algorithm="com.ptc.core.rule.server.impl.
GetHiddenConstraint"/>
</AttrConstraint>
• 所需行为:将安全标签设置为默认值,并使值可见,但却处于只读状态。
属性限制:GetServerPreGeneratedValue 和 GetImmutableConstraint
示例:
<AttrValue id="CORPORATE_PROPRIETARY" algorithm=
"wt.rule.algorithm.StringConstant">
<Arg>INT</Arg>
</AttrValue>
<AttrConstraint id="CORPORATE_PROPRIETARY" algorithm="com.ptc.core.
rule.server.impl.GatherAttributeConstraints">
<Value algorithm="com.ptc.core.rule.server.impl.
GetServerPreGeneratedValue"/>
<Value algorithm="com.ptc.core.rule.server.impl.
GetImmutableConstraint"/>
</AttrConstraint>
• 所需行为:显示“(生成的)”并在创建对象时设置值。
属性限制:GetServerAssignedConstraint 和 GetImmutableConstraint
示例:
<AttrValue id="CORPORATE_PROPRIETARY" algorithm=
"wt.rule.algorithm.StringConstant">
<Arg>INT</Arg>
</AttrValue>
<AttrConstraint id="CORPORATE_PROPRIETARY" algorithm="com.ptc.core.
rule.server.impl.GatherAttributeConstraints">
<Value algorithm="com.ptc.core.rule.server.impl.
GetServerAssignedConstraint"/>
<Value algorithm="com.ptc.core.rule.server.impl.
GetImmutableConstraint"/>
</AttrConstraint>
• 所需行为:对于标准安全标签,将显示在下拉列表中的值限制为指定值。对于自定义安全标签,仅在下拉列表中列出特定值,而不是允许在文本框中显示任何值。
属性限制:GetDiscreteSetConstraint
示例:
<AttrValue id="CORPORATE_PROPRIETARY" algorithm=
"wt.rule.algorithm.StringConstant">
<Arg>NULL</Arg>
<Arg>INT</Arg>
</AttrValue>
<AttrConstraint id="CORPORATE_PROPRIETARY" algorithm="com.ptc.core.
rule.server.impl.GatherAttributeConstraints">
<Value algorithm="com.ptc.core.rule.server.impl.
GetDiscreteSetConstraint">
<Arg>INT</Arg>
</Value>
</AttrConstraint>
• 所需行为:对于标准安全标签,在下拉列表中显示一个默认值,而不是空 (无限制的) 值。对于自定义安全标签,在文本框中列出一个默认值。
属性限制:GetServerPreGeneratedValue
示例:
<AttrValue id="CORPORATE_PROPRIETARY" algorithm=
"wt.rule.algorithm.StringConstant">
<Arg>INT</Arg>
</AttrValue>
<AttrConstraint id="CORPORATE_PROPRIETARY" algorithm="com.ptc.core.
rule.server.impl.GatherAttributeConstraints">
<Value algorithm="com.ptc.core.rule.server.impl.
GetServerPreGeneratedValue"/>
</AttrConstraint>
• 所需行为:对于支持多个值的标准安全标签,请设置默认值,并使值可见但只读。请注意,为标准安全标签定义的多个值在自变量标记中始终以逗号分隔。
属性约束:GetServerPreGeneratedValue 和 GetImmutableConstraint
示例:
<AttrValue algorithm="wt.rule.algorithm.StringConstant" id="Secrecy_Label">
<Arg>Secret,NotSecret</Arg>
</AttrValue>
<AttrConstraint id="Secrecy_Label"
algorithm="com.ptc.core.rule.server.impl.GatherAttributeConstraints">
<Value algorithm="com.ptc.core.rule.server.impl.GetServerPreGeneratedValue"/>
<Value algorithm="com.ptc.core.rule.server.impl.GetImmutableConstraint"/>
</AttrConstraint>
• 所需行为:对于支持多个值的标准安全标签,系统会在下拉列表中显示默认值,但空 (无限制) 值除外。请注意,为标准安全标签定义的多个值在自变量标记中始终以逗号分隔。
属性约束:GetServerPreGeneratedValue
示例:
<AttrValue algorithm="wt.rule.algorithm.StringConstant" id="Secrecy_Label">
<Arg>Secret,NotSecret</Arg>
</AttrValue>
<AttrConstraint id="Secrecy_Label"
algorithm="com.ptc.core.rule.server.impl.GatherAttributeConstraints">
<Value algorithm="com.ptc.core.rule.server.impl.GetServerPreGeneratedValue"/>
</AttrConstraint>
• 所需行为:对于支持多个值的标准安全标签,系统会在创建对象时显示 (生成的) 并设置值。请注意,为标准安全标签定义的多个值在自变量标记中始终以逗号分隔。
属性约束:GetServerAssignedConstraint
<AttrValue algorithm="wt.rule.algorithm.StringConstant" id="Secrecy_Label">
<Arg>Secret,NotSecret</Arg>
</AttrValue>
<AttrConstraint id="Secrecy_Label"
algorithm="com.ptc.core.rule.server.impl.GatherAttributeConstraints">
<Value algorithm="com.ptc.core.rule.server.impl.GetServerAssignedConstraint"/>
</AttrConstraint>