향상된 .NET 스캐닝

circle-info

릴리스 상태

NuGet .NET 애플리케이션을 위한 향상된 Snyk 오픈소스 스캔은 Early Access 단계이며 엔터프라이즈(Enterprise) 플랜에서만 사용할 수 있습니다. 자세한 내용은 플랜 및 가격arrow-up-right을 참조하십시오.

Snyk 미리 보기(Snyk Preview)를 사용하여 이 기능을 활성화할 수 있습니다.

기존 솔루션의 제한 사항

Snyk 웹 UI 및 CLI에서 SCM 통합을 위한 기존 .NET 스캔 솔루션은 두 가지 서로 다른 접근 방식을 사용합니다. SCM 통합을 위한 종속성 분석은 해결 방법이 없으며 수동으로 무시해야 하는 오탐(false positives)을 생성할 수 있습니다.

CLI를 사용하여 프로젝트를 스캔하면 SCM 통합을 사용하여 동일한 프로젝트를 가져올 때보다 더 정확한 결과를 기대할 수 있습니다. 특정 .NET 기능을 사용하는 프로젝트를 스캔할 때 오류가 발생할 수 있습니다.

스캔 개선 사항

Snyk은 CLI와 SCM 통합 전반에서 종속성 결과가 일관되도록 .NET 스캔 프로세스를 개선했습니다. 또한 이 업데이트는 이전에 UI에 표시되었던 런타임 종속성으로 인한 오탐을 제거합니다. 이 접근 방식은 .NET 에코시스템의 내부 작동 방식을 사용하는 것을 포함합니다.

향상된 .NET 스캔은 dotnet SDK 자체에서 성공적으로 빌드할 수 있는 모든 프로젝트를 스캔할 수 있는 기능을 제공하여, .props 파일, global.json 또는 중앙 패키지 관리(Central Package Management)와 같은 특정 .NET 기능을 사용하는 프로젝트를 스캔할 수 없었던 이전의 제한 사항을 제거합니다.

SCM 통합을 위한 .NET 스캔 개선 사항

circle-info

Snyk Broker는 지원되지 않습니다.

.NET 스캔 개선 사항은 Git 리포지토리 통합을 사용하여 프로젝트를 가져올 때 사용할 수 있습니다.

개선 사항을 활성화하려면 다음 단계를 따르십시오:

  1. Snyk 미리 보기 메뉴를 통해 조직 또는 그룹에 대해 향상된 .NET 스캔을 활성화합니다.

  2. .NET 애플리케이션이 포함된 모든 리포지토리를 다시 가져옵니다. 기존 프로젝트를 다시 테스트하는 것만으로는 충분하지 않습니다.

비공개 패키지 리포지토리 통합

향상된 .NET 솔루션은 .NET 프로젝트를 빌드하므로, Snyk은 모든 비공개 NuGet 리포지토리에 대한 액세스 권한이 필요합니다.

권장되는 방법은 nuget.configarrow-up-right 파일을 사용하고 Snyk NuGet 비공개 패키지 리포지토리 통합(Settings > Integrations > NuGet Repositories)에 자격 증명을 등록하는 것입니다.

Settings, Integrations 화면에서 NuGet Repositories 설정
Settings, Integrations 화면에서 NuGet Repositories 설정

nuget.config를 사용하지 않고 .NET 에코시스템에 비공개 패키지를 찾을 위치를 알리는 다른 방법을 사용하는 경우, Snyk은 프로젝트를 복원하기 전에 비공개 패키지 리포지토리 통합에 정의된 모든 비공개 NuGet 리포지토리 자격 증명을 dotnet nuget 소스로 추가하려고 시도합니다.

Username, Personal access token, 및 리포지토리 URL(HTTPS 소스만 지원)을 추가하여 Your tokens 필드를 채웁니다.

자세한 내용은 패키지 리포지토리 통합을 참조하십시오.

