튜토리얼: 스캔 실행 정책 설정

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

이 튜토리얼에서는 스캔 실행 정책을 생성하고 적용하는 방법을 안내합니다. 이러한 정책은 CI/CD 파이프라인의 일부로 응용 프로그램 보안 도구를 강제로 적용합니다. 이 튜토리얼에서는 두 프로젝트의 CI/CD 파이프라인에서 시크릿 탐지를 강제로 적용하는 정책을 생성합니다.

이 튜토리얼에서 다음을 수행합니다:

시작하기 전에

  • 기존 그룹에서 새 프로젝트를 만들 권한이 필요합니다.

프로젝트 A 만들기

일반적인 워크플로우에서 기존 프로젝트가 이미 있을 수 있습니다. 이 튜토리얼에서는 처음부터 시작하기 때문에 프로젝트를 만드는 것이 첫 번째 단계입니다.

프로젝트 A를 만들려면 다음을 수행하세요:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 그룹을 찾습니다.
  2. 새 프로젝트를 선택합니다.
  3. 빈 프로젝트 만들기를 선택합니다.
  4. 필드를 완료합니다. 프로젝트 이름go-example-a를 입력합니다.
  5. 프로젝트 만들기를 선택합니다.
  6. 추가(+) > 새 파일을 선택합니다.
  7. 파일 이름에 helloworld.go를 입력합니다.
  8. 다음 예제 Go 코드를 파일에 복사하여 붙입니다.

    package main
    import "fmt"
    func main() {
        fmt.Println("Hello world")
    }
    
  9. 변경 사항 커밋을 선택합니다.

다음 단계는 스캔 실행 정책을 만드는 것입니다. 첫 번째 보안 정책이 생성되면 정책 프로젝트가 만들어집니다. 정책 프로젝트에는 연결된 모든 프로젝트에서 생성된 보안 정책이 저장됩니다. 프로젝트를 보호하는 정책을 프로젝트에서 분리하여 보안 구성을 재사용하고 유지 관리하기 쉽게 만듭니다.

스캔 실행 정책 만들기

스캔 실행 정책을 만들려면 다음을 수행하세요:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 go-example-a 프로젝트를 검색합니다.
  2. 보안 > 정책로 이동합니다.
  3. 새 정책을 선택합니다.
  4. 스캔 실행 정책 섹션에서 정책 선택을 선택합니다.
  5. 필드를 완료합니다.
    • 이름: 시크릿 탐지 강제 실행.
    • 정책 상태: 활성화됨.
    • 조치: 시크릿 탐지 스캔 실행.
    • 조건: 모든 브랜치에 대해 파이프라인이 실행될 때마다 트리거됨.
  6. 병합 요청으로 구성을 선택합니다.

    정책 프로젝트 go-example-a - 보안 프로젝트가 생성되고, 병합 요청이 생성됩니다.

  7. (선택 사항) 생성된 병합 요청의 변경 탭에서 생성된 정책 YAML을 검토합니다.
  8. 개요 탭으로 이동하고 병합을 선택합니다.
  9. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 go-example-a 프로젝트를 검색합니다.
  10. 보안 > 정책로 이동합니다.

이제 모든 MR에 대해 모든 브랜치에서 시크릿 탐지 스캔을 실행하는 스캔 실행 정책이 있습니다. 프로젝트 A에서 병합 요청을 생성하여 정책을 테스트하세요.

프로젝트 A에서 스캔 실행 정책 테스트

스캔 실행 정책을 테스트하려면 다음을 수행하세요:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 go-example-a 프로젝트를 찾습니다.
  2. 코드 > 저장소로 이동합니다.
  3. helloworld.go 파일을 선택합니다.
  4. 편집 > 단일 파일 편집을 선택합니다.
  5. fmt.Println("Hello world") 다음에 다음 줄을 추가합니다.

    var GitLabFeedToken = "feed_token=eFLISqaBym4EjAefkl58"
    
  6. 대상 브랜치 필드에 feature-a를 입력합니다.
  7. 변경 사항 커밋을 선택합니다.
  8. 병합 요청 페이지가 열리면 병합 요청 생성을 선택합니다.

    스캔 실행 정책이 작동하는지 확인해보겠습니다. 파이프라인이 실행될 때마다 시크릿 탐지가 실행되도록 지정했다는 점을 기억하세요.

  9. 방금 생성한 병합 요청에서 파이프라인 탭으로 이동하고 생성된 파이프라인을 선택합니다.

    여기에서 시크릿 탐지 작업이 실행된 것을 볼 수 있습니다. 테스트 시크릿이 감지되었는지 확인해보세요.

  10. 시크릿 탐지 작업을 선택합니다.

    작업 로그의 맨 아래에 나오는 출력에서 예제 시크릿이 감지되었음을 확인할 수 있습니다.

    [INFO] [secrets] [2023-09-04T03:46:36Z] ▶ 3:46AM INF 1 commits scanned.
    [INFO] [secrets] [2023-09-04T03:46:36Z] ▶ 3:46AM INF scan completed in 60ms
    [INFO] [secrets] [2023-09-04T03:46:36Z] ▶ 3:46AM WRN leaks found: 1
    

