更新时间:2026-10-29 GMT+08:00
分享

数据胶囊

在企业数据资产上云场景中,数据一旦离开原始系统,其访问控制策略往往随之失效,使用方可能超出约定范围使用数据,甚至在数据过期后仍继续访问,导致数据泄露风险难以管控。数据胶囊正是为解决这一矛盾而设计,它将原始数据、访问策略、加密密钥、权属信息与防篡改签名封装为标准化的独立文件格式(.dcap),使安全策略随数据一同流转,即使数据脱离原系统,仍可独立完成完整性校验、策略鉴权与受控解密,确保“数据走到哪里,安全策略跟到哪里”,实现数据的自保护与全程可追溯。

基本概念

  • 数据胶囊(Data Capsule):数据胶囊是一种标准化二进制容器格式(文件后缀 .dcap),采用文件头+文件体两段式结构,将原始数据、访问策略、加密密钥、权属信息、防篡改签名封装为单一独立文件。文件脱离原系统后仍可独立完成完整性校验、策略鉴权与受控解密,实现数据走到哪里,安全策略跟到哪里。
    具有以下核心属性:
    • 自包含性:文件头内置全量元数据、策略、密钥密文与签名,无需依赖外部系统即可完成合法性校验。
    • 自保护性:内置使用控制策略,每次访问均强制鉴权,防止越权操作。
    • 分片加密:文件体采用固定大小分片独立加密,支持大文件随机读取与断点续传。
    • 防篡改性:文件头整体由数字签名保护,任何篡改均可被校验发现。
    • 可追溯性:封装信息与权属信息内置,结合平台审计实现全链路溯源。
  • 数据策略(Data Policy):数据策略是写入文件头的使用控制规则集合,定义谁、在什么时间 / 环境、可以做什么操作、最多用多少次,是数据胶囊自保护能力的核心依据。策略随文件头一同被数字签名保护,无法被篡改,拆封时强制校验。

    策略核心维度:

    • 主体维度:授权用户、角色、组织。
    • 时间维度:授权生效起止时间。
    • 操作维度:查看、下载、分析、预处理、训练、推理、自定义。
    • 环境维度:IP 白名单、是否强制 TEE 环境、设备绑定。
    • 频次维度:总访问次数、单日访问次数、单操作数据量上限。

方案架构

DSC数据胶囊模块通过数据使用策略管理、封装引擎、策略核验&解封引擎、审计与监控中心及密钥管理服务(KMS,支持主密钥托管/BYOK/HYOK)五大核心组件协同工作,将原始数据按策略加密封装为.dcap格式的数据胶囊文件。该文件由文件头(基础元数据、数据策略、密钥密文、权限信息、数字签名五个区域)和文件体(加密分片)组成,实现数据与访问策略的强绑定——无论数据流转至何处,策略始终随行。封装时由封装引擎调用KMS获取密钥加密数据并打包元数据;解封时由策略核验&解封引擎先校验文件头中的权限与策略,通过后调KMS获取密钥解密文件体,全过程由审计与监控中心记录。该架构以集中式密钥管理为安全基石,通过职责分离、数字签名防篡改和标准化封装,提供了一种跨平台的数据安全存储与交换方案。

架构图解析:

  • DSC 数据胶囊模块(核心服务层)
    • 数据使用策略管理:定义和管理数据使用规则,是封装与解封的依据。
    • 封装引擎:调用 KMS 获取密钥,对原始数据加密并打包为.dcap 文件。
    • 策略核验&解封引擎:读取文件头进行权限核验,通过后调用KMS获取密钥解密数据。
    • 审计与监控中心:记录所有数据访问与操作日志,实现事后审计和实时监控。
    • 密钥管理服务 KMS:安全基石,支持主密钥托管/BYOK/HYOK/密钥胶囊。
  • 数据胶囊文件 .dcap(文件结构)
    • 文件头(元数据区):
      • 基础元数据区
      • 数据策略区:数据与访问策略强绑定
      • 密钥密文区:加密后的密钥信息
      • 权属信息区:记录了数据的租户ID、用户ID、数据来源、数据分级等
      • 数字签名区:防篡改,保证完整性
    • 文件体(加密数据)
  • 核心数据流向
    • 封装阶段:策略管理 → 封装引擎(调KMS获取密钥)→ 加密数据 + 打包元数据 → 生成.dcap 文件
    • 解封阶段:读取.dcap文件头 → 策略核验&解封引擎(验证权限 → 调KMS获取解密密钥 → 解密文件体)→ 返回明文数据
    • 审计流:关键操作(策略核验结果、解密请求等)流向审计与监控中心

