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의 각 패키지의 가용성도 표시됩니다.

다음 표에서는 이전에 TFS(Team Foundation Server)로 알려진 특정 버전의 Azure DevOps Server와 각 패키지의 호환성에 대해 자세히 설명합니다.

기능 Azure DevOps Services TFS
NuGet Yes TFS 2017
npm Yes TFS 2017 업데이트 1 이상
Maven Yes TFS 2017 업데이트 1 이상
Gradle Yes TFS 2018
유니버설 Yes
Python

공개 및 비공개 소스의 Maven, npm 및 NuGet 패키지는 모든 규모의 팀에서 지원될 수 있습니다. Azure Artifact는 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 구성 요소가 버전에 대한 올바른 이진 파일인지 확인합니다. 릴리스 파이프라인에서 이진 파일의 유효성을 검사하여 정확도를 보장하고 추적 가능한 제품 구성 정보(BOM)를 유지합니다.
  3. 구성 요소 취약성이 있는 경우 즉시 알림을 받고 구성 요소를 자동으로 수정하고 재배포하여, 재사용된 소프트웨어로 인한 보안 취약성 또는 라이선스 오용을 방지합니다.