# 数据胶囊
在企业数据资产上云场景中，数据一旦离开原始系统，其访问控制策略往往随之失效，使用方可能超出约定范围使用数据，甚至在数据过期后仍继续访问，导致数据泄露风险难以管控。数据胶囊正是为解决这一矛盾而设计，它将原始数据、访问策略、加密密钥、权属信息与防篡改签名封装为标准化的独立文件格式（.dcap），使安全策略随数据一同流转，即使数据脱离原系统，仍可独立完成完整性校验、策略鉴权与受控解密，确保"数据走到哪里，安全策略跟到哪里"，实现数据的自保护与全程可追溯。
#### 基本概念
- **数据胶囊（Data Capsule）** ：数据胶囊是一种**标准化二进制容器格式** （文件后缀 .dcap），采用**文件头+文件体** 两段式结构，将原始数据、访问策略、加密密钥、权属信息、防篡改签名封装为单一独立文件。文件脱离原系统后仍可独立完成完整性校验、策略鉴权与受控解密，实现**数据走到哪里，安全策略跟到哪里** 。
  具有以下核心属性：
  - **自包含性**：文件头内置全量元数据、策略、密钥密文与签名，无需依赖外部系统即可完成合法性校验。
  
  - **自保护性**：内置使用控制策略，每次访问均强制鉴权，防止越权操作。
  
  - **分片加密**：文件体采用固定大小分片独立加密，支持大文件随机读取与断点续传。
  
  - **防篡改性**：文件头整体由数字签名保护，任何篡改均可被校验发现。
  
  - **可追溯性**：封装信息与权属信息内置，结合平台审计实现全链路溯源。
    
- **数据策略（Data Policy）** ：数据策略是写入文件头的**使用控制规则集合** ，定义**谁、在什么时间 / 环境、可以做什么操作、最多用多少次** ，是数据胶囊自保护能力的核心依据。策略随文件头一同被数字签名保护，无法被篡改，拆封时强制校验。
  策略核心维度：
  - **主体维度**：授权用户、角色、组织。
  
  - **时间维度**：授权生效起止时间。
  
  - **操作维度**：查看、下载、分析、预处理、训练、推理、自定义。
  
  - **环境维度**：IP 白名单、是否强制 TEE 环境、设备绑定。
  
  - **频次维度**：总访问次数、单日访问次数、单操作数据量上限。
   
 
