탐지
소프트웨어 개발 라이프사이클 전반에서 프로젝트 리포지터리와 애플리케이션 동작의 취약점을 감지합니다. 개발 중 취약점 위험을 관리하는 데 도움이 됩니다: 개발 외부에서 취약점을 관리하는 데 도움이 됩니다: 보안 스캔에서 최대한 활용하려면 다음을 이해하는 것이 중요합니다:
소프트웨어 개발 라이프사이클 전반에서 프로젝트 리포지터리와 애플리케이션 동작의 취약점을 감지합니다.
개발 중 취약점 위험을 관리하는 데 도움이 됩니다:
- 브랜치에 코드 변경 사항을 푸시하면 보안 스캐너가 실행됩니다.
- 브랜치에서 감지된 취약점의 세부 정보를 볼 수 있습니다. 개발자는 이 시점에서 취약점을 수정하여 프로덕션에 도달하기 전에 수정할 수 있습니다.
- 선택적으로 취약점이 포함된 머지 리퀘스트에 추가 승인을 적용할 수 있습니다. 자세한 내용은 머지 리퀘스트 승인 정책을 참조하세요.
개발 외부에서 취약점을 관리하는 데 도움이 됩니다:
- 보안 스캔을 예약하거나 수동으로 실행할 수 있습니다.
- 기본 브랜치에서 감지된 취약점은 취약점 보고서에 표시됩니다. 이 보고서를 사용하여 취약점을 분류, 분석, 해결합니다.
보안 스캔#
보안 스캔에서 최대한 활용하려면 다음을 이해하는 것이 중요합니다:
- 보안 스캔을 트리거하는 방법.
- 애플리케이션 또는 리포지터리의 어떤 측면을 스캔하는지.
- 어떤 스캐너가 실행되는지를 결정하는 것.
- 보안 스캔이 발생하는 방식.
트리거#
CI/CD 파이프라인의 보안 스캔은 기본적으로 프로젝트 리포지터리에 변경 사항이 푸시될 때 트리거됩니다.
다음을 통해 보안 스캔을 실행할 수도 있습니다:
- CI/CD 파이프라인을 수동으로 실행.
- 스캔 실행 정책을 사용하여 보안 스캔을 예약.
- DAST에 한해 온디맨드 DAST 스캔을 수동으로 실행하거나 일정에 따라 실행.
- SAST에 한해 GitLab for VS Code 확장을 사용하여 스캔 실행.
감지 범위#
프로젝트 리포지터리를 스캔하고 취약점에 대해 애플리케이션 동작을 테스트합니다:
- 리포지터리 스캔은 프로젝트 리포지터리의 취약점을 감지할 수 있습니다. 범위에는 애플리케이션의 소스 코드, 의존하는 라이브러리 및 컨테이너 이미지가 포함됩니다.
- 애플리케이션 및 API의 행동 테스트는 런타임에만 발생하는 취약점을 감지할 수 있습니다.
리포지터리 스캔#
프로젝트 리포지터리에는 소스 코드, 의존성 선언 및 인프라 정의가 포함될 수 있습니다. 리포지터리 스캔은 각각의 취약점을 감지할 수 있습니다.
리포지터리 스캔 도구에는 다음이 포함됩니다:
- SAST(정적 애플리케이션 보안 테스팅): 취약점에 대한 소스 코드를 분석합니다.
- IaC(코드형 인프라) 스캔: 애플리케이션의 인프라 정의에서 취약점을 감지합니다.
- 시크릿 감지: 리포지터리에 커밋되는 시크릿을 감지하고 차단합니다.
- 의존성 스캔: 애플리케이션의 의존성 및 컨테이너 이미지의 취약점을 감지합니다.
행동 테스팅#
행동 테스팅은 알려진 취약점 및 예상치 못한 동작을 테스트하기 위한 배포 가능한 애플리케이션이 필요합니다.
행동 테스팅 도구에는 다음이 포함됩니다:
- DAST(동적 애플리케이션 보안 테스팅): 알려진 공격 벡터에 대해 애플리케이션을 테스트합니다.
- API 보안 테스팅: 알려진 공격 및 입력에 대한 취약점에 대해 애플리케이션의 API를 테스트합니다.
- 커버리지 가이드 퍼즈 테스팅: 예상치 못한 동작에 대해 애플리케이션을 테스트합니다.
스캐너 선택#
보안 스캐너는 다음 방법 중 하나로 프로젝트에 대해 활성화됩니다:
- 직접 또는 AutoDevOps를 사용하여
.gitlab-ci.yml파일에 스캐너의 CI/CD 템플릿 추가. - 스캔 실행 정책, 파이프라인 실행 정책 또는 컴플라이언스 프레임워크를 사용하여 스캐너 적용. 이 적용은 프로젝트에 직접 적용되거나 프로젝트의 상위 그룹에서 상속될 수 있습니다.
자세한 내용은 보안 구성을 참조하세요.
보안 스캔 프로세스#
보안 스캔 프로세스는 다음과 같습니다:
-
CI/CD 잡 기준에 따라 파이프라인에서 실행되도록 활성화되고 의도된 스캐너가 별도의 잡으로 실행됩니다.
각 성공적인 잡은 잡 아티팩트로 하나 이상의 보안 보고서를 출력합니다. 이러한 보고서에는 이전에 발견되었는지, 무시되었는지 또는 새로운 것인지에 관계없이 브랜치에서 감지된 모든 취약점의 세부 정보가 포함됩니다.
-
수동 잡을 포함하여 모든 잡이 완료되면 결과를 다운로드하거나 볼 수 있습니다.
보안 스캔 출력에 대한 자세한 내용은 보안 스캔 결과를 참조하세요.
CI/CD 보안 잡 기준#
CI/CD 파이프라인의 보안 스캔 잡은 다음 기준에 의해 결정됩니다:
-
보안 스캔 템플릿 포함
보안 스캔 잡의 선택은 먼저 정책이나 컴플라이언스 프레임워크에 의해 포함되거나 적용된 템플릿에 의해 결정됩니다.
보안 스캔은 기본적으로 브랜치 파이프라인에서 실행됩니다. 머지 리퀘스트 파이프라인에서 보안 스캔을 실행하려면 특별히 활성화해야 합니다.
-
규칙 평가
각 템플릿에는 분석기가 실행될지를 결정하는 규칙이 정의되어 있습니다.
예를 들어 일부 분석기는 리포지터리에서 특정 유형의 파일이 감지된 경우에만 실행됩니다.
-
분석기 로직
템플릿의 규칙이 잡이 실행되어야 한다고 지시하면 템플릿에 지정된 파이프라인 스테이지에서 잡이 만들어집니다. 그러나 각 분석기는 분석기 자체가 실행될지를 결정하는 자체 로직이 있습니다.
예를 들어 의존성 스캔이 기본 깊이에서 지원되는 파일을 감지하지 못하면 분석기가 실행되지 않고 아티팩트가 출력되지 않습니다.
잡은 취약점을 찾지 못하더라도 스캔을 완료하면 통과합니다. 유일한 예외는 결과가 있으면 실패하는 커버리지 퍼징입니다. 모든 잡은 전체 파이프라인이 실패하지 않도록 실패가 허용됩니다. 전체 파이프라인이 실패하게 되므로 잡의 allow_failure 설정을 변경하지 마세요.
데이터 개인 정보#
GitLab은 소스 코드를 처리하고 GitLab Runner에서 로컬로 분석을 수행합니다. GitLab 인프라(서버 및 러너) 외부로 데이터가 전송되지 않습니다.
보안 분석기는 최신 서명, 규칙 및 패치 세트를 다운로드하기 위해 인터넷에만 액세스합니다. 스캐너가 인터넷에 액세스하지 않는 것을 원하면 오프라인 환경을 사용하는 것을 고려하세요.