하나의 프로젝트에 대해 정책이 작동하는 것을 보았습니다. 다른 프로젝트를 만들고 동일한 정책을 적용하세요.

프로젝트 B 만들기

프로젝트 B를 만들려면 다음을 수행하세요:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 그룹을 찾습니다.
  2. 새 프로젝트를 선택합니다.
  3. 빈 프로젝트 만들기를 선택합니다.
  4. 필드를 완료합니다. 프로젝트 이름go-example-b를 입력합니다.
  5. 프로젝트 만들기를 선택합니다.
  6. 추가(+) > 새 파일을 선택합니다.
  7. 파일 이름에 helloworld.go를 입력합니다.
  8. 다음 예제 Go 코드를 파일에 복사하여 붙입니다.

    package main
    import "fmt"
    func main() {
        fmt.Println("Hello world")
    }
    
  9. 변경 사항 커밋을 선택합니다.

다른 프로젝트가 생겼으므로 해당 프로젝트를 동일한 정책 프로젝트에 링크합니다.

프로젝트 B를 보안 정책 프로젝트에 링크

프로젝트 B를 보안 정책 프로젝트에 링크하려면 다음을 수행하세요:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 go-example-b 프로젝트를 찾습니다.
  2. 보안 > 정책으로 이동합니다.
  3. 정책 프로젝트 편집을 선택합니다.
  4. 드롭다운 목록을 선택하고, 이 튜토리얼 시작 부분에 생성된 보안 정책 프로젝트를 검색합니다.
  5. 저장을 선택합니다.

프로젝트 B를 동일한 정책 프로젝트에 링크하면 동일한 정책이 적용됩니다. 스캔 실행 정책은 모든 MR에 대해 모든 브랜치에서 시크릿 탐지 스캔을 실행합니다. 프로젝트 B에서 MR을 만들어 정책을 테스트하세요.

프로젝트 B에서 스캔 실행 정책을 테스트하세요

스캔 실행 정책을 테스트하려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 go-example-b 프로젝트를 찾습니다.
  2. 코드 > 저장소로 이동합니다.
  3. helloworld.go 파일을 선택합니다.
  4. 편집 > 단일 파일 편집을 선택합니다.
  5. fmt.Println("hello world") 줄 바로 뒤에 다음 줄을 추가합니다: plaintext var AdobeClient = "4ab4b080d9ce4072a6be2629c399d653"

  6. 대상 브랜치 필드에 feature-b를 입력합니다.
  7. 변경 사항 커밋을 선택합니다.
  8. 병합 요청 페이지가 열리면 병합 요청 생성을 선택합니다.

    스캔 실행 정책이 작동하는지 확인해 봅시다. 어떤 브랜치에서든 파이프라인이 실행될 때마다 시크릿 감지를 실행하도록 지정했음을 기억하세요.

  9. 방금 만든 병합 요청에서 파이프라인 탭을 선택하고 생성된 파이프라인을 선택합니다.

  10. 방금 만든 병합 요청에서 파이프라인의 ID를 선택합니다.

    여기에서 시크릿 감지 작업이 실행된 것을 확인할 수 있습니다. 시험 시크릿을 감지했는지 확인해 봅시다.

  11. 시크릿 감지 작업을 선택합니다.

    작업 로그의 하단 근처에서 다음 출력이 예제 시크릿을 감지했음을 확인합니다. plaintext [INFO] [secrets] [2023-09-04T04:22:28Z] ▶ 4:22AM INF 1 commits scanned. [INFO] [secrets] [2023-09-04T04:22:28Z] ▶ 4:22AM INF scan completed in 58.2ms [INFO] [secrets] [2023-09-04T04:22:28Z] ▶ 4:22AM WRN leaks found: 1

축하합니다. 이제 스캔 실행 정책을 만들고 프로젝트에 적용하는 방법을 배웠습니다.