.snyk 파일

.snyk 파일은 모든 사용자가 로컬에서 또는 워크플로우의 일부로 이슈 무시 제어, 스캔에서 파일 제외, 프로젝트 레벨의 Python 버전 설정, CLI 및 CI/CD 플러그인을 위한 패치 지정을 위해 사용할 수 있는 Snyk의 기능입니다.

.snyk 파일이 작동하는 방식은 Snyk 제품마다 다릅니다. .snyk 파일을 배포할 때, 먼저 파일이 어떻게 생성되는지, 어디에서 사용될 수 있는지, 그리고 무엇을 위해 사용되는지 검토하십시오. 자세한 내용은 Snyk 오픈소스와 함께 .snyk 파일 사용, Snyk Code와 함께 .snyk 파일 사용Snyk IaC와 함께 .snyk 파일 사용을 참조하십시오.

snyk ignore CLI 명령을 사용하여 .snyk 파일을 생성할 수 있습니다. 이 명령은 파일과 무시 규칙을 생성합니다. 텍스트 또는 코드 편집기를 사용하여 파일을 생성할 수도 있습니다. 형식은 YAML입니다. 자세한 내용은 .snyk 파일 생성 방법을 참조하십시오.

.snyk 파일 사용에 관한 주요 고려 사항은 다음과 같습니다.

  • 제품이 데이터베이스의 무시 규칙 또는 Snyk 규칙 사용을 지원하는 경우, CLI는 Snyk 웹 UI에서 생성되어 데이터베이스에 있는 무시 규칙과 함께 .snyk 파일이 있으면 이를 자동으로 사용합니다.

  • 빌드 시스템의 일부로 사용되는 CLI 및 CI/CD 플러그인은 스캔 중에 .snyk 파일이 있으면 이를 사용합니다.

  • .snyk 파일을 나머지 코드와 병합하는 경우, SCM을 Snyk으로 가져올 때 .snyk 파일의 규칙이 Snyk 웹 UI에서 생성된 데이터베이스 규칙 위에 적용됩니다.

  • .snyk 파일을 사용하여 무시를 지정하면, 이슈가 감지되고 모니터링된 후에만 가능한 Snyk 웹 UI에서의 지정을 피할 수 있습니다. .snyk 파일을 사용하여 Snyk 데이터베이스의 무시 규칙을 재정의할 수 있습니다. 자세한 내용은 데이터베이스의 무시 규칙을 재정의하는 방법을 참조하십시오.

  • 자세한 내용은 파일 제외 및 이슈 무시 FAQ를 참조하십시오.

.snyk 파일 생성 방법

snyk ignore 명령을 사용하여 .snyk 파일을 생성할 수 있습니다. 자세한 내용은 Ignore 명령 CLI 도움말을 참조하십시오.

기존 .snyk 파일이 없는 경우, 파일을 생성하고 다음 코드를 입력할 수 있습니다. # Snyk (https://snyk.io) policy file, patches or ignores known vulnerabilities version: v1.25.0

  • 현재 정책 스키마 버전이므로 versionv1.25.0으로 설정해야 합니다.

  • 무시 블록은 ignore 명령 설명이나 이 페이지의 예시에 표시된 관련 구문을 따라야 합니다.

자세한 내용은 .snyk 파일의 구문을 참조하십시오.

circle-info

Snyk은 일반적으로 .snyk으로 이름 지어진 정책 파일을 생성하기 위한 snyk-policy 패키지arrow-up-right도 제공합니다. 패키지 버전은 .snyk 파일에 입력할 정책 스키마 버전과 동일하지 않습니다.

.snyk 파일을 생성할 위치

일반적으로 .snyk 파일은 다른 애플리케이션 및 빌드 리소스와 마찬가지로 코드 리포지토리에 생성되어야 합니다.

.snyk 파일은 일반적으로 프로젝트의 루트에 위치합니다. 그러나 SCM 가져오기의 경우, .snyk 파일은 매니페스트 파일과 같이 스캔에 필요한 파일과 동일한 디렉토리에 있어야 합니다. 모노레포 및 복잡한 프로젝트에서 .snyk 파일 사용을 참조하십시오.

패치를 위한 .snyk 파일 생성

Git 리포지토리 오픈소스 스캔에서 Fix a vulnerability 버튼을 선택하고, Snyk 패치를 사용할 수 있으며 업그레이드가 불가능한 경우, 패치를 지정하기 위해 풀 리퀘스트에 .snyk 파일이 추가됩니다. Snyk 패치 생성은 npm 및 Yarn에서만 지원됩니다.

