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

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 - Security project가 생성되고, 병합 요청도 생성됩니다.

  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") 바로 뒤에 다음 줄을 추가합니다:

    var AdobeClient = "4ab4b080d9ce4072a6be2629c399d653"
    
  6. 대상 브랜치 필드에 feature-b를 입력합니다.
  7. 변경 사항 커밋을 선택합니다.
  8. MR 페이지가 열리면 MR 생성을 선택합니다.

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

  9. 방금 생성한 MR에서 파이프라인 탭을 선택하고 생성된 파이프라인을 선택합니다.

  10. 방금 생성한 MR에서 파이프라인 ID를 선택합니다.

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

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

    작업 로그 하단에 다음 출력이 테스트 시크릿이 탐지되었음을 확인합니다.

    [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
    

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