浏览软件组合分析 (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 获取该扩展。
注意
将特定包版本发布到源后,将永久保留该版本号。
注意
不能上传具有相同版本号的较新版本包,也不能删除该版本并上传具有相同版本号的新包。 已发布的版本是不可变的。
OSS 组件的角色
开发工作效率更高,因为可重复使用的开源软件 (OSS) 组件广泛可用。
这种重复使用的实用方法包括运行时,这些运行时可用于 Windows 和 Linux 操作系统,例如 Microsoft .NET Core 和 Node.js。
但是,OSS 组件重复使用会带来风险:重复使用的依赖项可能具有安全漏洞。 因此,许多用户由于所用的 Node.js 包版本而在其应用程序中发现安全漏洞。
OSS 提供一种新的概念,称为软件组合分析 (SCA),可解决这些安全问题,如下图所示。
使用 OSS 组件时,无论是创建还是使用依赖项,通常最好都执行以下概要步骤:
- 从最新的、正确的版本开始,以避免出现旧漏洞或许可证误用。
- 验证 OSS 组件是否为你版本对应的正确二进制文件。 在发布管道中,验证二进制文件以确保准确性并保留材料的可跟踪票据。
- 立即获取组件漏洞通知,纠正它们,并自动重新部署组件,以解决来自重复使用的软件的安全漏洞或许可证误用。