튜토리얼: 병합 요청 승인 정책 설정

Tier: Ultimate Offering: GitLab.com, Self-Managed, GitLab Dedicated

이 튜토리얼에서는 병합 요청 승인 정책을 만들고 구성하는 방법을 안내합니다. 이러한 정책은 스캔 결과에 기반하여 조치를 취할 수 있도록 설정할 수 있습니다. 예를 들어, 이 튜토리얼에서는 병합 요청에서 취약점이 감지되면 두 지정된 사용자의 승인이 필요한 정책을 설정합니다.

병합 요청 승인 정책을 설정하려면:

  1. 테스트 프로젝트 생성합니다.
  2. 병합 요청 승인 정책 추가합니다.
  3. 병합 요청 승인 정책 테스트합니다.

시작하기 전에

이 튜토리얼에 사용되는 네임스페이스는 다음을 포함해야합니다:

  • 귀하를 포함하여 최소 세 명의 사용자가 있어야 합니다. 다른 사용자가 두 명 이상이 없는 경우 먼저 그들을 만들어야 합니다. 자세한 내용은 사용자 생성을 참조하십시오.

테스트 프로젝트 생성

  1. 왼쪽 사이드바의 상단에서 만들기() 및 새 프로젝트/저장소 만들기를 선택합니다.
  2. 빈 프로젝트 만들기를 선택합니다.
  3. 필드를 작성합니다.
    • 프로젝트 이름: sast-scan-result-policy.
    • 정적 응용 보안 테스트 (SAST) 활성화 확인란을 선택합니다.
  4. 프로젝트 만들기를 선택합니다.
  5. 새로 만든 프로젝트로 이동하고 보호된 브랜치를 만듭니다.

병합 요청 승인 정책 추가

다음으로, 테스트 프로젝트에 병합 요청 승인 정책을 추가합니다:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 sast-scan-result-policy 프로젝트를 찾습니다.
  2. 보안 > 정책을 선택합니다.
  3. 새로운 정책을 선택합니다.
  4. 병합 요청 승인 정책에서 정책 선택을 선택합니다.
  5. 필드를 작성합니다.
    • 이름: sast-scan-result-policy
    • 정책 상태: 활성화
  6. 다음 규칙을 추가합니다:

    IF |보안 스캔| from |SAST| 에서 |0| 이상의 |모든 심각도 레벨| |모든 취약성 상태| 취약점이 모든 보호된 브랜치를 대상으로 하는 열린 병합 요청에서 검색되면
    
  7. 동작을 다음과 같이 설정합니다:

    그런 다음, 다음 승인자 중 2명의 승인이 필요합니다:
    
  8. 두 사용자를 선택합니다.
  9. 병합 요청과 함께 구성을 선택합니다.

    응용 프로그램은 정책에 연결된 새 프로젝트를 만들고 정책을 정의하는 병합 요청을 만듭니다.

  10. 병합을 선택합니다.
  11. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 sast-scan-result-policy 프로젝트를 찾습니다.
  12. 보안 > 정책을 선택합니다.

    이전 단계에서 추가된 정책 목록을 볼 수 있습니다.

병합 요청 승인 정책 테스트

좋은 작업입니다. 병합 요청 승인 정책을 만들었습니다. 이를 테스트하려면 몇 가지 취약점을 생성하고 결과를 확인합니다:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 sast-scan-result-policy 프로젝트를 찾습니다.
  2. 코드 > 저장소를 선택합니다.
  3. 드롭다운 목록에서 새 파일을 선택합니다.
  4. 파일 이름 필드에 main.ts를 입력합니다.
  5. 파일 내용에 다음을 복사합니다:

    // Non-literal require - tsr-detect-non-literal-require
    var lib: String = 'fs'
    require(lib)
    
    // Eval with variable - tsr-detect-eval-with-expression
    var myeval: String = 'console.log("Hello.");';
    eval(myeval);
    
    // Unsafe Regexp - tsr-detect-unsafe-regexp
    const regex: RegExp = /(x+x+)+y/;
    
    // Non-literal Regexp - tsr-detect-non-literal-regexp
    var myregexpText: String = "/(x+x+)+y/";
    var myregexp: RegExp = new RegExp(myregexpText);
    myregexp.test("(x+x+)+y");
    
    // Markup escaping disabled - tsr-detect-disable-mustache-escape
    var template: Object = new Object;
    template.escapeMarkup = false;
    
    // Detects HTML injections - tsr-detect-html-injection
    var element: Element =  document.getElementById("mydiv");
    var content: String = "mycontent"
    Element.innerHTML = content;
    
    // Timing attack - tsr-detect-possible-timing-attacks
    var userInput: String = "Jane";
    var auth: String = "Jane";
    if (userInput == auth) {
      console.log(userInput);
    }
    
  6. 커밋 메시지 필드에 취약한 파일 추가를 입력합니다.
  7. 대상 브랜치 필드에 test-branch를 입력합니다.
  8. 변경 내용 커밋을 선택합니다. 새 병합 요청 양식이 열립니다.
  9. 병합 요청 만들기를 선택합니다.
  10. 새 병합 요청에서 병합 요청 생성을 선택합니다.

    파이프라인 완료까지 기다립니다. 이 작업에는 몇 분이 소요될 수 있습니다.

병합 요청 보안 위젯에서 보안 스캔이 잠재적인 취약점을 감지했음을 확인합니다. 병합 요청 승인 정책에 따라 병합 요청이 차단되고 승인을 기다리는 상태임을 확인합니다.

이제 병합 요청 승인 정책을 설정하고 사용하는 방법을 알게 되었습니다!