Go
적용 가능성 및 통합
Go용 Snyk은 Snyk 오픈소스(Open Source) 및 Snyk Code를 지원합니다.
사용 가능한 통합:
SCM 가져오기
CLI 및 IDE: 앱 테스트 또는 모니터링
사용 가능한 기능:
pkg:golang을 사용하여 앱의 SBOM 테스트pkg:golang을 사용하여 앱의 패키지 테스트
기술 사양
지원되는 프레임워크 및 라이브러리
Azure/azure-sdk-for-go/sdk/ai/azopenai
gage-technologies/mistral-go
Gin
google/generative-ai-go/genai
GORM library
grpc-go
labstack/echo
lib/pq
sashabaranov/go-openai
spf13/pflag
sqlx
지원되는 패키지 관리자
Go의 경우, Snyk은 패키지 관리자로 Go Modules 및 dep을 지원합니다.
Snyk Code용 Go
Snyk Code와 함께 사용하는 Go의 경우, Snyk은 라이브러리로 Go 표준 라이브러리(Go Standard Library)를 포괄적으로 지원하며, 파일 형식으로 .go를 지원합니다.
사용 가능한 기능:
보고(Reports)
사용자 정의 규칙(Custom rules)
파일 간 분석(Interfile analysis)
Snyk 오픈소스용 Go
기능
사용 가능한 기능:
PR 검사(PR checks)
라이선스 스캐닝(License scanning)
보고(Reports)
Snyk Fix PR 기능이 활성화된 경우, 다음 조건이 충족될 때 PR 검사가 실패하면 알림을 받게 됩니다:
PR 검사 기능이 활성화되어 있고, 발견된 문제에 수정 사항이 있는 경우에만 실패하도록 구성된 경우.
"Fixed in" 사용 가능이 **예(Yes)**로 설정된 경우.
Snyk은 Go 모든 릴리스(All releases) 페이지에 나열된 최신 안정 버전을 포함하여 모든 Go 버전을 지원합니다.
공식 릴리스만 추적됩니다. 기본 브랜치로의 커밋을 포함하여 공식 릴리스나 태그에 포함되지 않은 커밋은 식별되지 않습니다. 패키지 관리자가 있는 프로젝트의 경우, 이는 패키지 관리자에 대한 릴리스를 의미합니다. Go 및 비관리형 스캔(C/C++)의 경우, 이는 GitHub 리포지토리의 공식 릴리스 또는 태그가 필요함을 의미합니다.
2023년 1월 1일부터 Snyk은 govendor 프로젝트를 지원하지 않습니다. 일반적인 보안 모범 사례로서 Snyk은 지속적으로 유지 관리되고 최신 상태인 도구를 사용할 것을 권장합니다.
Snyk은 더 이상 govendor 프로젝트 스캐닝을 지원하지 않으므로 경고가 발행되고 결과가 제공되지 않습니다.
Go Modules 및 dep 지원
기능 가용성 플랜에 따라 일부 기능을 사용하지 못할 수 있습니다. 자세한 내용은 플랜 및 가격 책정(Plans and pricing)을 참조하십시오.
Snyk은 Go Modules 및 dep으로 종속성이 관리되는 Go 프로젝트의 테스트 및 모니터링을 지원합니다.
Go Modules 및 CLI
Snyk은 로컬 소스 코드에 대한 전체 액세스 권한이 있으므로 CLI에서 Go Modules 프로젝트를 모듈 수준이 아닌 패키지 수준에서 스캔합니다.
Go 표준 라이브러리의 패키지는 지원되지 않으며 종속성 트리에 포함되지 않습니다.
메인 Go 트리의 외부에 있지만 Go 프로젝트의 일부인 golang.org/x/ 하위 패키지는 지원됩니다.
종속성 트리를 빌드하기 위해 Snyk은 go list -json -deps ./... 명령과 Imports에서 발견된 종속성을 사용합니다.
TestImports 및 XTestImports는 지원되지 않습니다.
CLI를 사용하여 Go Modules 프로젝트를 테스트할 때 Snyk은 종속성 설치를 요구하지 않지만, 프로젝트 루트에 go.mod 파일이 있어야 합니다. go list는 이 파일과 프로젝트 소스 코드를 사용하여 완전한 종속성 트리를 빌드합니다.
Go 버전에 따라 go list -json -deps 명령에 대해 서로 다른 결과가 생성될 수 있습니다. 이는 종속성 트리와 Snyk CLI가 찾는 취약점에 영향을 줄 수 있습니다.
Dep 및 CLI
종속성 트리를 빌드하기 위해 Snyk은 Gopkg.lock 파일을 분석합니다.
CLI를 사용하여 dep 프로젝트를 테스트할 때 Snyk은 종속성 설치를 요구합니다. 이를 위해 dep ensure를 실행하십시오.
Dep 및 Git
종속성 트리를 빌드하기 위해 Snyk은 Git 리포지토리의 Gopkg.lock 파일을 분석합니다.
Go Modules 및 Git
기본적으로 Git을 사용하여 가져온 Go Modules 프로젝트의 종속성은 CLI에서 테스트된 프로젝트와 달리 패키지 수준이 아닌 모듈 수준에서 확인됩니다. 따라서 Git을 사용하여 가져올 때 CLI보다 더 많은 종속성과 문제가 보고될 수 있으며, 여기에는 잠재적인 오탐(false positive)이 포함될 수 있습니다.
가능한 최상의 해결책을 얻으려면 전체 소스 코드 분석(full source code analysis)을 활성화하십시오.
전체 소스 코드 분석이 활성화되면 Snyk은 CLI 테스트와 동일한 방식으로 go list -json -deps ./... 명령을 사용하여 종속성 트리를 빌드합니다. 그렇지 않으면 go mod graph를 사용합니다.
전체 소스 코드 분석 활성화
Git에서 가져온 Go Modules 프로젝트에 대해 가장 정확한 종속성 트리를 빌드하려면 Snyk이 리포지토리의 모든 파일에 액세스해야 합니다.
이를 통해 Snyk은 .go 소스 파일의 import 문을 확인하고 애플리케이션에서 사용되는 특정 패키지를 결정할 수 있습니다. 이 액세스 권한이 없으면 Snyk은 go.mod 파일에 나열된 모듈의 모든 패키지를 포함하게 됩니다.
전체 소스 코드 분석을 활성화하려면 다음과 같이 설정을 조정하십시오:
계정에 로그인하고 조직(Organization)을 선택합니다.
Settings > Snyk Open Source로 이동합니다.
Go에 대한 Edit settings를 선택합니다.
Enable full source code analysis를 켜거나 끕니다.

