> ## 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.

# 静态加密

> 知行之桥如何使用 AES-256 加密静态消息数据，包括 EncryptionAtRestMode 设置、各模式及运维注意事项。

export const siteNameShort = "知行之桥";

export const siteName = "知行之桥";

{siteNameShort} 支持对[消息数据](../activity#消息选项卡)进行应用程序级静态加密。启用后，{siteNameShort} 内部存储目录中的所有数据文件都会使用流式 AES-256-GCM 自动加密，无需更改现有工作流。静态加密有助于满足 PCI DSS、HIPAA、GDPR 和 SOX 等标准的数据保护要求。

加密适用于所有端口内部存储位置（Send、Receive、Logs、Pending 和临时目录）中的消息数据。

<Warning>
  静态加密的消息数据只能使用主密钥解密。如果配置了[自定义主密钥](../../installation/custom-master-key)但丢失了该密钥，加密的消息数据将**无法恢复**。启用前请实施安全的密钥备份和恢复流程。
</Warning>

以下对象不受此功能加密：

* 配置文件：敏感配置值由 {siteNameShort} 的现有机制单独加密。
* 应用程序数据库。

在**系统设置 > 安全**的**附加设置**部分配置加密。默认禁用。可选择以下模式：

| 模式                | 写入行为   | 读取行为              |
| ----------------- | ------ | ----------------- |
| **Disabled**      | 仅写入明文  | 仅读取明文             |
| **Compatibility** | 写入明文   | 可读取加密文件和明文文件      |
| **Standard**      | 写入加密文件 | 可读取加密文件和明文文件      |
| **Strict**        | 写入加密文件 | 仅读取加密文件；遇到明文文件时报错 |

* **Disabled** 是默认值，必须显式启用加密。
* **Standard** 适合大多数用户：加密新文件，同时继续接受现有明文文件。
* **Compatibility** 写入明文但可以读取加密文件和明文文件，是在其他模式之间安全切换的过渡模式。它不会主动加密；要开始加密，请使用 **Standard**。
* **Strict** 适用于绝不允许接受明文文件的高安全性或合规环境。

<Note>更改加密模式后必须重新启动 {siteNameShort} 才会生效。</Note>

## 迁移现有数据

启用加密不会追溯加密磁盘上的现有文件。在 **Compatibility** 和 **Standard** 模式下，{siteNameShort} 会自动识别文件是否加密，并读取现有明文文件而不做修改；只有在下次写入文件时才会加密。

**Strict** 会拒绝所有明文文件，因此在存储目录中仍有明文消息文件时不要切换到该模式。典型迁移路径如下：

1. 选择 **Standard**，使新文件以加密形式写入，同时接受现有明文文件。
2. 通过正常运行，让 Send、Receive、Pending、Logs 和临时目录中的现有明文文件被处理并清除。
3. 只剩加密文件后，切换到 **Strict** 强制只读取加密文件。

集群部署请遵循[在集群环境中切换模式](#在集群环境中切换模式)。

<Note>
  如果仍存在明文文件，或外部系统仍在向 FTP/SFTP Server 根目录写入明文，就切换到 **Strict**，这些文件将报错。请参阅 [FTP Server 和 SFTP Server 注意事项](#ftp-server-和-sftp-server-注意事项)。
</Note>

## 在集群环境中切换模式

在[集群](../clustering)部署中，所有节点共享配置和消息存储。模式更改仅在重新启动后生效，因此滚动重启期间各节点会短暂运行不同模式。若节点遇到当前模式无法读取的文件（Disabled 节点读取加密文件，或 Strict 节点读取明文文件），会产生硬错误。

请按 **Disabled → Compatibility → Standard → Strict** 的顺序逐级切换，并在每一步完成所有节点的完整重启，不要跳过中间模式。

**启用加密：**

1. 设置为 **Compatibility** 并重启所有节点。所有节点均可读取加密文件，但仍写入明文。
2. 设置为 **Standard** 并重启所有节点。节点开始写入加密文件，而所有节点已经能够读取。
3. 等待所有明文文件清除。
4. 设置为 **Strict** 并重启所有节点。

**禁用加密：**

1. 设置为 **Standard** 并重启所有节点。
2. 设置为 **Compatibility** 并重启所有节点。节点重新写入明文，同时继续读取积压的加密文件。
3. 等待所有加密文件清除。
4. 设置为 **Disabled** 并重启所有节点。

<Note>单节点部署没有滚动窗口，可以直接切换到目标模式，但仍不能在存在明文文件时选择 **Strict**，或在存在加密文件时选择 **Disabled**。</Note>

## 透明运行

* 加密和解密自动进行，用户和现有工作流无需更改。
* 文件在 {siteNameShort} 内部静态存储时加密，传递给下游端口和交易伙伴时为明文。
* 加密使用 {siteNameShort} 现有的[主密钥](../../installation/custom-master-key)机制，无需额外配置密钥。
* 启用加密可能影响性能，但文件大小开销可忽略不计。

## FTP Server 和 SFTP Server 注意事项

静态加密适用于 [FTP Server](../../../connectors/ftp-server) 和 [SFTP Server](../../../connectors/sftp-server) 端口使用的根目录。

* 在 **Compatibility** 或 **Standard** 模式下，外部 SFTP 和 FTP 客户端仍可向根目录写入明文文件，{siteNameShort} 会正常接受并处理。
* 在 **Strict** 模式下，仅接受加密文件；直接写入明文的外部系统会遇到错误。

如果外部系统直接写入 FTP 或 SFTP Server 根目录，请避免使用 **Strict**。

## 密钥管理

静态加密使用 {siteNameShort} 现有的主密钥（该密钥也用于保护敏感设置值），无需单独设置。有关详情，请参阅[自定义主密钥](../../installation/custom-master-key)。

### 轮换主密钥

轮换主密钥不会重新加密消息数据，也不会使现有加密文件无法读取。静态加密采用密钥层次结构：主密钥保护内部数据密钥，内部数据密钥再保护每个文件的加密密钥。因此，轮换只会重新封装内部密钥，不会重写所有文件。轮换前加密的文件仍可读取，无需批量重新加密。

请按照[自定义主密钥](../../installation/custom-master-key)中的流程轮换主密钥。
