浏览软件组合分析 (SCA)

已完成

安全型 DevOps 管道的两个重要方面是包管理和开源软件 OSS 组件。

包管理

正如团队使用版本控制作为源代码的单一事实来源,安全型 DevOps 依赖包管理器作为二进制组件的唯一来源。

使用二进制包管理,开发团队可以为已批准的组件创建本地缓存,并为持续集成 (CI) 管道创建受信任的源。

在 Azure DevOps 中,Azure Artifacts 是用于组织和共享包访问权限的组件工作流不可分割的组成部分。 可通过 Azure Artifacts 完成以下操作:

  • 使你的项目保持井然有序。 通过将 Apache Maven、npm 和 NuGet 包存储再一起,轻松共享代码。 可以使用 Universal Packages 存储包,从而无需在 Git 中保留二进制文件。
  • 保护包。 让你使用的每个公共源包(包括来自 npmjs 和 NuGet .org 的包)在源中保持安全,只有你可以将其删除,并且有企业级 Azure 服务级别协议 (SLA) 支持。
  • 将无缝包处理集成到持续集成 (CI)/持续开发 (CD) 管道。 轻松访问生成和发布中的所有项目。 Azure Artifacts 与 Azure Pipelines CI/CD 工具本机集成。

有关 Azure Artifacts 的详细信息,请访问网页。 什么是 Azure Artifacts?

版本和兼容性

下表列出了 Azure Artifacts 支持的包类型。 还显示了 Azure DevOps Services 中每个包的可用性。

下表详细说明了每个包与特定版本的 Azure DevOps Server(以前称为 Team Foundation Server [TFS])的兼容性。

功能 Azure DevOps Services TFS
NuGet TFS 2017
npm TFS 2017 更新一和更高版本
Maven TFS 2017 更新一和更高版本
Gradle TFS 2018
通用
Python

对于来自公共和专用源的任意规模的团队而言,Maven、npm 和 NuGet 包都受支持。 Azure Artifacts 附带 Azure DevOps,但也可以从 Visual Studio Marketplace 获取该扩展。

Screenshot of Azure DevOps with Artifacts highlighted in the menu pane.

注意

将特定包版本发布到源后,将永久保留该版本号。

注意

不能上传具有相同版本号的较新版本包,也不能删除该版本并上传具有相同版本号的新包。 已发布的版本是不可变的。

OSS 组件的角色

开发工作效率更高,因为可重复使用的开源软件 (OSS) 组件广泛可用。

这种重复使用的实用方法包括运行时,这些运行时可用于 Windows 和 Linux 操作系统,例如 Microsoft .NET Core 和 Node.js。

但是,OSS 组件重复使用会带来风险:重复使用的依赖项可能具有安全漏洞。 因此,许多用户由于所用的 Node.js 包版本而在其应用程序中发现安全漏洞。

OSS 提供一种新的概念,称为软件组合分析 (SCA),可解决这些安全问题,如下图所示。

Screenshot of an image of the workflow for safely creating open-source dependencies.

使用 OSS 组件时,无论是创建还是使用依赖项,通常最好都执行以下概要步骤:

  1. 从最新的、正确的版本开始,以避免出现旧漏洞或许可证误用。
  2. 验证 OSS 组件是否为你版本对应的正确二进制文件。 在发布管道中,验证二进制文件以确保准确性并保留材料的可跟踪票据。
  3. 立即获取组件漏洞通知,纠正它们,并自动重新部署组件,以解决来自重复使用的软件的安全漏洞或许可证误用。