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

Tier: Ultimate

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

이 튜토리얼에서는 스캔 실행 정책을 생성하고 적용하는 방법을 보여줍니다. 이 정책은 CI/CD 파이프라인의 일환으로 애플리케이션 보안 도구를 시행합니다. 이 튜토리얼에서는 두 프로젝트의 CI/CD 파이프라인에서 비밀 감지를 시행하는 정책을 만듭니다.

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

시작하기 전에

  • 기존 그룹에서 새로운 프로젝트를 생성할 수 있는 권한이 필요합니다.

프로젝트 A 생성

표준 워크플로우에서는 기존에 프로젝트가 이미 있을 수 있습니다. 이 튜토리얼에서는 아무것도 없는 상태에서 시작하므로 첫 번째 단계는 프로젝트를 생성하는 것입니다.

프로젝트 A를 만들기 위해:

  1. 왼쪽 사이드바에서 Search or go to를 선택하고 그룹을 찾습니다.

  2. New project를 선택합니다.

  3. Create blank project를 선택합니다.

  4. 필드를 작성합니다. Project namego-example-a를 입력합니다.

  5. Create project를 선택합니다.

  6. Add (+) > New file을 선택합니다.

  7. 파일 이름에 helloworld.go를 입력합니다.

  8. 아래의 예제 Go 코드를 파일에 복사하여 붙여넣습니다.

    package main
    import "fmt"
    func main() {
        fmt.Println("Hello world")
    }
    
  9. Commit changes를 선택합니다.

다음 단계는 스캔 실행 정책을 생성하는 것입니다. 첫 번째 보안 정책이 생성될 때 정책 프로젝트가 생성됩니다. 정책 프로젝트는 이와 연결된 모든 프로젝트에서 생성된 보안 정책을 저장합니다. 정책을 보호하는 프로젝트와 분리하면 보안 구성이 재사용 가능하고 유지 관리가 더 쉬워집니다.

스캔 실행 정책 생성

스캔 실행 정책을 만들기 위해:

  1. 왼쪽 사이드바에서 Search or go to를 선택하고 go-example-a 프로젝트를 검색합니다.

  2. Secure > Policies로 이동합니다.

  3. New policy를 선택합니다.

  4. Scan execution policy 섹션에서 Select policy를 선택합니다.

  5. 필드를 작성합니다.
    • Name: 비밀 감지 시행.
    • Policy status: 활성화됨.
    • Actions: 비밀 감지 스캔 실행.
    • Conditions: 모든 브랜치에 대해 파이프라인이 실행될 때마다 트리거됩니다.
  6. Configure with a merge request를 선택합니다.

    정책 프로젝트 go-example-a - Security project가 생성되고, 머지 요청이 생성됩니다.

  7. 선택 사항. 머지 요청의 Changes 탭에서 생성된 정책 YAML을 검토합니다.

  8. Overview 탭으로 이동하여 Merge를 선택합니다.

  9. 왼쪽 사이드바에서 Search or go to를 선택하고 go-example-a 프로젝트를 검색합니다.

  10. Secure > Policies로 이동합니다.

이제 모든 MR에 대해 비밀 감지 스캔을 실행하는 스캔 실행 정책이 있습니다. 프로젝트 A에서 머지 요청을 만들어 정책을 테스트하세요.

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

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

  1. 왼쪽 사이드바에서 Search or go to를 선택하고 go-example-a라는 프로젝트를 찾습니다.

  2. Code > Repository로 이동합니다.

  3. helloworld.go 파일을 선택합니다.

  4. Edit > Edit single file을 선택합니다.

  5. fmt.Println("hello world") 줄 바로 뒤에 다음 줄을 추가합니다:

    var GitLabFeedToken = "feed_token=eFLISqaBym4EjAefkl58"
    
  6. Target Branch 필드에 feature-a를 입력합니다.

  7. Commit changes를 선택합니다.

  8. 머지 요청 페이지가 열리면, Create merge request를 선택합니다.

    스캔 실행 정책이 작동했는지 확인해 보겠습니다. 우리는 비밀 감지가 파이프라인이 실행될 때마다 모든 브랜치에서 실행되도록 지정했습니다.

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

    여기에서 비밀 감지 작업이 실행된 것을 볼 수 있습니다. 테스트 비밀이 감지되었는지 확인해 보겠습니다.

  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. 왼쪽 사이드바에서 Search or go to를 선택하고 귀하의 그룹을 찾습니다.

  2. New project를 선택합니다.

  3. Create blank project를 선택합니다.

  4. 필드를 채웁니다. Project name 항목에 go-example-b를 입력합니다.

  5. Create project를 선택합니다.

  6. Add (+) > New file을 선택합니다.

  7. 파일 이름에 helloworld.go를 입력합니다.

  8. 다음의 예제 Go 코드를 파일에 복사하여 붙여넣습니다.

    package main
    import "fmt"
    func main() {
        fmt.Println("Hello world")
    }
    
  9. Commit changes를 선택합니다.

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

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

프로젝트 B를 보안 정책 프로젝트에 링크하려면:

  1. 왼쪽 사이드바에서 Search or go to를 선택하고 go-example-b 프로젝트를 찾습니다.

  2. Secure > Policies로 이동합니다.

  3. Edit policy project를 선택합니다.

  4. 드롭다운 목록을 선택한 후 이 튜토리얼의 시작 부분에서 생성한 보안 정책 프로젝트를 검색합니다.

  5. Save를 선택합니다.

프로젝트 B를 동일한 정책 프로젝트에 링크하면 동일한 정책이 적용됩니다. 스캔 실행 정책은 모든 MR에서 비밀 감지 스캔을 실행합니다. 정책을 테스트하기 위해 프로젝트 B에서 MR을 생성해 보겠습니다.

프로젝트 B로 스캔 실행 정책 테스트

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

  1. 왼쪽 사이드바에서 Search or go to를 선택하고 go-example-b 프로젝트를 찾습니다.

  2. Code > Repository로 이동합니다.

  3. helloworld.go 파일을 선택합니다.

  4. Edit > Edit single file을 선택합니다.

  5. fmt.Println("hello world") 줄 바로 뒤에 다음 줄을 추가합니다:

    var AdobeClient = "4ab4b080d9ce4072a6be2629c399d653"
    
  6. Target Branch 필드에 feature-b를 입력합니다.

  7. Commit changes를 선택합니다.

  8. 머지 요청 페이지가 열리면, Create merge request를 선택합니다.

    스캔 실행 정책이 작동했는지 확인해 보겠습니다. 우리는 비밀 감지가 파이프라인이 실행될 때마다 모든 브랜치에서 실행되도록 지정했습니다.

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

  10. 방금 생성한 머지 요청에서 파이프라인 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
    

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