跳转到内容

社区供应链安全治理

为保障 OpenHarmony 开源项目的完整性、安全性与合规性,社区建立了一套贯穿软件全生命周期的供应链安全治理框架。该框架通过对 来源安全社区内部作业活动安全发布安全 三个核心阶段进行严格管控,并以 SBOM(软件物料清单)数据底座 作为统一的技术支撑,实现对软件供应链的端到端安全保障。

graph TB
%% 定义样式
classDef processBox fill:#90e0ef,color:#000,stroke:#0096c7,stroke-width:2px
classDef subBox fill:#caf0f8,color:#000,stroke:#0096c7,stroke-width:1px,stroke-dasharray: 5 5
classDef greenBox fill:#52b788,color:#fff,stroke:#2d6a4f,stroke-width:2px
classDef lightGreen fill:#d8f3dc,color:#000,stroke:#52b788,stroke-width:2px
classDef sbomStyle fill:#2d6a4f,color:#fff,stroke:#1b4332,stroke-width:3px
%% 来源安全区域
subgraph SG1["来源安全"]
direction TB
S1["二进制"]:::subBox
S2["开源软件"]:::subBox
S3["开源许可证管理"]:::greenBox
S4["开源引入管理<br/>License合规检查"]:::subBox
S1 -->|二进制来源安全| S4
S2 -->|开源软件来源安全| S3
S3 -->|生命周期检查| S4
end
%% 社区内部作业活动安全区域
subgraph SG2["社区内部作业活动安全"]
direction TB
subgraph SG2_1["构建系统"]
C1["社区代码仓"]:::greenBox
C2["封闭构建<br/>构建工程代码化<br/>构建过程自动化"]:::subBox
end
subgraph SG2_2["开发环境"]
C3["代码提交"]:::greenBox
C3_1["入仓签名"]:::subBox
C3_2["片段引用检查"]:::subBox
end
subgraph SG2_3["归档"]
C4["调用自动化<br/>版本签名"]:::subBox
end
C3 --> C3_1
C3_1 --> C1
C3 --> C3_2
C3_2 --> C1
C1 --> C2
C2 --> C4
end
%% 发布安全区域
subgraph SG3["发布安全"]
direction TB
R1["版本归档"]:::lightGreen
R2["配套Docker编译环境"]:::lightGreen
R3["版本打tag"]:::lightGreen
R4["Release分支"]:::lightGreen
R5["镜像服务器"]:::processBox
R6["镜像托管服务器"]:::processBox
R7["HPM包管理器"]:::processBox
R8["发布部件包和发行版<br/>发布签名归档<br/>发布历史归溯"]:::processBox
R1 --> R5
R2 --> R6
R3 --> R7
R4 --> R8
R5 --> R9["社区发布"]
R6 --> R9
R7 --> R9
R8 --> R9
end
%% SBOM数据底座
SBOM["SBOM数据底座 设计树/构建树"]:::sbomStyle
%% 主流程连接
S4 -->|自动化建仓| C3
S4 --> SBOM
C2 --> R1
C2 --> R2
C2 --> R3
C2 --> R4
C1 --> SBOM
%% 设置子图样式
style SG1 fill:#e3f2fd,stroke:#00b4d8,stroke-width:3px
style SG2 fill:#e3f2fd,stroke:#00b4d8,stroke-width:3px
style SG3 fill:#e3f2fd,stroke:#00b4d8,stroke-width:3px
style SG2_1 stroke:#999,stroke-width:1px,stroke-dasharray: 5 5,fill:none
style SG2_2 stroke:#999,stroke-width:1px,stroke-dasharray: 5 5,fill:none
style SG2_3 stroke:#999,stroke-width:1px,stroke-dasharray: 5 5,fill:none

来源安全是供应链的第一道防线,旨在确保所有进入社区代码仓的软件组件和代码都是可信且合规的。

  • 第三方开源软件引入:所有计划引入的第三方组件,都必须经过严格的准入审查,包括漏洞扫描、社区健康度评估以及许可证合规性分析。
  • 社区贡献者代码:来自社区贡献者的代码提交,需通过自动化的代码审查和安全扫描流程,确保代码质量与安全。
  • 开源许可证管理:社区设有专门的许可证管理机制,对所有引入的组件进行合规性检查,并将结果记录到 SBOM 数据底座,以防范法律风险。

代码进入社区后,通过自动化的安全工具链和流程,对开发和构建过程进行持续监控,及时发现并修复风险。

  • 社区代码仓:作为可信代码的存储库,所有代码变更都将被记录和追溯。
  • 自动化安全门禁:代码在集成过程中会触发一系列自动化扫描,形成安全门禁:
    • 静态代码扫描:检查源代码中的潜在安全缺陷。
    • 软件成分分析 (SCANOSS):识别项目中的所有直接和间接依赖,分析其来源、版本和许可证。
    • 漏洞扫描:将识别出的开源组件与已知的漏洞数据库进行比对,发现潜在安全漏洞。
  • 风险数据沉淀:所有扫描结果都将汇集到 SBOM 数据底座,用于持续的风险评估和监控。

发布安全是交付可信软件给最终用户的最后一道关卡,确保发布的产物是完整、可追溯且未被篡改的。

  • 版本归档:通过安全审计的构建产物将被安全地归档到制品仓库中。
  • 配套 Docker 编译环境:为每个正式版本提供配套的 Docker 编译环境,确保构建过程的可复现性,便于安全审计和问题排查。
  • 版本标识与追溯:通过对发布版本打上明确的 Git Tag 和创建专属的 Release 分支,建立从二进制产物到源代码的精确追溯链。
  • 安全分发:最终的发行版通过官方、可信的渠道分发给用户。

SBOM 数据底座是整个供应链安全治理框架的核心,它提供了全面的软件透明度,是实现持续风险监控和快速应急响应的基础。

  • 核心作用:作为一个动态更新的数据库,它记录了 OpenHarmony 项目中所有软件组件的详细信息,包括其来源、版本、许可证、依赖关系和已知漏洞。
  • 设计树与构建树SBOM 底座同时管理“设计树”(开发阶段计划引入的组件)和“构建树”(最终构建产物中实际包含的组件),通过比对两者差异,可精确识别供应链中的潜在风险。
  • 数据驱动安全:通过对 SBOM 数据的持续分析,社区能够快速定位受新曝出漏洞影响的组件,并高效地组织修复和版本更新工作。