Close

Snyk를 Atlassian Open DevOps에 통합

Warren Marusiak 얼굴 사진
Warren Marusiak

선임 기술 에반젤리스트

Jira Software 및 다양한 연결된 도구를 사용하여 애플리케이션을 개발, 배포 및 관리하는 방법을 보여주기 위해 저희 팀에서는 머신러닝을 사용하여 이미지에 레이블을 적용하는 간단한 AWS 기반 데모 애플리케이션인 ImageLabeller를 만들었습니다.

이 페이지에서는 Snyk를 Bitbucket과 통합하는 방법을 다룹니다. 시작하기 전에 컨텍스트 파악을 위해 ImageLabeller 소개 페이지를 읽어보는 것이 좋습니다.

Bitbucket 및 Snyk 연결

Bitbucket에서 Snyk로 작업하는 데는 몇 가지 방법이 있습니다. 첫 번째는 리포지토리 화면의 보안 탭을 통해 Bitbucket에 네이티브 Snyk 통합을 사용으로 설정하는 것입니다. 두 번째는 bitbucket-pipelines.yml 파일에 Snyk 단계를 추가하는 것입니다. 둘 다 하는 데 따른 단점은 없습니다. Bitbucket의 Synk 통합을 통해 Bitbucket의 리포지토리를 보는 사용자는 누구나 취약성 데이터에 빠르게 액세스할 수 있습니다. 그런 다음 Snyk 웹사이트를 클릭하여 발견된 각 취약성에 대한 추가 정보를 볼 수 있습니다. bitbucket-pipelines.yml 파일의 Snyk 단계를 사용하면 파이프라인의 모든 커밋을 자동으로 스캔할 수 있습니다.

Bitbucket에 Snyk 통합 추가

Bitbucket 리포지토리에 Snyk를 추가하려면 보안 탭을 클릭하고 Snyk 통합을 찾은 다음 지금 사용해 보기를 클릭합니다.

Bitbucket 이미지에 Snyk 통합 추가

액세스 권한을 부여하고 Bitbucket을 Snyk와 연결을 클릭합니다.

Bitbucket를 Snyk에 연결

통합을 설정하면 탭을 닫습니다.

통합 가이드

왼쪽 탐색에 나타나는 새 Snyk 옵션을 클릭합니다. 그런 다음 go.mod 파일을 클릭하여 더 자세한 정보를 확인합니다. 이 예에서는 Golang 리포지토리가 go 모듈을 사용하여 종속성을 관리합니다. 기타 리포지토리 종류에는 다른 종속성 파일이 있을 것입니다.

Snyk 화면

각 취약성을 해결하는 방법을 더 알아보려면 Snyk 방문을 클릭하여 Snyk 웹사이트로 이동합니다.

Snyk 방문

Snyk 앱의 이 보기는 Bitbucket에서 표시되는 세부 정보 화면과 비슷합니다. 이 화면에는 취약성의 목록과 각 취약성에 대한 추가 정보가 표시됩니다.

Snyk 웹사이트 스크린샷

아래는 Snyk의 취약성 보고서 예시입니다. 취약성이 발생한 위치의 계층 구조가 자세한 경로 섹션에 나와 있습니다. 아래 예에서 SubmitImage가 AWS Golang SDK로부터 이 취약성을 물려받는 것을 볼 수 있습니다. Snyk은 왼쪽에 모든 이슈의 상태를 요약해 주며 이 경우에는 해결할 수 있는 이슈가 없습니다. 수정 가능성 아래에 가능한 수정 없음 이슈가 다섯 개 있습니다. 현재 이슈에 대해 가능한 완화 조치가 없다는 뜻입니다. 개발자는 통합을 모니터링하고 수정 사항이 나오면 바로 적용할 수 있습니다.

취약성 세부 정보 스크린샷

bitbucket-pipelines.yml에 Snyk 단계 추가

Bitbucket 사용자 인터페이스를 통해 Snyk에 액세스할 수 있을 뿐만 아니라 Bitbucket Pipelines에서도 bitbucket-pipelines.yml 파일에 단계를 추가하여 Snyk 기능에 액세스할 수 있습니다. 즉, 커밋할 때마다 취약성 검사가 자동으로 이루어지고 보안 취약성이 있으면 알림이 제공됩니다.

아래는 파이프라인의 일부로 Snyk 테스트를 실행하기 위한 두 개의 bitbucket-pipelines.yml 스니펫입니다.

Golang용 Bitbucket Pipelines에 Snyk 추가

이 예시는 종속성 관리를 위한 Go 모듈을 사용하여 Golang 프로젝트의 snyk 테스트를 실행하는 방법을 보여줍니다.

definitions:
  steps:
    -step: &runsnyktest
        name: run snyk test
        image: snyk/snyk:golang
        script:
          - snyk auth $SNYK_TOKEN
          - cd submitImage
          - go mod graph
          - snyk test
pipelines:
  default:
    - step: *runsnyktest

Python용 Bitbucket Pipelines에 Snyk 추가

이 예시는 종속성 관리를 위한 Pip을 사용하여 Python 프로젝트의 snyk test를 실행하는 방법을 보여줍니다.

definitions:
  steps:
    -step: &runsnyktest
        name: run snyk test
        image: snyk/snyk:python
        script:
          - snyk auth $SNYK_TOKEN
          - cd src
          - snyk test --skip-unresolved
          - cd ../tst
          - snyk test --skip-unresolved
pipelines:
  default:
    - step: *runsnyktest

runsnyktest 단계를 Bitbucket Pipelines에서 실행하면 다음과 같습니다.

Bitbucket Pipelines의 runsnyktest 단계

결론...

CI/CD 파이프라인에 보안을 통합하는 관행은 DevSecOps의 핵심 원칙입니다. DevSecOps는 계획, 코딩, 빌드, 테스트, 릴리스 및 배포와 같은 일반적인 DevOps 파이프라인의 각 단계에 보안이 적용되어야 한다고 지지합니다. 워크플로에 보안을 통합하면 보안은 나중에 고민하는 요소가 아니라 개발 프로세스의 적극적이고 통합된 부분이 됩니다. 즉, 앱이 더 안전해지고 인시던트가 적어지며 고객 만족도가 높아집니다.

Warren Marusiak
Warren Marusiak

Warren is a Canadian developer from Vancouver, BC with over 10 years of experience. He came to Atlassian from AWS in January of 2021.


이 문서 공유

여러분께 도움을 드릴 자료를 추천합니다.

이러한 리소스에 책갈피를 지정하여 DevOps 팀의 유형에 대해 알아보거나 Atlassian에서 DevOps에 대한 지속적인 업데이트를 확인하세요.

DevOps 일러스트레이션

DevOps 커뮤니티

DevOps 일러스트레이션

DevOps 학습 경로

맵 일러스트레이션

무료로 사용해보기

DevOps 뉴스레터 신청

Thank you for signing up