方案优势

  • 数据与策略绑定:策略直接封装在文件头中,数据移动到哪里策略就跟随到哪里,确保安全的可移植性。
  • 集中式密钥管理:所有密钥操作统一通过KMS,支持BYOK/HYOK等高级安全特性。
  • 职责分离:策略管理、封装/解封、密钥管理、审计监控各司其职,符合安全设计最佳实践。
  • 完整性保护:数字签名区防止文件篡改,保证数据胶囊的完整性和真实性。
  • 标准化封装:.dcap 格式提供通用的跨平台数据安全交换和存储方案。

数据胶囊封装

参考以下步骤将原始数据按策略加密封装为.dcap格式的数据胶囊文件。

步骤一:创建数据策略

用户在DSC界面创建数据策略,配置授权规则,下载策略内容或ID。

  1. 登录DSC服务控制台。
  2. 在左侧导航栏中,选择“数据安全屋”,进入“数据安全屋”控制台。
  3. 在左侧导航栏中,选择“数据胶囊”,选择“策略”页签。
  4. 单击“创建策略”,输入策略名称后,单击“下一步”。
  5. (可选)访问控制配置,参数说明如表1所示,配置完成后,单击“下一步”。

    图1 访问控制配置

    表1 访问控制参数说明

    参数名称

    参数说明

    授权访问用户

    授权可以访问数据的用户。

    支持选择IAM子账号,或直接输入用户ID;不配置则对所有租户内用户开放鉴权。

    访问时间

    配置授权访问的时间范围。

    访问操作方式

    选择访问操作方式:查看、下载、分析、预处理、训练、推理,或自定义操作方式。

    访问次数

    配置可访问数据的次数,取值范围 0 - 1,000,000,0 表示不限制访问次数;次数统计所有拆封操作的总次数。

  6. (可选)运行环境控制,参数说明如表2所示,配置完成后,单击“下一步”。

    图2 运行环境控制

    表2 运行环境控制参数说明

    参数名称

    参数说明

    节点控制

    限定数据胶囊只能在指定安全屋或接入点内拆封。

    • DSC 数据安全屋:DSC服务部署的专用安全网络区域,限定数据胶囊只能在指定的DSC安全屋内拆封。
    • DEW 密钥空间接入点:密码安全中心(DEW)的密钥访问代理节点,数据胶囊通过该节点间接获取KMS密钥,避免密钥直接暴露给应用。

    应用控制

    限定数据胶囊仅允许在选择的应用环境中使用。

    • ModelArts:华为云AI开发平台,限定数据胶囊仅允许在ModelArts环境中使用,用于AI训练等场景的数据保护。
    • 自定义:用户自行指定允许使用数据胶囊的目标应用,提供灵活的应用级访问控制。

  7. (可选)网络与销毁策略配置。

    图3 网络与销毁策略
    • 网络控制:通过IP地址段(CIDR格式:无类别域间路由格式,表示一个IP地址段,如 192.168.1.0/24 表示 192.168.1.0 ~ 192.168.1.255 共256个IP)白名单限定允许访问数据胶囊的网络范围。

      限制数据胶囊仅能在指定网络环境中拆封访问的配置项;不配置则无网络限制。

    • 自动删除
      • 否:不启用自动删除功能。
      • 是:启用自动删除功能。

        触发条件:满足以下任意一个条件即触发数据胶囊销毁,多个条件之间为“或”关系。

        • 超期:数据胶囊超过设定的有效期后自动销毁。
        • 超过次数:数据胶囊被拆封访问次数超过设定阈值后自动销毁。
        • 非授权用户访问:当未授权用户尝试访问数据胶囊时自动销毁。
        • 非授权网络访问:当来自非授权网络(不在IP白名单内)的访问请求触发数据胶囊自动销毁。

        自动删除一旦触发,数据胶囊中的加密数据将被永久销毁,无法恢复,请谨慎配置!

  8. 配置完成后,单击“立即创建”。
  9. 策略创建成功后,在策略列表中,可查看策略ID,单击“操作”列的“查看”,可获取策略JSON文件。

    策略ID对应步骤三:胶囊封装中“dataPolicyId”;策略JSON文件对应步骤三:胶囊封装中“dataPolicy”。

步骤二:通过KMS服务生成主密钥

用户通过KMS服务生成或导入主密钥CMK,用于胶囊的封装和解封。

详细操作请参见创建密钥或导入密钥材料。

步骤三:胶囊封装

用户使用胶囊SDK在本地对需要保护的文件进行加密封装,输入策略内容/ID和主密钥ID,生成完整的胶囊 .dcap 文件。本指南面向开发者,指导如何使用 SDK 完成胶囊封装操作。

胶囊封装前,请参考数据胶囊封装对环境有哪些要求?验证环境是否满足条件,满足条件后,执行以下步骤完成胶囊封装。

  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 粘贴

    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解封数据胶囊,使用数据。

