도구: jira-tickets-for-new-vulns

jira-tickets-for-new-vulns는 Snyk에서 모니터링 중인 프로젝트를 동기화하고, 새로운 문제 및 기존에 티켓이 생성되지 않은 문제에 대해 자동으로 Jira 티켓을 생성하는 기능을 제공합니다.

이 도구는 주기적인 실행(Cron)이나 웹훅(Webhook) 트리거를 통해 정기적으로 실행되도록 설계되었습니다.

설치

릴리스 페이지arrow-up-right에서 바이너리를 다운로드하여 사용하십시오.

사용법 - 빠른 시작

./snyk-jira-sync-<yourplatform> 
    --orgID=<SNYK_ORG_ID>                    // 설정(Settings)에서 찾을 수 있습니다.
    --token=<API Token>                      // Snyk API 토큰. 서비스 계정도 가능합니다.
    --jiraProjectKey=<Key>                  // 티켓이 생성될 Jira 프로젝트 키

확장 옵션

./snyk-jira-sync-<yourplatform> 
    --orgID=<SNYK_ORG_ID>                                                // 설정에서 찾을 수 있습니다.
    --projectID=<SNYK_PROJECT_ID>                                        // 선택 사항. 제공되지 않으면 조직 내 모든 프로젝트를 동기화합니다.
                                                                        // 프로젝트 ID는 프로젝트->설정에서 찾을 수 있습니다.
    --api=<API endpoint>                                                 // 선택 사항. 프라이빗 인스턴스의 경우 https://<instance>/api로 설정합니다.
    --token=<API Token>                                                  // Snyk API 토큰. 서비스 계정도 가능합니다.
    --jiraProjectID=<12345>                                              // 티켓이 생성될 Jira 프로젝트 ID
    --jiraProjectKey=<KEY>                                               // 티켓이 생성될 Jira 프로젝트 키
    --jiraTicketType=<Task|Bug|....>                                     // 선택 사항. 생성할 티켓 유형. 기본값은 Bug입니다. 아래 '참고' 섹션을 참조하십시오.
    --severity=<critical|high|medium|low>                                // 선택 사항. 티켓을 생성할 심각도 임계값. 기본값은 low입니다.
    --maturityFilter=[mature,proof-of-concept,no-known-exploit,no-data]  // 선택 사항. 특정 성숙도 수준만 포함합니다. 쉼표로 구분합니다.
    --type=<all|vuln|license>                                            // 선택 사항. 티켓을 생성할 문제 유형. 기본값은 all입니다.
    --assigneeId=<123abc456def789>                                       // 선택 사항. 티켓을 할당할 사용자의 Jira ID. 주의: assigneeName과 assigneeId를 동시에 사용하지 마십시오.
    --assigneeName=<AccountName>                                         // 선택 사항. 티켓을 할당할 사용자의 Jira 이름. 주의: assigneeName과 assigneeId를 동시에 사용하지 마십시오.
    --priorityIsSeverity                                                 // 선택 사항. 티켓 우선순위를 심각도 기반으로 설정합니다 (기본값: Low|Medium|High|Critical=>Low|Medium|High|Highest)
    --labels=<IssueLabel1>,IssueLabel2                                   // 선택 사항. Jira 티켓 라벨을 설정합니다.
    --priorityScoreThreshold=[0-1000]                                    // 선택 사항. 최소 우선순위 점수 임계값입니다.
    --dryRun=<true|false>                                                // 선택 사항. 결과는 도구가 실행된 위치의 json 파일에서 확인할 수 있습니다.
    --debug=<true|false>                                                 // 선택 사항. 디버그 모드를 활성화합니다.
    --ifUpgradeAvailableOnly=<true|false>                                // 선택 사항. 업그레이드 가능한 문제에 대해서만 티켓을 생성합니다.
    --configFile                                                         // 루트가 아닌 경우 jira.yaml 경로입니다.

제한 사항

이 도구는 코드형 인프라(Infrastructure as Code) 프로젝트를 지원하지 않습니다. 코드 및 오픈 소스 프로젝트에 대해서만 문제를 생성하며 다른 모든 프로젝트 유형은 무시합니다.

우선순위와 심각도 연동

이슈 심각도에 따라 Jira 티켓 우선순위를 설정하는 옵션이 있습니다. 기본 매핑은 다음과 같습니다.

이슈 심각도
Jira 우선순위

critical

Highest

high

High

medium

Medium

low

Low

기본값을 재정의하려면 SNYK_JIRA_PRIORITY_FOR_XXX_VULN 환경 변수를 사용하십시오.

예시: Critical 심각도에 대해 Jira에서 Hot Fix 우선순위를 할당하려는 경우:

export SNYK_JIRA_PRIORITY_FOR_CRITICAL_VULN='Hot Fix'

소스에서 설치

리포지토리를 클론하고 빌드하십시오.

go run main.go jira.go jira_utils.go vulns.go snyk.go snyk_utils.go

문제가 발생하면 보고해 주시기 바랍니다.

종속성

JSON 파싱을 위해 https://github.com/michael-go/go-jsn/jsn을 사용하며, github.com/tidwall/sjson, github.com/kentaro-m/blackfriday-confluence, gopkg.in/russross/blackfriday.v2 등을 사용합니다.

로그 파일 (LogFile)

도구가 실행된 위치에서 생성된 모든 티켓을 나열하는 logFile을 찾을 수 있습니다.

Jira.yaml

다음은 설정 파일 구조의 예시입니다. Jira 프로젝트에 사용자 정의 필수 필드가 구성되어 있는 경우, 이러한 필드를 설정 파일에 추가해야 합니다. 설정 파일의 customMandatoryFields 키 아래에 Jira에서 요구하는 키와 값을 모두 입력했는지 확인하십시오.

  • 토큰은 설정 파일에 포함되지 않는 것이 권장됩니다.

  • 명령줄 인수는 설정 파일보다 우선합니다. 예시: 위 설정 파일을 사용하면서 ./snyk-jira-sync-macOs --Org=1234 --configFile=./path/to/folder --token=123를 실행하면 도구에서 사용되는 조직 ID는 1234가 됩니다.

  • 기본값에 대해서는 '확장 옵션'을 참조하십시오.

  • Jira에 구성된 것과 동일한 이슈 유형을 사용해야 합니다. 기본값은 Bug입니다. 사용 중인(또는 기본) 유형이 Jira 구성에 존재하는지 확인하십시오.

Last updated