越来越多的软件对开发者施加了安全要求。由于软件是使用多个库或工具构建的,开发者在最终产品中引入了许多实际上无法完全控制的依赖项。确保产品安全意味着在软件开发和 CI/CD(持续集成和部署)级别维护高安全标准。随着 SBOM(软件物料清单)等软件包附带的工件出现,开发者可以全面了解软件版本中包含的依赖项和库。
通过在 CI/CD 流程中运行安全扫描并生成 SBOM,可以更轻松地发现产品发布之前是否存在具有漏洞的组件,或者仅通过查看 SBOM 来确定是否需要在发布后出现漏洞时生成安全补丁。
SBOM 是代码库中所有组件的列表。完整的 SBOM 应包括最终软件版本中组件的版本、来源和许可证名称。它还可以包括补丁状态以及有关组件的其他有价值信息。
美国总统乔·拜登于 2021 年 5 月发布了一项安全行政命令,概述了对参与美国政府业务的机构和供应商的建议。指南规定,公司/机构必须保护软件以应对供应链网络攻击。其中一项建议是强制执行 SBOM,以确保联邦政府使用的软件安全。
SBOM 的用例可能有所不同。SBOM 用户可以包括开发者、安全和合规团队、事件响应团队、采购、投资者等等。例如,软件工程师希望拥有最新的 SBOM,以了解哪些库与底层软件依赖项相关。SBOM 也是安全团队的理想工具,他们需要了解第三方软件风险,包括其版本、许可证影响以及可能增加安全债务的其他依赖项。SBOM 帮助事件响应团队确定漏洞可能存在的位置,并评估是否已利用漏洞以通知客户和软件供应商。
Travis CI 可以根据您的仓库和使用的编程语言生成 SBOM。CycloneDX 被选为扫描和生成 SBOM 的默认标准。CycloneDX 插件可以为 Travis CIe 支持的许多流行编程语言生成 SBOM。结果以 json 或 xml 格式生成。另一个优势是能够将 SBOM 生成 SPDX 文件。SPDX 是 SBOM 的另一种格式。有关更多信息,请参阅我们的 文档。
开发者应注意,由于 Travis CI 的开放结构,可以使用任何扫描程序/SBOM 生成器。Travis CI 提供了一个开箱即用的基本选项,便于使用和构建配方标准化。
Travis CI 用户可以享受 SBOM 生成的优势,在他们的 CI/CD 自动化中使用集成的 SBOM 功能,如下面的示例所示
os: linux
dist: focal
language: python
addons:
sbom:
on:
branch: master
pr: true
condition: $OS = linux
run_phase: before_script
output_format: spdx-xml
mariadb: '10.0'
script:
- python hello.py
- pip install -r requirements.txt
<hello.py>
print("hello world")
<requirements.txt>
flask
最后,SBOM 生成是安全软件供应链中众多环节之一。请记住,自动化构建、测试和部署流程的 CI/CD 工具是攻击者广泛攻击的目标。其他领域可以帮助您保护软件测试和发布流程,这些领域在我们的 文档 和 博客 中进行了描述。
主动日志扫描以检测和隐藏机密 与 日志访问限制 相结合
使用 Travis 改进的 CI/CD 构建作业日志安全来签署您的软件
使用 Travis CI 时最佳实践摘要