가져오기 시작

snyk-api-import는 Snyk API를 사용하여 가져올 수 있는 동일한 프로젝트 소스들을 지원합니다: Git 리포지토리, Docker 이미지, 컨테이너, 구성 파일 등. Snyk 조직 설정 페이지의 Integrations 설정을 사용하여 통합을 구성할 수 있습니다. 자세한 내용은 Snyk Projects 문서 페이지의 Target 정의를 참조하십시오.

모든 로그는 SNYK_LOG_PATH 디렉토리에 생성됩니다.

가져오기를 시작하는 단계는 다음과 같습니다.

import-projects.json 파일 생성

이 파일에는 가져오기 대상(Target)들의 배열인 targets라는 필수 최상위 키가 있어야 합니다.

{
  "targets": [
    {..},
    {..}
  ]
}

각 **가져오기 대상(import target)**은 다음 키들을 가집니다.

{
  // 필수
  "orgId": "<public_snyk_org_id>",
  "integrationId": "<"public_snyk_integration_id>",
  "target": {..}, // 프로젝트를 찾을 수 있는 위치 식별자 (예: GitHub의 경우 브랜치, 리포지토리 이름 및 소유자)

   // 선택 사항
  "files": [ { "path": "full/path/to/file1"} , { "path": "full/path/to/file2" }],
  "exclusionGlobs": "fixtures, tests, __tests__, node_modules"
}
  • orgId - 조직 설정 페이지에서 찾을 수 있습니다.

  • integrationId - 조직 설정 페이지의 각 SCM 통합 메뉴에서 찾을 수 있습니다.

  • target, files, exclusionGlobs - 자세한 내용은 Snyk Import API 문서를 참조하십시오.

    • exclusionGlobs - 스캔에서 제외할 최대 10개의 폴더 이름을 쉼표로 구분한 목록입니다(각 폴더 이름은 100자를 초과할 수 없음). 지정하지 않으면 기본값은 "fixtures, tests, tests, node_modules"입니다. 빈 문자열을 제공하면 폴더가 제외되지 않습니다.

    • files - 객체 배열입니다. 각 경로는 대상의 루트로부터 파일까지의 전체 상대 경로여야 합니다. 해당 위치에서 발견된 파일만 가져오게 됩니다.

200개 이상의 매니페스트 파일이 있는 리포지토리의 경우, Snyk은 특정 파일을 대상으로 하여 가져오기를 여러 번으로 나눌 것을 권장합니다. 하나의 리포지토리에서 수백 개의 파일을 한 번에 가져오면 오류나 실패가 발생할 수 있습니다.

일부 파일이나 폴더만 가져오도록 나누면 재시도(Re-try) 기능을 활용할 수 있고, 사용 중인 소스 제어 관리 시스템에 가해지는 부하를 줄일 수 있습니다. 이를 위해 가져오기 JSON의 files 속성을 채우십시오.

무시해야 할 테스트나 픽스처(fixtures)가 있는 경우 exclusionGlobs 속성을 설정하십시오.

스캔에서 제외할 최대 10개의 폴더 이름을 쉼표로 구분한 목록입니다. 지정하지 않으면 기본값은 "fixtures, tests, tests, node_modules"입니다. 빈 문자열을 제공하면 폴더가 제외되지 않습니다.

예시: GitLab

예시: Bitbucket Server

예시: GitHub.com, GitHub Enterprise, dev.azure.com, Hosted Azure Repos

예시: Google Container Registry

예시: Azure Container Registry, Elastic Container Registry, Artifactory Container Registry

환경 변수 설정

  • SNYK_IMPORT_PATH - 가져오기 파일의 경로 또는 --file 매개변수 사용

  • SNYK_LOG_PATH - 모든 로그가 저장될 폴더의 경로. Snyk은 실행 중인 각 가져오기 작업에 대해 전용 로그 폴더를 생성할 것을 권장합니다. 참고: 모든 로그는 추가(Append) 모드로 기록됩니다.

  • CONCURRENT_IMPORTS (선택 사항) - 한 번에 가져올 리포지토리 수로, 기본값은 15입니다. 이는 권장되는 최대값입니다. 리포지토리 하나에 많은 프로젝트가 포함될 수 있으며, 이는 사용자의 SCM 인스턴스에 한 번에 많은 파일 요청을 발생시킬 수 있습니다. 일부 시스템에는 속도 제한이 있을 수 있으므로, 이 스크립트는 속도 제한에 걸릴 위험을 줄이는 데 도움을 줍니다.

  • SNYK_API (선택 사항) - 기본값은 https://api.snyk.io/v1입니다.

다운로드 및 실행

릴리스 페이지arrow-up-right에서 바이너리를 다운로드하고 다음 명령으로 실행하십시오: DEBUG=snyk* snyk-api-import-macos import --file=path/to/imported-targets.json

이전에 가져온 모든 대상 건너뛰기

이 유틸리티를 사용하면 이전에 가져온 대상(리포지토리)을 건너뛰고 나머지 대상만 가져올 수 있습니다.

이 유틸리티는 지정된 Snyk 그룹에 이미 있는 프로젝트를 분석하여 imported-targets.log 파일을 생성하는 데 도움을 줍니다. 로그 경로에 이 파일이 있으면 가져오기 중에 건너뛰어야 할 대상을 찾는 데 사용됩니다.

예시

  • 초기 온보딩 중에 모든 GitHub 리포지토리를 Snyk의 각 조직으로 가져왔습니다.

  • 이후 새로운 GitHub 리포지토리들이 추가되었고 이제 Snyk에 추가해야 합니다.

  • 모든 것을 다시 가져오는 것을 피하기 위해, 이 유틸리티를 사용하고 import를 다시 실행하여 "새로운" GitHub 리포지토리만 가져올 수 있습니다. 이는 훨씬 빠르며 파일을 가져오고 모든 것을 다시 가져오기 위해 Snyk과 GitHub에 불필요한 호출을 하는 것을 방지합니다.

동일한 대상 가져오기

  • 동일한 대상을 다른 조직으로 가져올 수 있습니다.

  • 다른 소스에서 동일한 대상을 가져올 수 있습니다. 예를 들어 GitHub에 있는 동일한 리포지토리를 GitHub Enterprise를 통해 동일한 조직으로 가져올 수 있습니다.

실행 명령

  • 그룹 내 모든 조직으로 이전에 가져온 모든 대상 건너뛰기: snyk-api-import-macos list:imported --integrationType=<integration-type> --groupId=<snyk_group_id>

  • 특정 조직으로 이전에 가져온 모든 대상 건너뛰기: snyk-api-import-macos list:imported --integrationType=<integration-type> --orgId=<snyk_org_id>

  • 단일 통합 및 프로젝트 소스 가져오기: snyk-api-import-macos list:imported --integrationType=<integration-type> --groupId=<snyk_group_id>

  • 여러 통합 및 프로젝트 소스 가져오기: snyk-api-import-macos list:imported --integrationType=<integration-type> --integrationType=<integration-type> --orgId=<snyk_org_id>

지원되는 통합 유형

  • GitHub.com github

  • GitHub Enterprise github-enterprise

  • GitLab gitlab

  • Bitbucket Cloud bitbucket-cloud

  • Google Cloud Registry gcr

  • DockerHub 레지스트리 docker-hub

  • Azure repos azure-repos

Last updated