端点配置合并
在此部分:
关于端点配置合并
端点配置合并使用 Application Control 代理将保存在某个端点上的多个 AAMP 配置文件合并到一个配置中。诸如组、用户、自定义和其他规则类型的属性以及每个配置的应用程序和策略库均会添加到这个合并的配置中。
完成合并的过程如下:将各个配置添加到端点上的目录中,然后在清单文件中指定要合并的配置。代理会监控合并目录,并在清单文件添加到目录中时自动合并各个配置。
通过端点配置合并,不同的业务部门可以在配置的特定区域中独立工作,然后各个区域可以进行合并,形成单一配置。
端点配置合并不支持 System Center Configuration Manager 集成。
合并组件
基础组件
每次合并均须具备基础配置 - 这是合并中的第一个配置,其他配置会添加到此配置中。合并的配置会从基础配置中获取全局属性,例如消息设置、审计及任何默认设置。
因此,在基础配置中定义未合并的设置至关重要。
默认情况下,基础配置只可设置为在端点上保存实时配置时所创建的 AAMP 文件:
%PROGRAMDATA%\AppSense\Application Manager\Configuration\configuration.aamp
但是,合并中的任何配置均可设置为基础配置。
只有最新版本的 AAMP 文件才能包含在合并中。
组件配置
合并的配置由基础配置和一个或多个组件配置组成。组件配置是指在合并过程中添加到基础配置中的 AAMP 文件。若要加入合并,组件配置必须存储在 MergeConfigs 目录中。
MergeConfigs 目录
此目录是存储要合并的组件配置的位置,也是系统在检测到有效清单时触发合并的位置。
在端点上启动 AMAgentService 时,系统会创建 MergeConfigs 目录:
%PROGRAMDATA%\AppSense\Application Manager\MergeConfigs
此目录受安全保护,因此只有管理员才能写入内容。这可确保最终用户不会影响合并配置
ManifestGen Tool
Application Control 包括一个命令行工具,可帮助合并配置和代码段。ManifestGen 工具会创建 XML 清单文件,用于定义和触发配置合并。该 XML 文件包含要合并的 AAMP 文件的详细信息,可以指示是将系统 configuration.aamp 还是组件配置用作合并中的基础配置。
为了更容易使用该工具,请将其位置添加到高级系统属性 > 环境变量 > 路径:
%PROGRAMFILES%\AppSense\Application Manager\Console
清单程序
清单是一个 XML 文件,其中包含要合并配置的详细信息,并可指示是否包含基础配置。如果在 MergeConfigs 目录中检测到相应配置,则清单会启动合并;如果代理检测到相应配置,则代理会启动合并。
代理是使用 ManifestGen 命令行工具创建的。
下表显示了构成清单 XML 文件的属性和标签:
属性/标签 | 说明 |
---|---|
MergeManifest
|
配置的根节点。 |
MergeFiles
|
要包含在合并中的 AAMP 文件列表的容器标记。 |
FileEntry Name
|
标识要包含在合并中的配置。该文件必须位于 MergeConfigs 目录内才能包含在合并中 |
UseSystemBase
|
如果清单中不存在 UseSystemBase,则其默认设置为 "true"。它可以设置为 "true" 或 "false",并指示在合并中包含/排除默认的 Configuration.aamp。这是位于 %ProgramData%\AppSense\Application Manager\Configuration\configuration.aamp 中的实时 Configuration.aamp 文件。 如果设置为 "true",则在部署清单时,基础配置必须已存在于端点上,否则合并便会失败。 如果设置为 "false",则 MergeFiles 列表中的第一个配置将用作基础配置,除非 BaseConfig 属性另有定义。 |
WaitForConfigs
|
确定相应行为,前提是 MergeConfigs 目录中检测到清单 .xml,但并非所有指定配置均已存在。可设置为: True - 如果清单中尚不存在此属性,则这是默认设置。合并将无限期等待,直到清单中引用的所有配置均已存在,然后才会完成合并。若要部署包含这些配置的清单,并且无法确定这些配置将按何种顺序添加到目录中,那么这就是理想设置。例如,当您使用 MSI 时。 False - 如果在 MergeConfigs 目录中检测到清单,但该清单引用的配置不存在,则合并将失败。 如果您使用 MSI 等安装程序将配置和清单推送到端点,建议您将此设置为 "true",因为您无法保证配置和清单的添加顺序。 如果使用 SystemBase Configuration.aamp 文件,此情况不适用。如果清单合并已触发但 Configuration.aamp 不存在,则合并将失败,它不会等待基础配置 |
校验和 (Optional) |
AAMP 文件唯一的 MD5 校验和。如果包含在清单中,则 MergeConfigs 文件夹中的 AAMP 文件必须具有相同的校验和才能包含在合并中。 校验和不会引用基础配置。 |
创建清单
-
保存要合并在 MergeConfigs 目录中的配置:
%PROGRAMDATA%\AppSense\Application Manager\MergeConfigs
- 打开命令行界面。
- 输入 cd %programdata%\AppSense\Application Manager 更改目录。
- 输入 manifestgen "C:\ProgramData\AppSense\Application Manager\MergeConfigs\*.aamp"。
如果您在 MergeConfigs 文件夹中运行 manifestgen,则代理便会在清单创建后立即选中它,并立即开始合并。
如果成功,则会在以下位置创建 merge_manifest.xml 文件:
%PROGRAMDATA%\AppSense\Application Manager
现在,清单便可用于触发合并及创建配置。
如果输出目录中已存在 merge_manifest.xml,则该工具将失败并且不会创建新清单 - 当前清单不会被覆盖。
附加命令
后缀 | 说明和用途 |
---|---|
-o
|
输出文件 - 指定生成合并配置的位置,例如, manifestGen "C:\ProgramData\AppSense\Application Manager\MergeConfigs\*.aamp" -o C:\Configs 创建清单,该清单将在 C 盘的 Configs 文件夹中创建合并配置。 |
-b
|
基础配置 - 确定基础配置并排除系统基础配置。例如, manifestGen "C:\ProgramData\AppSense\Application Manager\MergeConfigs\*.aamp" -b Config1.aamp 创建清单,该清单将创建一个 Config1.aamp 设置为基础配置的合并配置。 |
-nc
|
无校验和条目 - 默认情况下,清单中列出的每个配置都有一个 MD5 校验和,它是配置的唯一标识。如果清单中的校验和与配置的校验和不匹配,则合并将失败。将 -nc 后缀与 ManifestGen 工具一起使用不会列出清单中的校验和,这意味着如果配置文件名正确,则无论校验和值为何,合并都会成功。例如: manifestgen "C:\ProgramData\AppSense\Application Manager\MergeConfigs\*.aamp" -nc |
-nw
|
当清单添加到 MergeConfigs 目录中时,默认行为会无限期等待,直到清单中的所有配置均已存在,然后才会执行合并。但是,当 baseconfig 和层缺失时,合并不会等待并且会立即失败。 使用 -nw 后缀时,如果列出的配置在清单添加到 MergeConfigs 目录中后仍不存在,则合并将失败。例如: manifestgen "C:\ProgramData\AppSense\Application Manager\MergeConfigs\*.aamp" -nw 如果清单列出五个配置,但在清单添加到 MergeConfigs 目录后仅存在四个配置,则合并将失败。 如果您使用 MSI 等安装程序将配置和清单推送到端点,建议您不要使用此后缀,因为您无法保证配置和清单的添加顺序。 |
编辑清单
创建清单文件后,可对其进行编辑以更改属性,例如基础配置和合并应发生的顺序。
尽管清单可以在文本编辑器中进行编辑和创建,但建议您使用 ManifestGen 工具,因为它可以确保 merge_manifest.xml 文件的格式准确无误。例如,如果文件名包含 "&",ManifestGen 工具便会对其进行转义,确保它是有效的 XML 文件。
例如,命令:
manifestgen "C:\ProgramData\AppSense\Application Manager\MergeConfigs\*.aamp" -b mergeconfigs\config3.aamp
创建清单,该清单不包含系统基础配置,因而将 config3.aamp 设置为基础配置。
<MergeManifest UseSystemBase="false" WaitForConfigs="true">
<MergeFiles>
<FileEntry Name="config3.aamp" BaseConfig="true" Checksum="e899e0f9a5afee4eb502072a61c2eo" />
<FileEntry Name="config2.aamp" Checksum="e899e0f9a5afef5e4eb502072ac2e0" />
<FileEntry Name="config1.aamp" Checksum="b50576a6d743cf361c37b64bcaca75" />
</MergeFiles>
</MergeManifest>
若要编辑清单,请在文本编辑器中打开该清单,执行所需更改并保存文件。
在本例中,UseSystemBase 设置为 "true",而 BaseConfig-"true" 命令已从 config3.aamp 中删除。合并顺序也已发生更改。
<MergeManifest UseSystemBase="true" WaitForConfigs="true">
<MergeFiles>
<FileEntry Name="config1.aamp" Checksum="b50576a6d743cf361c37b64bcaca75" />
<FileEntry Name="config2.aamp" Checksum="e899e0f9a5afef5e4eb502072ac2e0" />
<FileEntry Name="config3.aamp" Checksum="e899e0f9a5afee4eb502072a61c2eo" />
</MergeFiles>
</MergeManifest>
合并后,系统基础 configuration.aamp 文件便会作为基础配置包含在合并中,并且组件配置合并到基础配置中的顺序也会反向。
如果在同一清单中为配置设置 BaseConfig="true" 且 UseSystemBase="true",则会导致冲突,并且合并将失败。
空清单
将空清单添加到 MergeConfigs 目录会自动合并该目录中的所有 AAMP 配置。系统会按字母顺序合并所有配置,并将基础配置设置为位于以下位置的 configuration.aamp:
%ProgramData%\AppSense\Application Manager\Configuration
如果此 AAMP 不存在,则合并将失败。
若要创建空清单,请在文本编辑器中打开一个新文件,创建零字节文件并将其另存为 merge_manifest.xml。
使用这种清单可以实现相同的合并 - 并非全空,但不包含要合并的 AAMP 文件的详细信息:
<MergeManifest UseSystemBase="true" WaitForConfigs="true"
</MergeManifest>
这样便会生成与空白清单相同的结果,但您可以使用 UseSystemBase 属性。如果将此设置为 "false",合并便会使用 MergeConfigs 目录中按字母排序的第一个配置作为基础配置。
合并配置
创建清单并在端点上部署配置进行合并后,即可触发合并及创建新配置。
系统在 MergeConfigs 目录中检测到 merge_manifest.xml 时会触发合并,该目录应包含要合并的所有配置。
如果清单列出了 MergeConfigs 目录中不包含的配置,则合并将延迟,直到所有配置全部存在为止。
如果目录中未包含所有配置,则使用 -nw 标签创建的清单会导致合并失败
成功合并
如果清单正确且 MergeConfigs 目录中包含列出的所有配置,则系统会创建 merged_configuration.aamp 并将其用作端点上的实时配置。
除了新配置 (merged_configuration.aamp) 以外,成功清单 (last_merge_manifest.xml) 的副本也会添加到文件夹中,提供合并记录和清单备份。合并完成后,初始 merge_manifest.xml 文件便会被删除。
在合并期间,configuration.aamp 文件不会发生更改,也不再可供代理使用,除非该文件已更新或 Merged_Configuration.aamp 不存在。
失败合并
如果在合并期间发生错误,合并便会失败,并且不会创建新的配置文件。合并可能失败的情况如下:
- 清单中指定的校验和与实际配置的校验和不匹配,并且 WaitForConfigs 设置为 "false"。
- 清单包含 -nw 命令,并且在添加时,MergeConfigs 目录中不存在清单中列出的一个或多个配置。
- 两个要合并配置的友好名称相同。
- UseSystemBase 设置为 "true",并且在触发合并时不存在基础 Configuration.aamp。
- 清单无效。
- 一个或多个配置损坏。
合并失败后,merge_manifest.xml 文件会被删除,失败清单 (failed_merge_manifest.xml) 的副本会添加到目录中。
有关合并错误的更多详细信息,可使用 Windows 事件查看器(选择 Windows 日志 > 应用程序)找到。该事件会显示失败原因以及导致合并失败的配置。
合并行为
下表列出了合并的配置属性,并解释了各个属性的行为。
配置属性 | 已合并? | 行为 |
---|---|---|
规则(组、用户、脚本、自定义、设备和进程) | Yes | 合并的配置包含每个单独配置的所有规则。如果同一触发器中存在两个影响相同应用程序的规则,那么这两个规则将并行运行。各个规则的内容不会合并。 |
应用程序组 | Yes | 合并的配置将包含各个配置层中的所有应用程序组。应用程序组仍为非基础配置所独有,并将全部合并到最终合并的配置中。 |
URM 策略 | Yes | 合并的配置包含各个配置层中的所有 URM 策略。URM 策略仍为非基础配置所独有,并将全部合并到最终合并的配置中。 |
正在审核 | 否 | 来自基础配置的事件会在合并配置中使用,而来自组件配置的事件则会被忽略。 |
工程密钥 | 否 | 合并配置从基础配置中继承其工程密钥。丢弃合并中任何组件配置的设置。因此,将合并配置中所需的工程密钥添加到基础配置至关重要。 |
默认选项 | 否 | 合并配置从基础配置中继承其默认选项,例如启用用户权限管理。丢弃合并中任何组件配置的设置。因此,将合并配置中所需的默认密钥添加到基础配置至关重要。 |
消息设置 | 否 | 合并配置从基础配置中继承其设置,例如用户在自行提升项目时将看到的消息。丢弃合并中任何组件配置的设置。 |
存档设置 | 否 | 合并配置从基础配置中继承其存档设置,例如启用存档。丢弃合并中任何组件配置的设置。 |
权限发现模式配置 | 否 | 合并配置从基础配置中继承其权限发现模式设置,例如隐藏的应用程序和文件。丢弃合并中任何组件配置的设置。 |
URL 重定向设置 | 否 | 合并配置从基础配置中继承任何 URL 设置,例如配置的连接类型或 IP 范围。丢弃合并中任何组件配置的设置。 |
审计事件筛选设置 | 否 | 合并配置从基础配置中继承其审计事件筛选设置。丢弃合并中任何组件配置的设置。 |
实时配置规则
在端点上打开或保存实时配置时,它参考:
%ProgramData%\AppSense\Application Manager\Configuration\configuration.aamp
为了允许配置合并,实时配置还可参考:
%ProgramData%\AppSense\Application Manager\Configuration\Merged_Configuration.aamp
代理会监控 %ProgramData%\AppSense\Application Manager\Configuration 目录以获取新配置。检测到更改时,代理会按以下优先顺序加载新配置:
- Merged_Configuration.aamp
- configuration.aamp
如果目录中存在 Merged_Configuration.aamp,那么它便是实时配置。如果已删除,那么代理便会继续使用内存中版本 - 在代理重启之前,它不会切换到 configuration.aamp 文件。
实时配置更新行为
使用 BaseConfigMergeBehavior 工程密钥,您可以在通过 Management Center 或其他部署方法将 Configuration.aamp 文件推送到端点时定义影响实时配置的方式。
通过定义 BaseConfigMergeBehavior 工程密钥,您可以修改实时配置行为:
- 重新合并 - 代理在端点上检测到配置时,便会触发基于 last_merge_manifest.xml 的合并,同时加入新的 configuration.aamp。合并会创建新的 Merged_Configuration.aamp,后者将取代当前的实时配置。端点上必须存在 last_merge_manifest.xml,否则合并将失败。
- 替换 - 代理在端点上检测到配置时,便会将 Merged_Configuration.aamp 替换为实时配置。成功部署新的 Configuration.aamp 后,代理便会从目录中删除 Merged_Configuration.aamp。
端点配置合并审计事件
针对配置端点合并的新审计事件已成功添加至 Application Control。在 Windows 事件查看器(选择 Windows 日志 > 应用程序)中查看事件时,您可以获得更多详细信息,例如导致合并失败的原因