SCM 통합을 위한 향상된 .NET 스캔의 제한 사항

  • Directory.Build.props, global.json 및 기타 .NET 관련 매니페스트 파일이 지원되지만, 파일 이름은 Microsoft가 설명arrow-up-right한 대로 대소문자를 사용해야 합니다.

  • global.json의 경우, Snyk은 현재 Microsoft에서 지원하는 모든 major.minor.patch 버전을 지원하지 않으며 그 중 일부만 지원합니다. 자세한 내용은 이 에러 코드를 참조하십시오.

  • 작업은 대소문자를 구분하는 파일 시스템에서 수행됩니다. 즉, <ProjectReference> 문자열과 같은 매니페스트 정의는 파일 및 폴더의 대소문자와 일치해야 합니다.

  • Snyk은 Visual Studio Build Tools를 사용하는 프로젝트를 지원하지 않습니다.

  • Snyk은 .NET 프로젝트에 대해 Windows 전용 프레임워크(WPF, WCF)를 지원하지 않습니다.

  • 다운로드된 종속성이 총 10GB를 초과하는 프로젝트는 지원되지 않습니다.

Snyk CLI를 위한 .NET 스캔 개선 사항

.NET 스캔 개선 사항은 Snyk CLI의 snyk testsnyk monitor 명령 모두에서 사용할 수 있습니다.

개선 사항을 활성화하려면 다음 단계를 따르십시오:

  1. 최신 버전의 CLI를 설치합니다.

  2. dotnet restore를 실행합니다.

  3. 평소와 같이 snyk test 또는 snyk monitor를 사용하여 .NET 프로젝트를 스캔하되, --dotnet-runtime-resolution 옵션을 추가합니다.

--dotnet-runtime-resolution 옵션은 --all-projects와 함께 작동합니다.

예: snyk test --dotnet-runtime-resolution

CLI용 향상된 .NET 스캔은 빌드 매니페스트에서 여러 대상 프레임워크를 지원합니다.

기본적으로 이 솔루션은 모든 대상 프레임워크를 스캔합니다. 개별 대상 프레임워크를 스캔하려면 CLI 명령에 --dotnet-target-framework=<targetFramework> 옵션을 추가해야 합니다.

예: snyk test --dotnet-runtime-resolution --dotnet-target-framework=net8.0

CLI 및 SCM을 위한 .NET 스캔 방법

Snyk이 향상된 .NET으로 프로젝트를 스캔할 때 SnykTest라는 환경 변수를 사용할 수 있게 됩니다. 이 환경 변수를 사용하여 스캔을 중단시킬 수 있는 도구의 실행을 방지하기 위한 조건문을 만들 수 있습니다. 다음 예시는 swagger 명령 실행을 방지하기 위해 SnykTest 변수를 사용합니다:

지원되는 .NET 버전

향상된 .NET 스캔 기능은 다음을 지원합니다:

  • .NET 6, 7 - 최신 SDK 버전만 지원

  • .NET 8, 9 및 10 - 모든 SDK 버전 지원

  • 모든 버전의 .NET Standard

SCM 통합을 사용하여 지원되지 않는 .NET 프로젝트를 가져오면 향상된 .NET 스캔 기능이 활성화되지 않고 레거시 스캔 방식으로 대체됩니다.

사용된 <TargetFramework>는 Snyk 스캐너가 올바르게 인식할 수 있도록 현재 Microsoft에서 지원하는 것arrow-up-right과 호환되어야 합니다.

.NET 프레임워크 패키지 정리 (RestoreEnablePackagePruningarrow-up-right)

.NET 10.0 이상을 대상으로 하는 프로젝트의 경우, Snyk의 향상된 .NET 스캐너(SCM 통합 및 CLI 모두)는 기본 Microsoft 빌드 동작과 일치합니다.

기본적으로 Microsoft는 이러한 대상 프레임워크에 대해 RestoreEnablePackagePruning 속성을 활성화합니다. 이 설정은 복원 작업 중에 프레임워크에서 제공하는 패키지 참조를 정리(prune)합니다.

향상된 .NET 스캐너는 프로젝트 구성을 존중합니다. 프로젝트 파일이나 Directory.Build.props 파일에서 RestoreEnablePackagePruning 속성을 false로 설정하여 이 기능을 비활성화하면, Snyk은 이 설정을 존중하여 스캔 중에 해당 참조를 정리하지 않습니다.

Last updated