튜토리얼: 스캔 실행 정책 설정
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
이 튜토리얼에서는 스캔 실행 정책을 만들고 적용하는 방법을 보여줍니다. 프로젝트 A에서 스캔 실행 정책 테스트. 프로젝트 B를 보안 정책 프로젝트에 연결. 프로젝트 B에서 스캔 실행 정책 테스트. 표준 워크플로에서는 이미 기존 프로젝트가 있을 수 있습니다.
이 튜토리얼에서는 스캔 실행 정책을 만들고 적용하는 방법을 보여줍니다. 이러한 정책은 애플리케이션 보안 도구를 CI/CD 파이프라인의 일부로 적용합니다. 이 튜토리얼에서는 두 프로젝트의 CI/CD 파이프라인에서 시크릿 탐지를 적용하는 정책을 만듭니다.
이 튜토리얼에서:
시작하기 전에#
- 기존 그룹에서 새 프로젝트를 만들 수 있는 권한이 필요합니다.
프로젝트 A 만들기#
표준 워크플로에서는 이미 기존 프로젝트가 있을 수 있습니다. 이 튜토리얼에서는 아무것도 없는 상태에서 시작하므로 첫 번째 단계는 프로젝트를 만드는 것입니다.
프로젝트 A를 만들려면:
-
상단 표시줄에서 검색 또는 이동을 선택하고 그룹을 찾습니다.
-
왼쪽 사이드바에서 새 프로젝트를 선택합니다.
-
빈 프로젝트 만들기를 선택합니다.
-
필드를 완성합니다. 프로젝트 이름에
go-example-a를 입력합니다. -
프로젝트 만들기를 선택합니다.
-
추가(+) > 새 파일을 선택합니다.
-
파일명에
helloworld.go를 입력합니다. -
다음 예시 Go 코드를 파일에 복사하여 붙여넣습니다.
package main import "fmt" func main() { fmt.Println("Hello world") } -
변경 사항 커밋을 선택합니다.
다음 단계는 스캔 실행 정책을 만드는 것입니다. 첫 번째 보안 정책이 만들어지면 정책 프로젝트가 만들어집니다. 정책 프로젝트는 이에 연결된 모든 프로젝트에서 만들어진 보안 정책을 저장합니다. 정책을 보호하는 프로젝트와 분리하여 보안 구성을 재사용 가능하고 유지 관리하기 쉽게 만듭니다.
스캔 실행 정책 만들기#
스캔 실행 정책을 만들려면:
-
상단 표시줄에서 검색 또는 이동을 선택하고
go-example-a프로젝트를 검색합니다. -
보안 > 정책으로 이동합니다.
-
새 정책을 선택합니다.
-
스캔 실행 정책 섹션에서 정책 선택을 선택합니다.
-
필드를 완성합니다.
- 이름: 시크릿 탐지 적용.
- 정책 상태: 활성화됨.
- 작업: 시크릿 탐지 스캔 실행.
- 조건: 모든 브랜치에 대해 파이프라인이 실행될 때마다 트리거.
-
머지 리퀘스트로 구성을 선택합니다.
정책 프로젝트
go-example-a - Security project가 만들어지고 머지 리퀘스트가 만들어집니다. -
선택 사항. 머지 리퀘스트의 변경 사항 탭에서 생성된 정책 YAML을 검토합니다.
-
개요 탭으로 이동하고 병합을 선택합니다.
-
상단 표시줄에서 검색 또는 이동을 선택하고
go-example-a프로젝트를 검색합니다. -
보안 > 정책으로 이동합니다.
이제 모든 브랜치에 대해 모든 MR에서 시크릿 탐지 스캔을 실행하는 스캔 실행 정책이 있습니다. 프로젝트 A에서 머지 리퀘스트를 만들어 정책을 테스트합니다.
프로젝트 A에서 스캔 실행 정책 테스트#
스캔 실행 정책을 테스트하려면:
-
상단 표시줄에서 검색 또는 이동을 선택하고
go-example-a프로젝트를 찾습니다. -
코드 > 리포지터리로 이동합니다.
-
helloworld.go파일을 선택합니다. -
편집 > 단일 파일 편집을 선택합니다.
-
fmt.Println("hello world")줄 바로 다음에 다음 줄을 추가합니다:var GitLabFeedToken = "feed_token=eFLISqaBym4EjAefkl58" -
대상 브랜치 필드에
feature-a를 입력합니다. -
변경 사항 커밋을 선택합니다.
-
머지 리퀘스트 페이지가 열리면 머지 리퀘스트 만들기를 선택합니다.
스캔 실행 정책이 작동했는지 확인해 보겠습니다. 시크릿 탐지가 모든 브랜치에 대해 파이프라인이 실행될 때마다 실행되도록 지정했습니다.
-
방금 만든 머지 리퀘스트에서 파이프라인 탭으로 이동하고 만들어진 파이프라인을 선택합니다.
여기서 시크릿 탐지 잡이 실행되었음을 확인할 수 있습니다. 테스트 시크릿을 탐지했는지 확인해 보겠습니다.
-
시크릿 탐지 잡을 선택합니다.
잡 로그 하단 근처에 다음 출력이 예시 시크릿이 탐지되었음을 확인합니다.
[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를 만들려면:
-
상단 표시줄에서 검색 또는 이동을 선택하고 그룹을 찾습니다.
-
왼쪽 사이드바에서 새 프로젝트를 선택합니다.
-
빈 프로젝트 만들기를 선택합니다.
-
필드를 완성합니다. 프로젝트 이름에
go-example-b를 입력합니다. -
프로젝트 만들기를 선택합니다.
-
추가(+) > 새 파일을 선택합니다.
-
파일명에
helloworld.go를 입력합니다. -
다음 예시 Go 코드를 파일에 복사하여 붙여넣습니다.
package main import "fmt" func main() { fmt.Println("Hello world") } -
변경 사항 커밋을 선택합니다.
이제 다른 프로젝트가 있으므로 동일한 정책 프로젝트에 연결합니다.
프로젝트 B를 보안 정책 프로젝트에 연결#
프로젝트 B를 보안 정책 프로젝트에 연결하려면:
- 상단 표시줄에서 검색 또는 이동을 선택하고
go-example-b프로젝트를 찾습니다. - 보안 > 정책으로 이동합니다.
- 정책 프로젝트 편집을 선택합니다.
- 드롭다운 목록을 선택한 다음 이 튜토리얼 시작 부분에서 만든 보안 정책 프로젝트를 검색합니다.
- 저장을 선택합니다.
프로젝트 B를 동일한 정책 프로젝트에 연결하면 동일한 정책이 적용됩니다. 스캔 실행 정책은 모든 브랜치에 대해 모든 MR에서 시크릿 탐지 스캔을 실행합니다. 프로젝트 B에서 MR을 만들어 정책을 테스트해 보겠습니다.
프로젝트 B에서 스캔 실행 정책 테스트#
스캔 실행 정책을 테스트하려면:
-
상단 표시줄에서 검색 또는 이동을 선택하고
go-example-b프로젝트를 찾습니다. -
코드 > 리포지터리로 이동합니다.
-
helloworld.go파일을 선택합니다. -
편집 > 단일 파일 편집을 선택합니다.
-
fmt.Println("hello world")줄 바로 다음에 다음 줄을 추가합니다:var AdobeClient = "4ab4b080d9ce4072a6be2629c399d653" -
대상 브랜치 필드에
feature-b를 입력합니다. -
변경 사항 커밋을 선택합니다.
-
머지 리퀘스트 페이지가 열리면 머지 리퀘스트 만들기를 선택합니다.
스캔 실행 정책이 작동했는지 확인해 보겠습니다. 시크릿 탐지가 모든 브랜치에 대해 파이프라인이 실행될 때마다 실행되도록 지정했습니다.
-
방금 만든 머지 리퀘스트에서 파이프라인 탭으로 이동하고 만들어진 파이프라인을 선택합니다.
-
방금 만든 머지 리퀘스트에서 파이프라인의 ID를 선택합니다.
여기서 시크릿 탐지 잡이 실행되었음을 확인할 수 있습니다. 테스트 시크릿을 탐지했는지 확인해 보겠습니다.
-
시크릿 탐지 잡을 선택합니다.
잡 로그 하단 근처에 다음 출력이 예시 시크릿이 탐지되었음을 확인합니다.
[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
축하합니다. 스캔 실행 정책을 만들고 프로젝트에 적용하는 방법을 배웠습니다.
