安全和最佳实践

Version 24.3.9111


安全和最佳实践


此页面提供有关知行之桥中可用的安全相关功能的信息,并介绍了我们建议遵循的做法。 安全问题大致分为两类:

  • 保证知行之桥运行的基础
  • 通过知行之桥保护数据

在此页面中,这两个类别都包含描述相关安全概念的部分,以及包含我们对参与此概念的建议的小节。

保证知行之桥运行的基础

许多安全设置由服务器配置文件管理。 使用知行之桥中包含的嵌入式 Web 服务器时,可以在以下位置找到服务器配置文件:

  • .NET 版-知行之桥安装目录的 www 文件夹中的 Web.Config 文件(默认为 C:\Program Files\CData\CData Arc

  • Java 版-arc.properties 文件

将知行之桥部署到外部服务器时,应使用该外部服务器的配置文件。

为知行之桥的入站流量启用 TLS/SSL

强烈建议在服务器上启用 TLS/SSL。 TLS/SSL 使用公钥/私钥加密来加密客户端和服务器之间的通信通道。 这种加密保护知行之桥中数据的机密性、真实性和完整性。 此外,通过使用数字证书,TLS 为客户端/服务器身份确认提供了便利。

  • 用于 Web 服务器的 TLS
  • 所有其他服务器的 TLS

启用入站 TLS/SSL 可以分为两类:

  • 主机 Web 服务器的 TLS,与 HTTP 传输相关,包括使用 HTTP 的协议,如 AS2 和 AS4。 由于托管知行之桥的同一 Web 服务器用于处理这些请求,因此必须在 Web 服务器级别启用 TLS。
  • 所有其他服务器的 TLS,与非 HTTP 传输相关,例如 FTP 和 OFTP。 由于处理这些入站连接的服务器与托管知行之桥的 Web 服务器不同,因此必须在知行之桥的个人设置页面中启用这些选项(在相应协议的选项卡下)。

用于 Web 服务器的 TLS/SSL

对于 Windows 版本的知行之桥,如果使用嵌入式服务器,请参阅使用嵌入式服务器。 如果使用的是 IIS,请参阅使用 IIS

对于 跨平台版,请参阅 Java 版文档的 启用TLS/SSL 部分。

其他服务器的 TLS/SSL

为以下服务器列表启用 TLS/SSL:

每个服务器的“个人设置”页面上都有一个选项卡,可以在其中启用或禁用 TLS/SSL。

防火墙和使用 DMZ

为了让知行之桥发送和接收消息,它需要在相关发送和接收端口上不受防火墙干扰。 默认情况下,知行之桥的 Web 服务器侦听端口 8001,可以按照服务器管理部分中的说明进行配置。

非 Web 协议的端口可以直接在应用程序中配置,例如 OFTP 服务监听端口可以在个人设置页面的 OFTP 选项卡中配置。

DMZ

知行之桥的 .NET 版本支持建立反向 SSH 隧道以在 DMZ(即在云中)托管知行之桥,以避免直接在专用网络上打开防火墙。 有关云托管的更多信息,请参阅 DMZ 网关 部分。

将知行之桥的公共接口与 Web 界面分离

默认情况下,知行之桥使用相同的 Web 服务器端口来托管 Web 界面(可以在其中配置和管理知行之桥)和远程合作伙伴可以用来向应用程序发送数据的公共接收接口。

公共接收接口可以托管在单独的网络端口上,如 这个界面 中所述。

强化服务器安全设置

你可以通过在知行之桥配置文件中设置配置参数 ScriptingEngineHardeningLevel 来提高知行之桥服务器的安全性。默认情况下,此参数设置为 0,不会阻止任何运算器。你可以将其设置为 0 到 3 之间的值,其中每个较高的值通过禁用某些运算器来提高安全性。下面的列表显示了在每个强化级别禁用的运算器:

级别 禁用的运算器
0 允许所有运算器。这是默认设置。
1 最易受攻击的运算器被禁用。这包括允许用户以任意方式与主机系统交互的任何运算器。
2 除了级别 1 中不允许的运算器外,此级别还禁止创建新用户、以非任意方式访问磁盘上的文件以及引入重复任务的运算器。
3 除了级别 1 和级别 2 中不允许的运算器外,此级别还禁用从服务器获取敏感信息或执行任意 HTTP 请求的运算器。

使用以下部分为你的安装设置强化级别。

.NET

使用文本编辑器打开安装目录的 www 文件夹中的 Web.Config 文件。 在底部的 <appSettings> 标记内,添加如下所示的行并将 value 设置为所需的级别:

<appSettings>
     <add key="ScriptingEngineHardeningLevel" value="0"/>
</appSettings>

Java

使用文本编辑器打开安装目录中的 arc.properties 文件。 为以下属性添加一行,并将数字设置为所需的级别:

cdata.initParameters=ScriptingEngineHardeningLevel:0

与外部的病毒和恶意软件扫描程序的交互

知行软件希望在文件处理期间能够独占访问应用程序目录的内容。 应用程序使用时间敏感资源(例如应用程序目录中的资源锁)来确保多个线程不会处理相同的文件。 它扫描端口的 “输入(Input)” 选项卡中的文件,以将元数据应用于消息,当它在端口之间移动文件时,它会立即在端口目录之间移动文件,以确保跨流程中的多个步骤进行快速处理。

扫描文件和文件句柄的进程可能会影响知行之桥中的性能,并导致应用程序出现意外行为,包括文件自动化中断、无法记录流量、无法在端口之间移动消息、处理性能下降, 等等。

我们建议不要将文件扫描实用程序指向知行之桥应用程序目录或其任何子目录。 如果需要对到达本地系统的文件执行病毒或恶意软件扫描,我们建议使用File 端口 将文件移动到应用程序目录之外的磁盘路径。 然后,该位置可以用作文件扫描的暂存文件夹。

使用 File 端口继续处理扫描的文件

当从磁盘上与其他进程共享的文件夹接收文件时,可以使用File 端口设置延迟接收来配置文件接收的时间(以秒为单位)。它是端口在接收和处理传入文件之前等待,默认间隔为 5 秒。 增加该值可以让文件扫描程序有更多时间完成。

保护知行之桥中的数据

以下部分涉及知行之桥中数据的安全性,包括流经应用程序的消息/数据和工作流配置本身。

为出站流量启用 TLS/SSL

知行之桥将隐式确认是否根据出站连接的目标 URL 协商 TLS/SSL。 例如,如果出站 AS2 连接以 https URL 为目标,知行之桥将认识到需要协商 TLS。

强烈建议使用 TLS/SSL 通过不包含内置加密机制的协议传输数据。 因此,Web 流量应发送到 https 接口,FTP 流量应定向到 FTPS 接口,依此类推。 除了正确配置目标 URL 之外,无需其他步骤来确保知行之桥协商 TLS/SSL 加密。

验证 TLS/SSL 服务器证书和 SSH 密钥

当与 TLS/SSL 或 SSH 服务器建立出站连接时,建立连接的端口(例如 REST 端口、AS2 端口、SFTP 端口等)将尝试验证服务器提供的证书或密钥。 如果端口设置中未配置服务器证书/密钥,知行之桥将使用底层系统(例如操作系统或 JRE)中存在的验证过程来确定服务器的证书是否可信。

可以使用特定的 TLS/SSL 证书或 SSH 密钥指纹配置端口,以覆盖此底层系统行为。 进行出站连接时,如果服务器的证书与端口的 TLS 服务器证书 字段中配置的证书(或 SSH 连接的服务器指纹)中配置的证书匹配,则端口将信任服务器。

端口还可以通过将 TLS 服务器证书 字段设置为 任何证书 (Any Certificate) 来隐式信任服务器的身份。

用户和管理员管理以及访问 API

知行之桥为有权登录知行之桥 Web 界面和操作应用程序的用户提供一组用户凭据(用户名、密码)。 用户管理和用户角色(包括管理员角色)在文档的 用户角色 部分中进行了描述。

具有 Admin 角色的用户可以访问和更改其他用户的密码。 更改首次运行知行之桥时创建的原始管理员用户的密码需要使用 Web 界面右上角注销下拉菜单中的 Change Password 选项。

系统 API

用户可以通过调用系统 API 来执行所有应用程序管理任务,因此保护对该 API 的访问与保护对 Web 界面的访问同样重要。 当创建知行之桥用户时,可以生成一个授权令牌,允许该用户访问 API(根据该用户在应用程序中的 权限 进行限制)。 有关使用身份验证令牌访问系统API 的详细信息,请参阅文档的 API 身份验证 部分。

创建用户后不会显示用户的身份验证令牌,因此应将其安全地存储在外部位置。