> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kasoftware.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 安全和最佳实践

> 知行之桥安装的安全相关功能和推荐的最佳实践。

此页面提供有关 知行之桥 中可用的安全相关功能的信息，并介绍了我们建议遵循的最佳实践。

安全问题大致分为两类：

* 保证 知行之桥 运行的基础设施
* 保护 知行之桥 中的数据

这两个部分都描述了相关的安全概念，并包含带有我们最佳实践建议的小节。

## 保证知行之桥运行的基础设施

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

* .NET 版——知行之桥 安装目录的 `www` 文件夹中的 `Web.Config` 文件（默认为 `C:\Program Files\CData\CData Arc`）
* Java 版——知行之桥 安装目录中的 `arc.properties` 文件

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

### 为入站流量启用 TLS/SSL

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

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

* 主机 Web 服务器的 TLS，与 HTTP 流量相关，包括底层使用 HTTP 的协议（如 [AS2](https://docs.kasoftware.com/26.4/self-hosted/zh/connectors/as2.md) 和 [AS4](https://docs.kasoftware.com/26.4/self-hosted/zh/connectors/as4.md)）。由于托管 知行之桥 的 Web 服务器用于处理这些请求，因此必须在 Web 服务器级别启用 TLS。
* 所有其他服务器的 TLS，与非 HTTP 流量相关，例如 [FTP](https://docs.kasoftware.com/26.4/self-hosted/zh/connectors/ftp.md) 和 [OFTP](https://docs.kasoftware.com/26.4/self-hosted/zh/connectors/oftp.md)。由于处理这些入站连接的服务器与托管 知行之桥 的 Web 服务器不同，因此必须在 知行之桥 界面的 [个人设置](https://docs.kasoftware.com/26.4/self-hosted/zh/getting-started/administration/profiles.md) 页面的相应协议选项卡中启用这些选项。

#### 用于 Web 服务器的 TLS/SSL

* 对于 .NET 版的 知行之桥，请参阅 [使用嵌入式服务器](https://docs.kasoftware.com/26.4/self-hosted/zh/getting-started/installation/windows-edition.md#使用内置服务器) 或 [使用 IIS](https://docs.kasoftware.com/26.4/self-hosted/zh/getting-started/installation/windows-edition.md#使用-iis)。
* 对于跨平台版，请参阅 [启用 TLS/SSL](https://docs.kasoftware.com/26.4/self-hosted/zh/getting-started/installation/cross-platform-edition.md#启用-tls/ssl)。

#### 其他服务器的 TLS/SSL

使用 [个人设置](https://docs.kasoftware.com/26.4/self-hosted/zh/getting-started/administration/profiles.md) 页面为以下服务器启用 TLS/SSL：

* [FTP 服务器](https://docs.kasoftware.com/26.4/self-hosted/zh/connectors/ftp-server.md)
* [OFTP 服务器](https://docs.kasoftware.com/26.4/self-hosted/zh/connectors/oftp.md)
* [HL7 MLLP 服务器](https://docs.kasoftware.com/26.4/self-hosted/zh/connectors/hl7mllp.md)

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

### 配置防火墙和使用 DMZ

为了让 知行之桥 发送和接收消息，它需要在相关发送和接收端口上不受防火墙干扰。最佳选择是在防火墙中将特定 IP 列入白名单，以确保流量仅来自预期来源。在无法做到这一点的情况下，必须在 知行之桥 侦听入站消息的关键端口上打开防火墙。知行之桥 将配置资源保护在登录门户之后。

默认情况下，知行之桥 Web 服务器侦听端口 8001。可以直接在应用程序中为非 Web 协议配置端口。例如，可以在“个人设置”页面的 OFTP 服务器选项卡中配置 [OFTP 服务器](https://docs.kasoftware.com/26.4/self-hosted/zh/connectors/oftp.md) 侦听端口。

#### DMZ

知行之桥 的 .NET 版本支持建立反向 SSH 隧道，以在隔离区 (DMZ) 中托管 知行之桥，从而避免直接在专用网络上打开防火墙。有关云托管的更多信息，请参阅 [DMZ 网关](https://docs.kasoftware.com/26.4/self-hosted/zh/getting-started/administration/dmz-gateway.md)。

### 将公共端点与 Web 界面分离

默认情况下，知行之桥 使用相同的 Web 服务器端口来托管管理控制台（在其中配置和管理 知行之桥）和远程合作伙伴用来向应用程序发送数据的公共接收端点。管理控制台受凭据保护，以确保远程合作伙伴无法访问。然而，将公共接收端点托管在单独的端口上可确保使用网络/防火墙规则来增加一层冗余并增强安全性。有关在单独网络端口上托管公共接收端点的更多信息，请参阅 [控制台与公共端点分离部署](https://docs.kasoftware.com/26.4/self-hosted/zh/getting-started/administration/split-plane-deployment.md)。

### 强化服务器安全设置

您可以通过在知行之桥配置文件中设置 `ScriptingEngineHardeningLevel` 配置参数来提高 知行之桥 服务器的安全性。默认情况下，此参数设置为 `0`，不会阻止任何运算器。您可以将其设置为 `0` 到 `3` 之间的值，其中每个较高的值通过禁用某些运算器来提高安全性。

下表显示了在每个强化级别禁用的运算器：

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

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

#### .NET

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

```xml theme={null}
<appSettings>
     <add key="ScriptingEngineHardeningLevel" value="0"/>
</appSettings>
```

#### Java

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

```
cdata.initParameters=ScriptingEngineHardeningLevel:0
```

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

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

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

我们建议不要将文件扫描实用程序指向 知行之桥 应用程序目录或其任何子目录。如果需要对到达本地系统的文件执行病毒或恶意软件扫描，我们建议使用 [File 端口](https://docs.kasoftware.com/26.4/self-hosted/zh/connectors/file.md) 将文件移动到应用程序目录之外的磁盘路径。然后，该位置可以用作文件扫描的暂存文件夹。

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

当从磁盘上与其他进程共享的文件夹接收文件时，可以使用 [File 端口](https://docs.kasoftware.com/26.4/self-hosted/zh/connectors/file.md) 设置 **延迟接收**，以配置端口在接收和处理传入文件之前等待的时间（以秒为单位）。默认间隔为 5 秒。增加该值可以让文件扫描程序有更多时间完成。

## 保护知行之桥中的数据

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

### 为出站流量启用 TLS/SSL

知行之桥 会根据出站连接的目标 URL 自动解析是否协商 TLS/SSL。例如，如果出站 [AS2](https://docs.kasoftware.com/26.4/self-hosted/zh/connectors/as2.md) 连接以 `https` URL 为目标，知行之桥 将协商 TLS。

强烈建议使用 TLS/SSL 通过不包含内置加密机制的协议传输数据。这意味着 Web 流量应发送到 `https` 端点，FTP 流量应定向到 `ftps` 端点，依此类推。除了正确配置目标 URL 之外，无需其他步骤即可确保 知行之桥 协商 TLS/SSL 加密。

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

当与 TLS/SSL 或 SSH 服务器建立出站连接时，建立连接的端口（例如 [REST](https://docs.kasoftware.com/26.4/self-hosted/zh/connectors/rest.md)、[AS2](https://docs.kasoftware.com/26.4/self-hosted/zh/connectors/as2.md) 或 [SFTP](https://docs.kasoftware.com/26.4/self-hosted/zh/connectors/sftp.md)）将尝试验证服务器提供的证书或密钥。如果端口设置中未配置服务器证书/密钥，知行之桥 将使用底层系统（操作系统或 JRE）中存在的验证过程来确定服务器的证书是否可信。

可以使用特定的 TLS/SSL 证书或 SSH 密钥指纹配置端口，以覆盖底层系统行为。进行出站连接时，如果服务器的证书与端口中配置的证书匹配，则端口将信任服务器。此选项提供最高级别的安全性。

当您将 **TLS 服务器证书** 字段设置为 *任何证书 (Any Certificate)* 时，端口会隐式信任服务器的身份。仅当不担心服务器假冒攻击时才应这样做。

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

知行之桥 为有权登录 知行之桥 Web 界面并使用应用程序的用户维护一组用户名和密码凭据。有关用户和角色（包括管理员角色）的更多信息，请参阅[用户](https://docs.kasoftware.com/26.4/self-hosted/zh/getting-started/administration/settings/users.md)和[用户角色](https://docs.kasoftware.com/26.4/self-hosted/zh/getting-started/administration/settings/user-roles.md)。

具有管理员角色的用户可以访问和更改其他用户的密码。首次启动 知行之桥 时创建的管理员用户的凭据应安全地存储在外部位置，以确保该帐户既安全又可恢复。

### 系统 API

用户可以通过调用系统 API 来执行所有应用程序管理任务，因此保护对该 API 的访问与保护对 Web 界面的访问同样重要。创建 知行之桥 用户时，可以生成一个授权令牌，允许该用户访问 API（根据该用户在应用程序中的角色进行限制）。有关使用授权令牌访问系统 API 的更多信息，请参阅 [API 身份验证](https://docs.kasoftware.com/26.4/self-hosted/zh/admin-api/admin-api-authentication.md)。

> [!NOTE]
>
> 创建用户的授权令牌后不会显示，因此应将其安全地存储在外部位置。

### FIPS 合规性

联邦信息处理标准 (FIPS) 是由美国联邦政府制定的一套安全标准，用于确保计算机系统的安全性、互操作性和数据完整性。要在 知行之桥 中启用 FIPS，请按照以下特定于版本的说明操作。

#### Java 版

要在嵌入式 Jetty Web 服务器中启用 FIPS，必须首先下载并安装所需的 Bouncy Castle FIPS jar 文件。从 [[https://www.bouncycastle.org/download/bouncy-castle-java-fips/#latest](https://www.bouncycastle.org/download/bouncy-castle-java-fips/#latest)](https://www.bouncycastle.org/download/bouncy-castle-java-fips/#latest) 下载以下 jar 文件，并将它们放在 `arc.jar` 旁边的 `lib` 文件夹中：

* `bcutil-fips-2.x.jar`
* `bc-fips-2.x.jar`
* `bcpkix-fips-2.x.jar`
* `bctls-fips-2.x.jar`

FIPS 的配置取决于嵌入式 Jetty Web 服务器配置为使用 HTTP 还是 TLS/SSL：

##### HTTP

如果 知行之桥 在为客户端提供 TLS/SSL 的反向代理后面运行，并且运行 知行之桥 的服务器通过 HTTP 与该代理通信，则只需将 `cdata.fips.enabled=true` 添加到您的 `arc.properties` 文件中。

##### TLS/SSL

要在配置为使用 TLS/SSL (HTTPS) 时启用 FIPS，必须首先使用以下命令创建 BCFKS 密钥库：

```
keytool -genkeypair -alias jetty -keyalg RSA -keystore keystore.bcfks -storetype BCFKS -storepass xA123456 -keypass xA123456 -dname "CN=localhost" -validity 365 -providerclass org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider -providername BCFIPS -J-cp -J"bc-fips-2.1.0.jar"
```

创建密钥库后，请使用以下配置更新您的 `arc.properties` 文件：

```
cdata.fips.enabled=true
;; TLS
cdata.tls.port=8443
cdata.tls.keyStoreType=BCFKS
cdata.tls.keyStorePath=/pathto/keystore.bcfks
cdata.tls.keyStorePassword=xA123456
```

> [!NOTE]
>
> 在嵌入式 Jetty Web 服务器中启用 FIPS 时，密码最小长度为 14 个字符。如果在启用 FIPS 的情况下密码长度少于 14 个字符，将无法登录 知行之桥。

#### .NET 版

要在 .NET 嵌入式 Web 服务器中或在 IIS 中托管应用程序时启用 FIPS，请在您的 `Web.Config` 文件中添加以下语句。

```xml theme={null}
<configuration>
  <appSettings>
    <add key="EnableFIPSMode" value="true" />
  </appSettings>
</configuration>
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.