Pre-receive secret detection
Tier: Ultimate
Offering: GitLab Dedicated
Status: Experiment
이 기능은 실험으로, GitLab Dedicated에서만 사용할 수 있으며 GitLab 테스트 동의의 적용을 받습니다.
Pre-receive secret detection은 커밋된 파일의 내용을 검사하여 키 또는 API 토큰과 같은 비밀 정보가 레포지토리에 노출되는 것을 방지하기 위해 원격 저장소로 푸시될 때 파일의 내용을 검사합니다. 비밀 정보가 감지되면 푸시가 차단되어 해당 비밀 정보가 인스턴스에 도달하지 않도록 보장합니다.
Pre-receive secret detection은 실험으로, GitLab Dedicated에서만 사용할 수 있습니다. 인스턴스에서 비밀 정보 감지를 사용하려면 파이프라인 비밀 정보 감지를 사용하세요.
Pre-receive secret detection 활성화
필수 조건:
- GitLab Dedicated 인스턴스의 관리자여야 합니다.
- 관리자로 GitLab Dedicated 인스턴스에 로그인합니다.
- 왼쪽 사이드바에서 아래쪽에 관리자 영역을 선택합니다.
- 설정 > 보안 및 규정 준수를 선택합니다.
- 시크릿 감지를 확장합니다.
- Pre-receive secret detection 활성화 확인란을 선택합니다.
한계
- 이 기능은 1MiB 미만의 비 이진 blob만 검사합니다. 이진 blob 및 1MiB보다 큰 blob은 검사되지 않습니다.
- 커밋의 내용이 다른 파일의 내용과 동일하면 스캔하지 않습니다.
- 파일 이름이 변경되거나 삭제되거나 이동한 경우에는 해당 커밋에서 수정된 내용이 없는 한 분석이 스킵됩니다.
- 이 기능은 리포지토리 생성 시 도입된 파일을 분석하지 않습니다.
차단된 푸시 해결
차단된 비밀 정보가 브랜치에서 가장 최근에 커밋된 경우:
- 파일에서 비밀 정보를 제거합니다.
- 변경 사항을
git add <파일 이름>
으로 스테이징합니다. - 변경된 파일을 포함하도록 가장 최근의 커밋을 수정하려면
git commit --amend
를 사용합니다. - 변경 사항을
git push
로 푸시합니다.
차단된 비밀 정보가 Git 기록에서 이전에 나타난 경우:
- 푸시 오류 메시지에서 커밋 SHA를 식별합니다. 여러 개인 경우
git log
을 사용하여 가장 초기의 것을 찾습니다. - 수정 가능한 재베이스를 시작하려면
git rebase -i <커밋-SHA>~1
을 사용합니다. - 편집기에서
pick
명령을edit
로 변경하여 문제가 되는 커밋을 편집 상태로 표시합니다. - 파일에서 비밀 정보를 제거합니다.
- 변경 사항을
git add <파일 이름>
으로 스테이징합니다. - 변경된 파일을
git commit --amend
로 커밋합니다. - 모든 비밀 정보가 제거될 때까지
git rebase --continue
로 재베이스를 계속합니다. - 변경 사항을
git push
로 푸시합니다.
시크릿 감지 건너뛰기
어떤 경우에는 Pre-receive secret detection을 건너뛰어야 할 수 있습니다. 예를 들어 개발자는 테스트를 위해 플레이스홀더 비밀 정보를 커밋하거나 사용자가 Git 작업 시간 초과로 인해 시크릿 감지를 우회하려고 할 수 있습니다. 푸시의 모든 커밋에서 시크릿 감지를 건너뛰려면 커밋 메시지 중 하나에 [skip secret detection]
를 추가하면 됩니다. 예를 들면 다음과 같습니다.
# 이 커밋들은 동일한 푸시에 있습니다. 둘 다 스캔되지 않을 것입니다.
실수로 진짜 비밀 정보 추가
테스트 파일에 플레이스홀더 토큰 추가 [skip secret detection]
파이프라인 시크릿 감지는 커밋 메시지 중 하나에
[skip secret detection]
를 사용할 경우 여전히 우회된 시크릿을 스캔합니다.