튜토리얼: Merge Request 승인 정책 설정

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

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

Merge Request 승인 정책을 설정하려면:

  1. 테스트 프로젝트 생성을 선택합니다.
  2. Merge Request 승인 정책 추가를 선택합니다.
  3. Merge Request 승인 정책 테스트를 선택합니다.

시작하기 전에

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

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

테스트 프로젝트 생성

  1. 왼쪽 사이드바의 맨 위에서 생성 () 및 새 프로젝트/리포지터리 생성을 선택합니다.
  2. 빈 프로젝트 생성을 선택합니다.
  3. 필드를 입력합니다.
    • 프로젝트 이름: sast-scan-result-policy
    • 정적 응용 프로그램 보안 테스트 (SAST) 활성화 확인란을 선택합니다.
  4. 프로젝트 생성을 선택합니다.
  5. 새롭게 생성된 프로젝트로 이동하여 보호된 브랜치를 생성합니다.

Merge Request 승인 정책 추가

이제 테스트 프로젝트에 Merge Request 승인 정책을 추가합니다:

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

    IF |SAST에서 찾은| |Security Scan|이(가) |모든 심각도 수준| |모든 취약점 상태| |모든 보호된 브랜치|를 대상으로 하는 열린 Merge Request에서 |0| 이상의 취약점을 찾으면  
    
  7. 조치를 다음과 같이 설정합니다:

    THEN 다음 승인자 중 2명의 승인이 필요합니다:
    
  8. 두 사용자를 선택합니다.
  9. Merge Request과 구성을 선택합니다.

    응용프로그램은 정책에 연결된 새 프로젝트를 생성하고, 정책을 정의하기 위해 Merge Request을 생성합니다.

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

    이전 단계에서 추가된 정책 디렉터리을 볼 수 있습니다.

Merge Request 승인 정책 테스트

수고하셨습니다. 이제 Merge Request 승인 정책을 생성했습니다. 테스트하기 위해 몇 가지 취약점을 생성하고 결과를 확인하세요:

  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. 변경 사항 커밋을 선택합니다. 새 Merge Request 양식이 열립니다.
  9. Merge Request 생성을 선택합니다.
  10. 새 Merge Request에서 Merge Request 생성을 선택합니다.

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

Merge Request 보안 위젯은 보안 검사가 한 가지 잠재적인 취약점을 감지했음을 확인합니다. Merge Request 승인 정책에 정의된 대로, Merge Request이 차단되고 승인을 기다리고 있습니다.

이제 Merge Request 승인 정책을 설정하고 사용하여 취약점을 검출하는 방법을 알게 되었습니다!