本指南面向开发者,完整介绍数据胶囊的解封操作。

  1. 调用SDK函数解封数据胶囊。SDK 会依次执行验签、策略解析、云端鉴权、密钥解密、分片解密,最终输出明文数据。

    • 解封流程: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);

审计与监控

对所有胶囊的封装和解封操作进行审计,对胶囊解封失败操作进行监控告警。

数据胶囊操作审计

记录所有数据胶囊的封装、解封及管理操作,支持多维度筛选与详情追溯,满足合规审计要求。

  1. 登录DSC服务控制台。
  2. 在左侧导航栏中,选择“数据安全屋”,进入“数据安全屋”控制台。
  3. 在左侧导航栏中,选择“数据胶囊”,选择“审计与监控 > 数据胶囊操作审计”页签。
  4. 统计概览,在审计列表上方,为您展示了使用数据胶囊的总操作次数、封装成功、解封成功和解封失败的次数。
  5. 查看数据胶囊操作审计日志列表。

    图4 操作审计日志列表
    表5 操作审计日志列表参数说明

    参数名称

    参数说明

    日志ID

    每条审计日志的唯一标识。

    胶囊名称 /ID

    操作的数据胶囊文件名称及ID。

    操作类型

    操作类别,如“拆封”、“封装”。

    操作人ID

    执行操作的用户标识。

    客户端IP

    发起操作的客户端IP地址。

    操作结果

    操作状态,如“成功”、“失败”。

    操作数据量

    本次操作涉及的数据大小。

    操作时间

    操作发生的精确时间戳。

  6. 在“操作”列单击“详情”,可查看该日志的详细信息。

数据胶囊异常事件审计

集中展示数据胶囊全生命周期的异常告警事件,支持分级处置、溯源追踪与闭环管理。

  1. 登录DSC服务控制台。
  2. 在左侧导航栏中,选择“数据安全屋”,进入“数据安全屋”控制台。
  3. 在左侧导航栏中,选择“数据胶囊”,选择“审计与监控 > 胶囊异常事件”页签。
  4. 统计概览,在审计列表上方,为您展示了数据胶囊的异常事件总数、严重(完整性校验失败)、警告(未授权访问)和提示(超期/次数预警)的总次数。
  5. 查看数据胶囊异常事件列表。

    图5 数据胶囊异常事件列表
    表6 数据胶囊异常事件列表参数说明

    参数名称

    参数说明

    关联对象/ID

    触发异常事件的数据胶囊文件名及胶囊唯一标识。

    事件类型

    异常事件分类标签,如“次数限制”表示因拆封次数超限触发。

    级别

    事件严重等级,如“警告(未授权访问)”表示检测到非授权访问行为。

    事件描述

    异常事件的详细说明,如“数据策略校验不通过”,即拆封时策略核验未通过。

    触发用户/ID

    触发该异常事件的用户标识(用户名和用户ID)。

    触发IP

    发起异常操作的客户端IP地址。

    触发时间

    异常事件发生的精确时间戳。

    状态

    事件处理状态,“未处理”表示尚未处理。

    处理人/时间

    处理该异常事件的操作人及处理时间,未处理时为空

  6. 在“操作”列单击“详情”,可查看该日志的详细信息。
  7. 已处理该事件后,在“操作”列单击“标记已处理”,在弹框中,输入CONFIRM后单击“确定”。

    标记为已处理后,该事件将不再在异常事件列表中显示,请谨慎操作!

相关操作

编辑/删除策略

  • 查看策略绑定的胶囊:在策略列表的“操作”列,单击“查看绑定胶囊”。
  • 编辑策略:在策略列表的“操作”列,单击“编辑”。
  • 删除策略:在策略列表的“操作”列,单击“删除”。
  • 绑定胶囊的策略,不支持删除。
  • 通过策略内容绑定胶囊的策略,不支持编辑。
  • 策略删除后,不可恢复,请谨慎操作!

查看胶囊关联的策略/删除胶囊

  • 查看胶囊关联的策略:在数据胶囊列表的“操作”列,单击“查看策略”。
  • 删除数据胶囊:
    1. 在数据胶囊列表的“操作”列,单击“删除”。
    2. 在弹框中,确定是否勾选“同步删除终端侧胶囊文件”后,单击“确定”。
      • 勾选“同步删除终端侧胶囊文件”后,当应用端通过胶囊SDK下次请求解封该胶囊时,服务端将下发销毁指令,触发SDK自动删除本地胶囊文件;不勾选则仅删除平台侧管理记录,本地已存在的胶囊文件不受影响。
      • 删除平台侧胶囊记录后,将不再支持该胶囊的鉴权解封操作,请谨慎操作!

相关文档

模型混淆:DSC模型混淆功能通过对AI模型注入混淆因子,在NPU侧的混淆环境中部署混淆算子,实现模型推理过程中的权重保护。

相关文档