Nodejs 프로젝트를 위한 종단간 DevSecOps 파이프라인 생성

안녕하세요, 이 Akshay Rao, 일부 보안 스캔을 포함하여 전체 데브옵스 파이프라인을 생성하려고 했습니다. 프로덕션에서 취약점이 발견되면 수정 비용이 매우 높기 때문에 애플리케이션이 프로덕션되기 전에 취약점이 발견되기 때문에 이러한 보안 스캔은 매우 중요합니다.

파이프라인을 이해하는 것부터 시작하겠습니다.
  • 개발자는 앱 코드를 GitHub, GitBucket 등과 같은 원격 저장소에 커밋합니다.
  • 코드를 빌드하고 단위 테스트를 실행하고 통과해야 합니다.
  • SAST(Static Application Security testingTesting), SCA(Software Composition Analysis) 및 DAST(Dynamic Application Security Testing)를 수행할 것이기 때문에 전체 코드에서 취약점을 스캔해야 합니다.
  • SAST는 애플리케이션의 보안 취약점을 찾는 방법론입니다. 이 파이프라인에서 SAST를 수행하기 위해 Sonar 클라우드를 사용했습니다
  • .
  • SCA는 보안, 라이센스 준수, 가져온 패키지 취약성 또는 더 이상 사용되지 않는 패키지 및 코드 품질을 평가하기 위해 수행됩니다. 파이프라인에서 Snyk 도구를 사용했습니다.
  • DAST는 SAST와 유사하지만 응용 프로그램이 프로덕션 환경에서 실행 중일 때 검사가 수행됩니다. 파이프라인에서 OWASP ZAP 도구를 사용했습니다.
  • 스캔이 완료되면 보고서와 문제가 생성됩니다. 발견된 취약점이 즉시 수정되거나 개발자에게 전달될 수 있는 경우.


  • Github에서 nodejs 프로젝트를 가져오고 workflow.yml을 작성합니다.
    이 yml 파일에서 내가 만든
  • 세 가지 작업(빌드, 보안 및 zap_scan)
  • 빌드 작업에서 애플리케이션을 빌드하고 Sonar 클라우드 스캔이라는 이름으로 SAST 스캔을 수행했습니다.
  • 보안 작업에서 Snyk 도구로 SCA 스캔을 실행했습니다.
  • Zap_scan에서 OWASP ZAP 도구로 DAST를 수행했습니다. Target 키에 애플리케이션의 URL을 입력할 수 있습니다.
    github 저장소 설정에서 토큰 양식 Synk 및 Sonar 클라우드(SYNK_TOKENS & SONAR_TOKEN)를 생성해야 했습니다.
    그런 다음 워크플로를 커밋하면 github의 작업 탭에서 스캔이 실행되기 시작합니다.

  • name: Build code, run unit test, run SAST, SCA, DAST security scan for NodeJs App
    on: push
    
    jobs:
      build:
        runs-on: ubuntu-latest
        name: Run unit tests and SAST scan on the source code 
        steps:
        - uses: actions/checkout@v3
        - uses: actions/setup-node@v3
          with:
            node-version: 16
            cache: npm
        - run: npm install
        - name: SonarCloud Scan
          uses: sonarsource/sonarcloud-github-action@master
          env:
            GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
            SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
          with:
            args: >
              -Dsonar.organization=<PUT YOUR ORGANIZATION NAME>
              -Dsonar.projectKey=< PUT YOUR PROJECT KEY NAME>
      security:
        runs-on: ubuntu-latest
        needs: build
        name: Run the SCA scan on the source code
        steps:
          - uses: actions/checkout@master
          - name: RunSnyk to check for vulnerabilities
            uses: snyk/actions/node@master
            continue-on-error: true
            env:
              SNYK_TOKEN: ${{ secrets.SNYK_TOKENS }}
      zap_scan:
        runs-on: ubuntu-latest
        needs: security
        name: Run DAST scan on the web application
        steps:
          - name: Checkout
            uses: actions/checkout@v2
            with:
              ref: master
          - name: ZAP Scan
            uses: zaproxy/[email protected]
            with:
              docker_name: 'owasp/zap2docker-stable'
              target: 'http://example.com/'
              rules_file_name: '.zap/rules.tsv'
              cmd_options: '-a'
    


    보고서는 스캔 이름을 클릭하거나 언급될 대시보드 URL을 통해 아티팩트 또는 작업으로 생성됩니다.
    SAST 보고서


    SCA 보고서


    DAST 보고서


    github 저장소-https://github.com/asecurityguru/devsecops-with-github-actions-end-to-end-nodejs-project
    이것이 문제에 대한 해결책을 찾는 데 도움이 되기를 바랍니다.
    고맙습니다

    좋은 웹페이지 즐겨찾기