Python용 SCM 통합 지원

circle-exclamation

프로젝트를 스캔하려면 리포지토리에 지원되는 매니페스트 파일이 포함되어 있는지 확인해야 합니다.

Git 프로젝트에서 Python 버전 설정

Git에서 가져온 Pip 프로젝트를 스캔할 때, Snyk은 조직 설정 또는 .snyk 파일에 지정된 Python 버전을 사용합니다.

circle-info

조직에 대해 올바른 Python 버전을 지정하는 것이 중요합니다. 이는 프로젝트 스캔에 사용되는 종속성 버전에 영향을 줄 수 있기 때문입니다.

Snyk은 지원되는 각 minor 버전에 대해 최신 patch 버전을 사용합니다.

기본적으로 Snyk은 Python 3.7을 사용하여 Pip 프로젝트를 테스트합니다.

circle-exclamation

Git에서 가져온 Pip 프로젝트를 테스트할 때 Snyk이 사용할 Python 마이너 버전을 정의하려면 조직 설정 및 .snyk 정책 파일을 사용할 수 있습니다.

조직의 모든 프로젝트에 대해 Python 버전을 정의하려면:

  1. Snyk 계정에 로그인하고 관리하려는 관련 그룹 및 조직으로 이동합니다.

  2. Settings > Snyk Open Source를 선택합니다.

  3. Python에 대한 Edit settings를 선택합니다.

  4. Python version 드롭다운에서 이 조직의 프로젝트를 테스트할 때 사용할 Python 버전을 선택합니다.

Pip Python 버전 설정
Pip Python 버전 설정

조직 내의 특정 프로젝트에서 다른 Python 버전을 사용해야 하는 경우, 프로젝트 리포지토리에 .snyk 파일을 추가하고 원하는 버전을 지정할 수 있습니다.

.snyk 파일은 프로젝트 매니페스트 파일과 동일한 디렉토리에 있어야 합니다.

Snyk은 .snyk 파일에 지정된 major, minorpatch 버전에 따라 사용할 Python 버전을 선택합니다.

  • Major 버전만 지정된 경우 (예: 2 또는 3): 기본 minor 버전인 2.7 또는 3.7로 스캔됩니다.

  • Majorminor 버전이 지정된 경우 (예: 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13, 3.14): 해당 버전(3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13, 또는 3.14)으로 스캔됩니다.

  • Major, minorpatch 버전이 지정된 경우 (예: 3.8.x, 3.9.x, 3.10.x, 3.11.x, 3.12.x, 3.13.x): 특정 patch 버전은 무시되며, 프로젝트는 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 또는 3.14의 기본 버전으로 스캔됩니다.

  • 지원되지 않는 minor 버전으로 지정된 경우: 기본값인 2.7 또는 3.7이 사용됩니다.

SCM 리포지토리 및 Pip

다음 종속성은 지원되지 않으며 파일을 스캔하기 전에 제거됩니다. 나머지 종속성은 스캔에 포함됩니다.

  • 비공개 PyPI 리포지토리

  • requirements.txt 파일 내의 file://, 일반 URL, 상대 경로 및 일반적인 URI

  • --index-url, -i, --extra-index-url을 통한 다른 패키지 인덱스 설정

  • --find-links, -f를 통한 종속성 아카이브 위치 지정

  • --editable, -e를 통한 에디터블 모드(editable mode) 종속성 설치

  • --constraint, -c를 통한 버전 제약 조건 파일 사용

  • --requirement, -r을 통한 다른 요구 사항 파일 포함

  • 특정 패키지: Python 2.7 및 3.7용 virtualenvpip

circle-exclamation

Pip 프로젝트를 스캔하기 위해, Snyk은 격리된 Linux 환경에서 네이티브 pip 도구를 사용하여 requirements.txt 파일을 분석합니다.

SCM 통합을 사용하여 스캔된 Pip 프로젝트에는 해당 프로젝트가 위치한 디렉토리와 동일한 이름이 부여됩니다.

Snyk은 **/*req*.txt 패턴을 따르는 모든 파일을 가져옵니다. 이는 requirements.txt 파일의 이름을 requirements-dev.txt 등으로 변경한 경우에 도움이 됩니다.

Snyk은 또한 **/requirements/*.txt 패턴을 사용하는 파일을 찾습니다. 이는 파일을 requirements 폴더(예: requirements/requirements.txt)에 둔 경우에 도움이 됩니다.

requirements.txt와 다른 매니페스트 파일 형식을 생성하는 패키지 관리자를 사용하는 경우, 매니페스트 파일을 requirements.txt 형식으로 변환하거나 내보낼 수 있습니다.

다음은 dephell을 사용하여 Conda environments.ymlrequirements.txt로 변환하는 예시입니다.

SCM 리포지토리 및 Poetry

Poetry v1 및 v2가 지원됩니다.

Poetry 프로젝트를 스캔하기 위해 Snyk은 pyproject.tomlpoetry.lock 파일을 검사합니다.

Snyk이 Poetry 프로젝트를 스캔할 때 개발 종속성(dev dependencies)arrow-up-right을 포함할지 여부를 선택할 수 있습니다.

Snyk은 암시적인 main 그룹인 tool.poetry.dependencies에 선언된 항목을 비개발 종속성으로 간주합니다. 그 외의 모든 항목은 개발 종속성으로 분류됩니다.

Poetry 개발 종속성은 기본적으로 스캔에 포함되지 않습니다. 이를 변경하려면 다음과 같이 설정을 수정하십시오:

  1. Snyk 계정에 로그인하고 관리하려는 관련 그룹 및 조직으로 이동합니다.

  2. Settings > Languages를 선택합니다.

  3. Python에 대한 Edit settings를 선택합니다.

  4. Poetry dev dependencies 설정 아래의 Scan Poetry dev dependencies 옵션을 활성화하거나 비활성화합니다.

Poetry 개발 종속성 설정
Poetry 개발 종속성 설정

SCM 리포지토리 및 Pipenv

circle-exclamation

Pipenv 프로젝트를 스캔하기 위해, Snyk은 격리된 Linux 환경에서 네이티브 pipenv 도구를 사용하여 PipfilePipfile.lock 파일을 분석합니다.

circle-info

비공개 리포지토리의 패키지 및 Linux 이외의 OS 요구 사항이 있는 패키지는 해결되지 않을 수 있으며 종속성 트리에서 누락될 수 있습니다.

Pipfile.lock이 있는 경우, 해결되지 않은 패키지는 락 파일의 버전을 사용하여 종속성 트리의 최상위 레벨에 추가됩니다.

Snyk이 Pipenv 프로젝트를 스캔할 때 [dev-packages]에 지정된 종속성을 포함할지 여부를 선택할 수 있습니다.

Pipenv 개발 종속성은 기본적으로 스캔에 포함되지 않습니다. 이를 변경하려면 다음과 같이 설정을 수정하십시오:

  1. Snyk 계정에 로그인하고 관리하려는 관련 그룹 및 조직으로 이동합니다.

  2. Settings > Languages를 선택합니다.

  3. Python에 대한 Edit settings를 선택합니다.

  4. Pipenv 설정 아래의 Scan Pipenv dev dependencies 옵션을 활성화하거나 비활성화합니다.

Pipenv 개발 종속성 설정
Pipenv 개발 종속성 설정

Last updated