CodeBuild와 AWS CodePipeline 통합

이 가이드에서는 AWS CodeBuildarrow-up-right를 사용하여 AWS CodePipeline에 대한 Snyk 오픈소스arrow-up-right 보안 스캔 워크플로를 설정하는 단계를 설명합니다. Snyk CLI와 CodeBuild의 기본 기능을 사용하면 CI/CD 파이프라인에서 Snyk SCA(소프트웨어 구성 분석) 스캔을 실행하기 위한 구성 가능한 솔루션을 빌드할 수 있습니다.

전제 조건

  • CodeBuild 및 CodePipeline 서비스가 활성화된 활성 AWS 계정

  • Snyk CLI가 구성된 Snyk 계정

  • CodeBuild 프로젝트 구성 및 환경 변수에 대한 지식

  • 기존 CodePipeline 단계 및 Snyk과의 원하는 상호 작용에 대한 이해

설정 단계

CodeBuild 설정

  • AWS 계정에서 새 CodeBuild 프로젝트를 만듭니다.

  • 프로그래밍 언어 및 종속성에 따라 프로젝트에 호환되는 기본 이미지arrow-up-right를 선택합니다.

  • 계정으로 Snyk CLI를 인증하는 방법을 검토하고 Snyk CLI 토큰과 같은 민감한 정보를 저장하기 위해 환경 변수를 사용하는 것을 고려하십시오.

circle-info

AWS CodeBuild의 기본 서비스 역할에는 CodeBuild 프로젝트가 AWS Secrets Manager에서 이름이 /CodeBuild/로 시작하는 모든 비밀을 가져올 수 있도록 허용하는 IAM 권한이 포함되어 있습니다. 자세한 내용은 이 가이드 끝의 문제 해결 섹션을 참조하십시오.

  • 빌드 명령 구성:

    • 프로그래밍 언어 및 종속성에 적합한 명령을 사용하여 Snyk CLI를 설치합니다.

    • CLI를 사용하여 Snyk 스캔을 실행하는 빌드 명령을 정의합니다.

    • 지속적인 모니터링을 위해 프로젝트의 스냅샷을 Snyk으로 보내는 빌드 명령을 정의합니다(선택 사항).

  • 자세한 내용은 다음 예제 buildspec.yaml을 참조하십시오.

CodePipeline 설정

일부 오픈소스arrow-up-right 프로젝트의 경우 Snyk CLI로 테스트하기 전에 프로젝트를 빌드해야 합니다. Snyk 설명서를 검토하여 오픈소스 스캔을 실행하기 전에 프로젝트를 빌드해야 하는지 확인하십시오. 그런 다음 아래 해당 섹션의 지침을 따르십시오.

Snyk에 빌드된 프로젝트가 필요한 경우

  • 기존 CodePipeline을 편집하거나 새 파이프라인을 만듭니다.

  • 프로젝트를 빌드하기 위한 새 단계를 만들거나 기존 빌드 단계를 편집합니다.

  • 프로젝트가 빌드된 후 즉시 Snyk 스캔이 발생하도록 예제 buildspec.yaml의 명령을 빌드 단계에 추가합니다.

circle-info

Snyk 오픈소스 스캔은 Snyk이 전체 빌드 작업 공간에 액세스할 수 있도록 빌드 프로세스와 동일한 CodeBuild 작업에 있어야 합니다.

Snyk에 빌드된 프로젝트가 필요하지 않은 경우

  • 기존 CodePipeline 파이프라인을 편집하거나 새 파이프라인을 만듭니다.

  • 소스 코드 획득 단계 후에 새 빌드 단계를 추가합니다.

  • 이 단계에 대해 새로 생성된 CodeBuild 프로젝트를 선택합니다.

  • Snyk이 소스 코드를 직접 스캔할 수 있도록 입력 아티팩트 아래에서 SourceArtifact를 선택합니다.

결과 처리

CodeBuild에서 Snyk CLI를 사용하면 기능과 옵션에 대한 전체 액세스 권한을 얻을 수 있습니다. 기본 결과 처리를 시작하려면 다음 팁을 따르십시오.

  • snyk test 명령은 취약점이 발견되면 0이 아닌 종료 코드를 생성합니다. 이 동작을 우회하려면 명령 끝에 || true를 추가하는 것을 고려하십시오.

  • snyk-to-htmlarrow-up-right 도구를 사용하면 snyk test --json | snyk-to-html -o snyk-results.html과 유사한 명령을 실행하여 스캔 결과의 HTML 보고서를 생성할 수 있습니다. 자세한 내용은 snyk-to-html 설명서를 참조하십시오.

  • 일반적인 사용 패턴에 대해 다음 CLI 옵션을 고려하십시오.

테스트 및 검증

  • CodePipeline에서 수동 빌드를 트리거하여 새 CodeBuild 통합을 테스트합니다.

  • Snyk 스캔이 성공적으로 실행되고 예상대로 결과를 출력하는지 확인합니다.

  • 후속 파이프라인 단계에서 스캔 출력을 적절하게 처리하는지 확인합니다.

배포

  • 테스트가 완료되면 업데이트된 CodePipeline을 배포하는 것을 고려하십시오.

  • 성공적인 Snyk 스캔 실행을 위해 파이프라인을 모니터링하고 통합 문제를 해결합니다.

다음 단계

CI/CD 파이프라인에 추가 보안 스캔을 통합하려면 Snyk CLI 설명서를 참조하십시오.

결론

이러한 단계와 고려 사항을 따르면 Snyk 보안 스캔을 AWS CodePipeline 파이프라인에 성공적으로 통합할 수 있습니다.

문제 해결

질문: Snyk 토큰을 AWS Secrets Manager에 저장하고 AWS CodeBuild에서 사용하는 방법은 무엇입니까?

AWS Secrets Manager 환경 변수를 사용하는 경우 토큰을 AWS Secrets Manager에 일반 텍스트로 저장하고 AWS CodeBuild 서비스 역할에 IAM의 secretsmanager:GetSecretValue 권한이 있는지 확인하십시오. AWS CodeBuild의 환경 변수 value를 AWS Secrets Manager의 Secret name으로 설정하십시오.

Last updated