다음 예시는 취약점 수정 PR을 사용하여 패치 규칙을 생성하기 위한 .snyk 파일 생성 방법을 보여줍니다.

Snyk Code와 함께 .snyk 파일 사용

.snyk 파일을 사용하여 Snyk Code 테스트를 위해 파일을 가져오고 코드 분석 프로젝트를 생성할 Snyk Code 스캔에서 제외할 리포지토리 내의 파일이나 디렉토리를 지정할 수 있습니다. 가져오기에서 제외(exclude from import) 옵션은 Snyk Code에서만 지원되며, Snyk 웹 UI 및 CLI를 사용하여 수행되는 가져오기에 대해서만 지원됩니다.

snyk monitor 명령을 사용하는 대신 코드 리포지토리 통합을 사용하여 가져온 프로젝트의 경우, --policy-path 옵션을 사용할 수 없습니다. .snyk 파일은 .snyk 파일과 동일한 경로에 있는 프로젝트에만 적용됩니다.

자세한 내용은 가져오기 프로세스에서 디렉토리 및 파일 제외를 참조하십시오.

Snyk IaC와 함께 .snyk 파일 사용

IaC 무시 규칙에 대해서는 .snyk 정책 파일을 사용한 IaC 무시를 참조하십시오. 자세한 내용은 관리되지 않는 리소스 무시를 참조하십시오.

Snyk 오픈소스와 함께 .snyk 파일 사용

프로젝트의 .snyk 파일은 snyk testsnyk monitor 명령, 그리고 API나 Snyk 웹 UI를 통해 수행되는 모든 테스트에 대해 무시 및 기타 설정을 적용하는 데 사용됩니다. .snyk 파일은 업그레이드로 해결할 수 없는 취약점을 해결하기 위해 빌드 시 적용할 Snyk 패치를 정의하며, snyk protect 명령을 대체한 @snyk/protect 패키지arrow-up-right를 적용하는 데 사용됩니다. .snyk 파일은 Python (Pip) 버전을 위한 language settings:와 같은 분석 구성 항목을 정의합니다.

오픈소스 프로젝트에서 .snyk 파일이 작동하는 방식

Snyk은 SCM 통합, Snyk CLI 및 CI/CD 통합을 통해 스캔할 때 무시 규칙이 있는지 Snyk 데이터베이스와 .snyk 파일을 확인합니다.

프로젝트에 .snyk 파일이 있는 경우, snyk test 명령은 웹 UI에서 설정된 무시 규칙 대신 해당 파일을 무시 메커니즘으로 사용합니다.

SCM 프로젝트에 .snyk 파일이 포함된 경우, Snyk은 데이터베이스 무시 규칙과 .snyk 무시 규칙을 모두 고려합니다.

코드 리포지토리에 .snyk 파일을 포함하고 language-settings: 값이 설정되면, 코드 리포지토리 스캔을 실행할 때 프로젝트 레벨의 Python 설정을 생성할 수 있는 이점을 얻게 됩니다.

  • SCM 스캔(예: GitHub 스캔)의 경우, Snyk 웹 UI가 Organization > Settings > Snyk Open Source > Python > Pip Python version 옵션에서 조직 레벨의 Python 버전을 제어합니다.

  • 코드 리포지토리에 사용 가능한 UI 언어 설정 옵션 중 하나로 설정된 language settings: 값이 포함된 .snyk 파일을 포함함으로써, 해당 리포지토리의 SCM 스캔에 대해 UI 옵션에서 사용 가능한 모든 Python 버전을 사용하도록 조직 레벨 설정을 재정의할 수 있습니다.

circle-info

Snyk으로 프로젝트를 처음 가져올 때 .snyk 파일이 없었다면 프로젝트를 다시 가져와야 합니다.

Python 버전 지원에 대한 자세한 내용은 Python 버전 지원을 참조하십시오.

오픈소스 프로젝트와 함께 .snyk 파일을 사용하는 방법에 대한 자세한 내용은 다음을 참조하십시오.

Snyk CLI를 사용하여 취약점 무시

오류 메시지: 이 조직에는 CLI를 통한 무시가 활성화되어 있지 않습니다. 웹사이트를 통해 이슈를 무시해 주세요 (Error message: Ignoring via the CLI is not enabled for this organization. Please ignore issues via our website)arrow-up-right

오픈소스용 .snyk 파일 예시

Python 언어 버전 설정

프로젝트의 language-settings:를 Python 3.7로 설정하도록 .snyk 파일을 수동으로 수정합니다.

자세한 내용은 Git 프로젝트에서 Python 버전 설정을 참조하십시오.

취약점 무시 규칙 설정

