
선택한 파일에서 규칙에 명시된 패턴을 스캔합니다. 이는 실수로 파일에 작성한 비밀 정보를 찾는 데 사용됩니다. 이 스캐너는 GitLab [취약점 보고서](https://docs.gitlab.com/ee/user/application_security/vulnerability_report/)가 사용자 정의 스캐너에 의해 채워질 수 있는 방법을 보여주는 데 사용됩니다. 해당 데모를 [Secret List](https://gitlab.com/gitlab-de/tutorials/security-and-governance/custom-scanner-integration/secret-list) 프로젝트의 문서를 따라 실제로 확인할 수 있습니다.
Fern의 패턴 스캐너에 오신 것을 환영합니다. 이 스캐너는 사용자가 제안한 파일을 스캔하고 rules/rules.yaml에서 명시된 모든 패턴을 regex를 사용하여 찾습니다. 그런 다음 모든 발견 사항과 함께 보고서가 생성됩니다. 이 프로젝트는 사용자 정의 보안 스캐너가 GitLab에 통합되는 방법을 보여주기 위해 사용되며, 파이프라인 보안 탭, 취약점 보고서 및 병합 요청 위젯을 채우는 데 사용될 수 있습니다.
참고: 취약점 보고서에 접근하려면 GitLab Ultimate 구독이 필요합니다.
다음을 .gitlab-ci.yml에 추가하여 이 보안 스캐너를 활성화할 수 있습니다:
include:
- remote: "https://gitlab.com/gitlab-de/tutorials/security-and-governance/custom-scanner-integration/fern-pattern-scanner/-/blob/main/jobs/.fern-pattern-scanner.gitlab-ci.yml"
스캐너가 Secret List 프로젝트에서 실행되는 것을 볼 수 있습니다. 스캐너가 완료되면 이라는 보고서가 생성됩니다. 이 보고서는 검증되어 와 에 로드됩니다.
스캐너가 실행 중인 프로젝트의 특정 경로를 스캔에서 제외하려면, 다음과 같이 쉼표로 구분된 값으로 변수를 설정할 수 있습니다:
variables:
FERN_ANALYZER_EXCLUDED_PATHS: "docs, tests"
GitLab에서 정규 표현식 패턴의 사용자 정의 규칙 세트를 실행하려면 다음을 수행해야 합니다:
patterns:
- name: 'PATTERN NAME 1'
pattern: 'REGEX 1'
- name: 'PATTERN NAME 2'
pattern: 'REGEX 2'
fern_secret_detection:
script:
- /app/fern-pattern-scanner scan --rules "/path/to/rules.yaml" --report
이 스캐너를 사용하여 로컬 머신에서 선택한 파일 유형의 패턴을 감지할 수 있습니다. 로컬 머신에서 이 스캐너를 실행하려면 아래 단계를 따르세요:
$ go install gitlab.com/gitlab-de/tutorials/security-and-governance/custom-scanner-integration/fern-pattern-scanner
참고: 이렇게 하면 파일이 $GOBIN에 다운로드됩니다. Go를 처음 사용하는 경우 이 플레이그라운드에서 Go 설치에 대해 설명합니다.
$ wget https://gitlab.com/gitlab-de/tutorials/security-and-governance/custom-scanner-integration/fern-pattern-scanner/-/raw/main/rules/rules.yaml
...
Resolving gitlab.com (gitlab.com)... 2606:4700:90:0:f22e:fbec:5bed:a9b9, 172.65.251.78
Connecting to gitlab.com (gitlab.com)|2606:4700:90:0:f22e:fbec:5bed:a9b9|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 283 [text/plain]
Saving to: ‘rules.yaml’
rules.yaml 100%[===================>] 283 --.-KB/s in 0s
2023-05-20 16:02:46 (22.5 MB/s) - ‘rules.yaml’ saved [283/283]
참고: 파일을 프로젝트에서 직접 다운로드할 수도 있습니다.
$ fern-pattern-scanner scan --rules path/to/rules.yaml
INFO[0000] The scanner is starting
INFO[0000] Skipping the following directories: []
INFO[0000] Possible Vulnerability Detected: {Id:139999 Name:password variation 1 Message:The pattern in rule: password variation 1 was found in a file Description:The pattern in rule: password variation 1 was found in a file. Examine the file, remove and rotate your secret. Location:/Users/fern/Desktop/secret-list/.git/index Line:3}
...
INFO[0000] The scanner completed successfully
Fern🌿가 만들고 유지 관리합니다.