다양한 Snyk 기능에 필요한 리포지토리 액세스 수준에 대한 자세한 내용은 Snyk의 데이터 처리 방식을 참조하십시오.
비공개 모듈(Private modules)
비공개 Git 리포지토리의 모듈에 의존하는 Go Modules 프로젝트는 해당 리포지토리가 메인 프로젝트 리포지토리와 동일한 Git 조직에 있는 경우 지원됩니다.
다른 Git 조직의 리포지토리에 비공개 모듈이 있는 경우 프로젝트 가져오기가 제대로 작동하지 않을 수 있습니다. 다른 조직의 Git Submodules를 사용하는 코드의 경우에도 마찬가지입니다.
비공개 모듈 내에 다른 Git 조직의 다른 비공개 모듈이 있는 경우 프로젝트 가져오기가 작동하지 않습니다. 다른 모듈 내의 모듈을 포함하여 모든 비공개 모듈은 메인 프로젝트 리포지토리와 동일한 Git 조직의 일부여야 합니다.
서로 다른 SCM에서의 비공개 모듈 지원은 전체 소스 코드 분석의 활성화 여부에 따라 다릅니다.
Azure Repos
Bitbucket Cloud
Bitbucket Server
GitHub
GitLab
GitHub Enterprise
Bitbucket Cloud
GitHub
GitHub Enterprise
Go를 위한 Snyk Broker 지원
Go에서 Snyk Broker를 사용하려면 전체 소스 코드 분석을 비활성화해야 합니다.
새로운 Snyk Broker 클라이언트를 사용하여 가져온 Go Modules 프로젝트는 예상대로 작동해야 합니다.
2020년 12월 30일 이전에 생성된 클라이언트에 지원을 추가하려면, 이 풀 리퀘스트(pull request)의 변경 사항에 따라 accept.json 파일에 go.mod 및 go.sum을 추가하십시오.
Broker를 통해 통합된 비공개 Go 모듈을 사용하는 경우, 각 비공개 모듈에 go.mod 파일이 정의되어 있어야 합니다.
Last updated