circle-exclamation

지정된 경로에 대해 특정 취약점 무시:

모든 경로에 대해 취약점 무시:

여러 경로에서 특정 취약점 무시:

라이선스 무시 규칙 설정

패키지에 대한 라이선스 이슈를 무시하려면, snyk test 명령의 출력에서 라이선스 ID를 찾으십시오.

라이선스 ID는 라이선스 이슈 URL의 일부입니다. 예를 들어 이 URL: https://snyk.io/vuln/snyk:lic:npm:symbol:MPL-2.0arrow-up-right 에서 라이선스 ID는 snyk:lic:npm:symbol:MPL-2.0입니다.

Snyk 오픈소스에 대해 Snyk CLI 및 .snyk 파일 사용

사용할 CLI 명령

Snyk CLI에는 .snyk 파일을 생성하고 보기 위한 명령이 있습니다.

snyk policy 명령은 패키지에 대한 .snyk 정책을 표시합니다.

snyk ignore 명령은 명시된 이슈를 무시하도록 .snyk 파일을 수정합니다.

다음 예시는 디스크의 해당 라이브러리로 이어지는 모든 경로에 대해 SNYK-JS-BSON-561052 취약점을 무시하는 규칙을 생성하기 위해 snyk ignore 명령을 사용하는 것을 보여줍니다.

모노레포 및 복잡한 프로젝트에서 .snyk 파일 사용

Snyk CLI는 분석 중인 매니페스트에 .snyk 파일이 적용되기를 기대합니다. 복잡한 프로젝트나 모노레포의 경우, 하위 폴더에 많은 매니페스트가 있을 수 있으며 중앙 집중식 무시 정책을 사용하고 싶을 수 있습니다. .snyk 파일은 매니페스트 파일과 함께 프로젝트의 루트에 있어야 합니다. 만약 중앙 집중식 정책의 경우처럼 .snyk 파일이 프로젝트의 루트에 있지 않다면, --policy-path 옵션을 사용하여 경로를 명시적으로 지정해야 합니다.

CLI를 사용하여 .snyk 무시 정책을 생성했는데 Snyk이 취약점을 성공적으로 무시하지 못한다면, --policy-path=/path/path/file 옵션을 사용하십시오.

완전한 문장은 snyk ignore --id=IssueID [--expiry=expiry] [--reason='무시 사유'] [--policy-path=/path/path/file]가 되어야 합니다.

데이터베이스의 무시 규칙을 재정의하는 방법

프로젝트에 .snyk 파일이 있는 경우, snyk test CLI 명령은 웹 UI에서 설정된 무시 규칙 대신 해당 파일을 무시 메커니즘으로 사용합니다. 즉, 프로젝트에 .snyk 파일이 있고 CLI를 통해 snyk test 명령을 사용하는 경우, Snyk은 Snyk 웹 UI에서 이루어진 모든 설정을 재정의합니다.

그러나 SCM 프로젝트에 .snyk 파일이 포함된 경우, Snyk은 데이터베이스 무시 규칙과 .snyk 무시 규칙을 모두 고려합니다.

Settings > General > Ignores에서 Admin users only가 활성화된 경우, .snyk 파일을 사용하여 데이터베이스의 무시 규칙을 재정의할 수 있습니다. 웹 UI에서 설정된 무시 규칙을 재정의하려면, 관리자 사용자만 이슈를 무시하거나 이슈에 대한 무시 설정을 편집할 수 있도록 지정해야 합니다.

Snyk 웹 UI 및 API에서 사용할 이러한 무시 기본 설정을 지정하려면:

  1. Snyk 계정에 로그인합니다.

  2. Settings > General을 선택합니다.

  3. 다음과 같이 옵션을 선택합니다.

    • Admin users only - 관리자만 무시 설정을 사용자 정의할 수 있습니다.

    • All users in any environment - 모든 사용자가 무시 설정을 사용자 정의할 수 있습니다.

.snyk 파일의 구문

.snyk 파일은 다음과 같은 최상위 키를 가집니다.

  • language-settings:

  • ignore:

  • patch:

language-settings: 값은 사용 중인 Python 버전입니다. 이 페이지의 Python 언어 버전 설정 섹션에 있는 예시를 참조하십시오.

ignore:는 다음과 같은 형식의 무시 규칙입니다.

circle-info

reasonexpires 필드에는 이중 들여쓰기가 필요함에 유의하십시오.

expires 필드는 선택 사항입니다. 영구적인 무시가 필요한 경우 다음 예시와 같이 이 필드를 생략하십시오.

patch:는 다음과 같은 형식입니다.

Last updated