#### 方案架构
DSC数据胶囊模块通过数据使用策略管理、封装引擎、策略核验\&解封引擎、审计与监控中心及密钥管理服务（KMS，支持主密钥托管/BYOK/HYOK）五大核心组件协同工作，将原始数据按策略加密封装为.dcap格式的数据胶囊文件。该文件由文件头（基础元数据、数据策略、密钥密文、权限信息、数字签名五个区域）和文件体（加密分片）组成，实现数据与访问策略的强绑定------无论数据流转至何处，策略始终随行。封装时由封装引擎调用KMS获取密钥加密数据并打包元数据；解封时由策略核验\&解封引擎先校验文件头中的权限与策略，通过后调KMS获取密钥解密文件体，全过程由审计与监控中心记录。该架构以集中式密钥管理为安全基石，通过职责分离、数字签名防篡改和标准化封装，提供了一种跨平台的数据安全存储与交换方案。
![](https://support.huaweicloud.com/highsecurity-dsc/zh-cn_image_0000002756808305.png "点击放大")
架构图解析：
- **DSC 数据胶囊模块（核心服务层）**
  - **数据使用策略管理**：定义和管理数据使用规则，是封装与解封的依据。
  
  - **封装引擎**：调用 KMS 获取密钥，对原始数据加密并打包为.dcap 文件。
  
  - **策略核验\&解封引擎**：读取文件头进行权限核验，通过后调用KMS获取密钥解密数据。
  
  - **审计与监控中心**：记录所有数据访问与操作日志，实现事后审计和实时监控。
  
  - **密钥管理服务 KMS**：安全基石，支持主密钥托管/BYOK/HYOK/密钥胶囊。
   
- **数据胶囊文件 .dcap（文件结构）**
  - **文件头（元数据区）：**
    - 基础元数据区
    
    - 数据策略区：数据与访问策略强绑定
    
    - 密钥密文区：加密后的密钥信息
    
    - 权属信息区：记录了数据的租户ID、用户ID、数据来源、数据分级等
    
    - 数字签名区：防篡改，保证完整性
     
  
  - **文件体（加密数据）**
   
- **核心数据流向**
  - **封装阶段**：策略管理 → 封装引擎（调KMS获取密钥）→ 加密数据 + 打包元数据 → 生成.dcap 文件
  
  - **解封阶段**：读取.dcap文件头 → 策略核验\&解封引擎（验证权限 → 调KMS获取解密密钥 → 解密文件体）→ 返回明文数据
  
  - **审计流**：关键操作（策略核验结果、解密请求等）流向审计与监控中心
   
 
#### 方案优势
- **数据与策略绑定**：策略直接封装在文件头中，数据移动到哪里策略就跟随到哪里，确保安全的可移植性。
- **集中式密钥管理**：所有密钥操作统一通过KMS，支持BYOK/HYOK等高级安全特性。
- **职责分离**：策略管理、封装/解封、密钥管理、审计监控各司其职，符合安全设计最佳实践。
- **完整性保护**：数字签名区防止文件篡改，保证数据胶囊的完整性和真实性。
- **标准化封装**：.dcap 格式提供通用的跨平台数据安全交换和存储方案。
 
#### 数据胶囊封装
参考以下步骤将原始数据按策略加密封装为.dcap格式的数据胶囊文件。
 #### 步骤一：创建数据策略
用户在DSC界面创建数据策略，配置授权规则，下载策略内容或ID。
1. [登录DSC服务控制台](https://console.huaweicloud.com/dsc/)。
2. 在左侧导航栏中，选择"数据安全屋"，进入"数据安全屋"控制台。
3. 在左侧导航栏中，选择"数据胶囊"，选择"策略"页签。
4. 单击"创建策略"，输入策略名称后，单击"下一步"。
5. （可选）**访问控制配置** ，参数说明如[表1]所示，配置完成后，单击"下一步"。
   
   图1访问控制配置
   ![](https://support.huaweicloud.com/highsecurity-dsc/zh-cn_image_0000002758483217.png "点击放大")
    表1访问控制参数说明 
   | 参数名称     | 参数说明                                                                              |
   |:---|:---|
   | 授权访问用户   | 授权可以访问数据的用户。 支持选择IAM子账号，或直接输入用户ID；不配置则对所有租户内用户开放鉴权。 |
   | 访问时间     | 配置授权访问的时间范围。                                                                     |
   | 访问操作方式 | 选择访问操作方式：查看、下载、分析、预处理、训练、推理，或自定义操作方式。                                              |
   | 访问次数     | 配置可访问数据的次数，取值范围 0 - 1,000,000，0 表示不限制访问次数；次数统计所有拆封操作的总次数。                        |
      
   
   
6. （可选）**运行环境控制** ，参数说明如[表2]所示，配置完成后，单击"下一步"。
   
   图2运行环境控制
   ![](https://support.huaweicloud.com/highsecurity-dsc/zh-cn_image_0000002728963626.png "点击放大")
    表2运行环境控制参数说明 
   | 参数名称   | 参数说明                                                                                                                                                                                                                                                                                                   |
   |:---|:---|
   | 节点控制  | 限定数据胶囊只能在指定安全屋或接入点内拆封。 - **DSC 数据安全屋**：DSC服务部署的专用安全网络区域，限定数据胶囊只能在指定的DSC安全屋内拆封。  - **DEW 密钥空间接入点**：密码安全中心（DEW）的密钥访问代理节点，数据胶囊通过该节点间接获取KMS密钥，避免密钥直接暴露给应用。   |
   | 应用控制 | 限定数据胶囊仅允许在选择的应用环境中使用。 - **ModelArts**：华为云AI开发平台，限定数据胶囊仅允许在ModelArts环境中使用，用于AI训练等场景的数据保护。  - **自定义**：用户自行指定允许使用数据胶囊的目标应用，提供灵活的应用级访问控制。                   |
      
   
   
7. （可选）**网络与销毁策略配置** 。
   
   图3网络与销毁策略   
   ![](https://support.huaweicloud.com/highsecurity-dsc/zh-cn_image_0000002724623472.png "点击放大")
   - **网络控制** ：通过IP地址段（CIDR格式：无类别域间路由格式，表示一个IP地址段，如 192.168.1.0/24 表示 192.168.1.0 \~ 192.168.1.255 共256个IP）白名单限定允许访问数据胶囊的网络范围。
     限制数据胶囊仅能在指定网络环境中拆封访问的配置项；不配置则无网络限制。
     
   
   - **自动删除**
     - 否：不启用自动删除功能。
     
     - 是：启用自动删除功能。 **触发条件**：满足以下任意一个条件即触发数据胶囊销毁，多个条件之间为"或"关系。
       - 超期：数据胶囊超过设定的有效期后自动销毁。
       
       - 超过次数：数据胶囊被拆封访问次数超过设定阈值后自动销毁。
       
       - 非授权用户访问：当未授权用户尝试访问数据胶囊时自动销毁。
       
       - 非授权网络访问：当来自非授权网络（不在IP白名单内）的访问请求触发数据胶囊自动销毁。
       
       
       ![](https://support.huaweicloud.com/highsecurity-dsc/public_sys-resources/notice_3.0-zh-cn.png)
       自动删除一旦触发，数据胶囊中的加密数据将被永久销毁，无法恢复，请谨慎配置！
       
      
   
   
   
   
8. 配置完成后，单击"立即创建"。
9. 策略创建成功后，在策略列表中，可查看策略ID，单击"操作"列的"查看"，可获取策略JSON文件。 
   策略ID对应[步骤三：胶囊封装]中"dataPolicyId"；策略JSON文件对应[步骤三：胶囊封装]中"dataPolicy"。
   
   
 
 #### 步骤二：通过KMS服务生成主密钥
用户通过KMS服务生成或导入主密钥CMK，用于胶囊的封装和解封。
详细操作请参见[创建密钥](https://support.huaweicloud.com/highsecurity-dsc/dsc_01_5105.html#dsc_01_5105__section127397356454)或[导入密钥材料](https://support.huaweicloud.com/highsecurity-dsc/dsc_01_5105.html#dsc_01_5105__section395012101220)。
 #### 步骤三：胶囊封装
用户使用胶囊SDK在本地对需要保护的文件进行加密封装，输入策略内容/ID和主密钥ID，生成完整的胶囊 .dcap 文件。本指南面向开发者，指导如何使用 SDK 完成**胶囊封装**操作。
![](https://support.huaweicloud.com/highsecurity-dsc/zh-cn_image_0000002724728474.png)
胶囊封装前，请参考[数据胶囊封装对环境有哪些要求？](https://support.huaweicloud.com/dsc_faq/dsc_01_6114.html)验证环境是否满足条件，满足条件后，执行以下步骤完成胶囊封装。
1. 创建SDK实例。 
   ```
   // 1. 创建SDK实例
    DataCapsuleSDK sdk = new DataCapsuleSDK();
   ```
   
   
2. 初始化SDK。 
   封装前必须先初始化 SDK，建立与 DSC/KMS 云服务的连接。初始化时传入华为云 AK/SK（获取地址："控制台用户名 \> 我的凭证 \> 访问密钥"）、区域、项目 ID（获取地址："控制台用户名 \> 我的凭证 \> 项目列表 \> 项目ID"） 和服务端点（sdg.*region.*myhuaweicloud.com）。
   ```
   // 2.初始化SDK
   //    nodeType: 1=ECS / 2=Custom / 3=CCE / 4=ModelArts
   //    securityToken: 临时AK/SK时传入，永久AK/SK传null
    int ret = sdk.init(
        "HPUAND3T5GCKPNN78OQ3",           // ak
        "vPUWAxK0ujVJt1VQxDh3az...",        // sk
        null,                               // securityToken（永久AK/SK传null）
        "cn-xx-xx",                       // region
        "d4e559b49b3b403da5279723299ed4a6",  // projectId
        "sdg.cn-xx-xx.myhuaweicloud.com",  // endpoint
        1                                    // nodeType (1=ECS)
    );
    if (ret != 0) {
        throw new RuntimeException("SDK初始化失败, ret=" + ret);
    }
    System.out.println("SDK初始化成功");
   ```
   初始化成功后返回 retCode: 0，SDK 进入就绪状态。后续封装操作无需重复初始化。
   
   
3. 准备数据策略（二选一）。 
   数据策略定义了胶囊的访问控制规则，创建数据策略的方式请参见[创建数据策略]。支持两种方式，**二** 选**一**：
   表3数据策略方式 
   | 方式       | 字段          | 说明                                                                                   | 适用场景             |
   |:---|:---|:---|:---|
   | 策略 ID 模式 | dataPolicyId | 引用 DSC 控制台已注册的策略 ID。在策略列表中获取。                                                            | 策略已创建，直接引用。     |
   | 策略体模式   | dataPolicy | 内联完整策略 JSON（需含 policy_id） 在策略列表的"操作"列，单击"查看"，可获取策略JSON文件。 | 从控制台复制策略 JSON 粘贴 |
      
   ![](https://support.huaweicloud.com/highsecurity-dsc/public_sys-resources/notice_3.0-zh-cn.png)
   dataPolicyId 和 dataPolicy 不可同时填写，也不可同时为空。
   
   
4. 调用封装接口。 
   填入主密钥 ID（[通过KMS服务生成主密钥]的ID）、源文件路径和策略，调用SDK函数完成封装。
   ```
   // 3. 创建数据胶囊（封装）
   // dataPolicyId 和 dataPolicy 二选一，不可同时填写
    CreateResult result = sdk.createCapsule(
        "c5400849-d0d3-4cdb-b607-f2102d9ae980",  // keyId（KMS主密钥ID）
        "/root/data/report.pdf",                  // inputFile（源文件路径）
        "/root/data/output",                      // outputPath（输出目录，null则同目录） 
       "05f626873302491084ac15aa1a7a0c81",      // dataPolicyId（策略ID）
        null,                                     // dataPolicy（完整策略JSON，与ID二选一）
        null                                       // ownerInfo（权属信息JSON，选填）
    );
   ```
   
   
5. 获取封装结果。 
   封装成功后，SDK返回胶囊文件路径和大小。生成的 .dcap 文件包含加密数据和完整的策略控制信息。
   ```
   System.out.println("胶囊路径: " + result.capsulePath);
   System.out.println("胶囊大小: " + result.fileSize + " 字节");
   ```
   
   
 
#### 数据胶囊共享传输
胶囊文件上传至OBS存储后，可通过任意渠道在云上各节点之间流转，文件体全程密文，且胶囊本身不依赖原系统，无需网络连通即可在本地完成策略校验。接收方拆封时，策略核验\&解封引擎读取文件头内置的全量策略进行权限核验，通过后调KMS获取密钥解密数据，全过程由审计与监控中心记录，满足合规审计要求。无论数据流转至何处，策略始终随数据携带，确保数据安全与可移植性。
- **云上存储与流转**
  胶囊文件上传至云上 OBS 存储，可通过任意渠道在云上各个节点之间流转。**文件体全程密文**，传输过程不暴露明文数据。
  
- **离线策略校验**
  胶囊本身不依赖原系统，无需网络连通也可在本地进行策略校验。文件头内置全量策略，接收方无需额外同步策略配置即可解析校验。
  
 
#### 数据胶囊拆封使用流程
数据使用者通过胶囊SDK解封数据胶囊，使用数据。
本指南面向开发者，完整介绍数据胶囊的**解封**操作。
![](https://support.huaweicloud.com/highsecurity-dsc/zh-cn_image_0000002725268532.png)
1. 调用SDK函数解封数据胶囊。SDK 会依次执行验签、策略解析、云端鉴权、密钥解密、分片解密，最终输出明文数据。 
   ![](https://support.huaweicloud.com/highsecurity-dsc/public_sys-resources/caution_3.0-zh-cn.png)
   - **解封流程** ：SDK 内部依次执行**文件头验签** 、 **元数据与策略解析** 、**本地策略预校验、** **云端DSC多维鉴权** 、**KMS密钥解密** 、**分片解密输出**。任一环节失败即终止。
   
   - **主密钥一致性**：解封时的keyId必须与封装时使用的主密钥ID一致，否则无法解密密钥胶囊。
    
   表4参数说明 
   | 参数名          | 类型      | 必填  | 默认值   | 说明                                                                                                                                     |
   |:---|:---|:---|:---|:---|
   | inputFile      | String | 是 | -       | 数据胶囊文件绝对路径，包含文件名。                                                                                                                      |
   | keyId        | String   | 是   | -      | 主密钥ID，用于解密胶囊里的数据加密密钥。                                                                                                                |
   | operation    | String | 否   | view | 申请访问的操作方式，枚举值：view / download / analyze / preprocess / train / infer / custom。支持传 JSON 格式如 {"view":true,"download":false} 实现多选和自定义操作。 |
   | accessApp   | String | 否     | -      | 申请访问的应用名称，最长 64 字符。                                                                                                                    |
   | outputType  | String   | 是   | -     | 输出类型：FILE（输出到文件）或 BYTES（输出到内存）。                                                                                                       |
   | outputPath | String  | 否     | -      | 解封输出文件路径，outputType=FILE 时指定输出目录。                                                                                                    |
      
   
   
2. 解封请求示例。 
   ```
   // 4. 解封数据胶囊（解密）
   //    operation: 操作类型JSON（如 {"view":true}）
   //    encryptedPrivateKey: CUSTOM环境(nodeType=2)时必填，其他传null
    UnsealResult unseal = sdk.unsealCapsule(
        "c5400849-d0d3-4cdb-b607-f2102d9ae980",  // keyId（KMS主密钥ID）
        result.capsulePath,                           // capsuleFile（胶囊文件路径） 
       "/root/data/decoded/report.pdf",          // outputFilePath（解密输出路径）
        "{\"view\":true}",                         // operation（操作类型JSON）
        null,                                     // accessApp（应用名，选填） 
       null                                       // encryptedPrivateKey（CUSTOM环境PEM私钥）
    );
    System.out.println("解封路径: " + unseal.outputPath);
    System.out.println("数据大小: " + unseal.dataSize + " 字节"); 
    System.out.println("策略允许: " + unseal.policyAllowed);
   ```
   
   
 
#### 审计与监控
对所有胶囊的封装和解封操作进行审计，对胶囊解封失败操作进行监控告警。
#### 审计范围
- **封装操作**：谁、何时、封装了什么数据、挂载了什么策略。
- **拆封操作**：谁、何时、从哪里、执行了什么操作、是否成功。
- **异常事件**：未授权尝试、超限尝试、篡改检测等异常。
 
#### 审计记录存储
- **云端存储**：DSC后端数据库集中存储。
- **不可篡改**：审计记录写入后不可修改、不可删除。
- **留存周期**：默认留存180天。
 
#### 监控告警
- **异常拆封告警**：非授权IP、非授权用户、非授权环境等。
- **超限告警**：次数即将耗尽。
- **过期告警**：胶囊即将到期提醒。
- **篡改告警**：胶囊完整性校验失败告警。
 
#### 数据胶囊操作审计
记录所有数据胶囊的封装、解封及管理操作，支持多维度筛选与详情追溯，满足合规审计要求。
1. [登录DSC服务控制台](https://console.huaweicloud.com/dsc/)。
2. 在左侧导航栏中，选择"数据安全屋"，进入"数据安全屋"控制台。
3. 在左侧导航栏中，选择"数据胶囊"，选择"审计与监控 \> 数据胶囊操作审计"页签。
4. 统计概览，在审计列表上方，为您展示了使用数据胶囊的**总操作次数** 、**封装成功** 、**解封成功** 和**解封失败**的次数。
5. 查看数据胶囊操作审计日志列表。 
   图4操作审计日志列表   
   ![](https://support.huaweicloud.com/highsecurity-dsc/zh-cn_image_0000002724919898.png "点击放大")
   表5操作审计日志列表参数说明 
   | 参数名称          | 参数说明                 |
   |:---|:---|
   | **日志ID**    | 每条审计日志的唯一标识。        |
   | **胶囊名称 /ID** | 操作的数据胶囊文件名称及ID。   |
   | **操作类型**    | 操作类别，如"拆封"、"封装"。 |
   | **操作人ID**    | 执行操作的用户标识。         |
   | **客户端IP**    | 发起操作的客户端IP地址。     |
   | **操作结果**      | 操作状态，如"成功"、"失败"。  |
   | **操作数据量**     | 本次操作涉及的数据大小。         |
   | **操作时间**    | 操作发生的精确时间戳。        |
      
   
   
6. 在"操作"列单击"详情"，可查看该日志的详细信息。
 
#### 数据胶囊异常事件审计
集中展示数据胶囊全生命周期的异常告警事件，支持分级处置、溯源追踪与闭环管理。
1. [登录DSC服务控制台](https://console.huaweicloud.com/dsc/)。
2. 在左侧导航栏中，选择"数据安全屋"，进入"数据安全屋"控制台。
3. 在左侧导航栏中，选择"数据胶囊"，选择"审计与监控 \> 胶囊异常事件"页签。
4. 统计概览，在审计列表上方，为您展示了数据胶囊的**异常事件总数** 、**严重（完整性校验失败）** 、**警告（未授权访问）** 和**提示（超期/次数预警）**的总次数。
5. 查看数据胶囊异常事件列表。 
   图5数据胶囊异常事件列表   
   ![](https://support.huaweicloud.com/highsecurity-dsc/zh-cn_image_0000002754521475.png "点击放大")
   表6数据胶囊异常事件列表参数说明 
   | 参数名称          | 参数说明                                |
   |:---|:---|
   | **关联对象/ID** | 触发异常事件的数据胶囊文件名及胶囊唯一标识。             |
   | **事件类型**     | 异常事件分类标签，如"次数限制"表示因拆封次数超限触发。       |
   | **级别**        | 事件严重等级，如"警告(未授权访问)"表示检测到非授权访问行为。  |
   | **事件描述**    | 异常事件的详细说明，如"数据策略校验不通过"，即拆封时策略核验未通过。 |
   | **触发用户/ID**  | 触发该异常事件的用户标识（用户名和用户ID）。            |
   | **触发IP**       | 发起异常操作的客户端IP地址。                    |
   | **触发时间**     | 异常事件发生的精确时间戳。                       |
   | **状态**       | 事件处理状态，"未处理"表示尚未处理。              |
   | **处理人/时间** | 处理该异常事件的操作人及处理时间，未处理时为空            |
      
   
   
6. 在"操作"列单击"详情"，可查看该日志的详细信息。
7. 已处理该事件后，在"操作"列单击"标记已处理"，在弹框中，输入CONFIRM后单击"确定"。 
   ![](https://support.huaweicloud.com/highsecurity-dsc/public_sys-resources/caution_3.0-zh-cn.png)
   标记为已处理后，该事件将不再在异常事件列表中显示，请谨慎操作！
   
   
 
#### 相关操作
#### 编辑/删除策略
- **查看策略绑定的胶囊**：在策略列表的"操作"列，单击"查看绑定胶囊"。
- **编辑策略**：在策略列表的"操作"列，单击"编辑"。
- **删除策略**：在策略列表的"操作"列，单击"删除"。
![](https://support.huaweicloud.com/highsecurity-dsc/public_sys-resources/caution_3.0-zh-cn.png)
- 绑定胶囊的策略，不支持删除。
- 通过策略内容绑定胶囊的策略，不支持编辑。
- 策略删除后，不可恢复，请谨慎操作！
 
#### 查看胶囊关联的策略/删除胶囊
- **查看胶囊关联的策略**：在数据胶囊列表的"操作"列，单击"查看策略"。
- **删除数据胶囊** ：
  1. 在数据胶囊列表的"操作"列，单击"删除"。
  
  2. 在弹框中，确定是否勾选"同步删除终端侧胶囊文件"后，单击"确定"。
     ![](https://support.huaweicloud.com/highsecurity-dsc/public_sys-resources/caution_3.0-zh-cn.png)
     - 勾选"同步删除终端侧胶囊文件"后，当应用端通过胶囊SDK下次请求解封该胶囊时，服务端将下发销毁指令，触发SDK自动删除本地胶囊文件；不勾选则仅删除平台侧管理记录，本地已存在的胶囊文件不受影响。
     
     - 删除平台侧胶囊记录后，将不再支持该胶囊的鉴权解封操作，请谨慎操作！
       
   
 
#### 相关文档
[模型混淆](https://support.huaweicloud.com/highsecurity-dsc/dsc_01_6104.html)：DSC模型混淆功能通过对AI模型注入混淆因子，在NPU侧的混淆环境中部署混淆算子，实现模型推理过程中的权重保护。
