Pre-receive secret detection

Tier: Ultimate Offering: GitLab Dedicated Status: Experiment
  • GitLab 16.7에서 GitLab Dedicated 고객을 위한 실험으로 도입되었습니다.
note
이 기능은 실험 중이며 GitLab Dedicated에서만 사용할 수 있으며 GitLab 테스팅 계약의 대상입니다.

키 및 API 토큰과 같은 시크릿이 GitLab 인스턴스에 푸시되는 것을 차단합니다. Pre-receive secret detection은 어떤 리포지터리로 커밋이 푸시될 때 트리거됩니다. 시크릿이 감지되면 푸시가 차단됩니다.

Pre-receive secret detection은 실험 기능으로, GitLab Dedicated에서만 사용할 수 있습니다. 인스턴스에서 시크릿 감지를 사용하려면 파이프라인 시크릿 감지를 사용하십시오.

Pre-receive secret detection 활성화하기

사전 요구 사항:

  • GitLab Dedicated 인스턴스의 관리자여야 합니다.
  1. 관리자로서 GitLab Dedicated 인스턴스에 로그인합니다.
  2. 왼쪽 사이드바에서 가장 아래쪽에 Admin Area를 선택합니다.
  3. Settings > Security and Compliance를 선택합니다.
  4. Secret Detection을 확장합니다.
  5. Enable pre-receive secret detection 확인란을 선택합니다.

제한 사항

  • 이 기능은 1 MiB 미만의 비 이진 블롭만 스캔합니다. 이진 블롭과 1 MiB보다 큰 블롭은 스캔되지 않습니다.
  • 만약 커밋 내용이 이미 소스 코드에 존재하는 다른 파일의 내용과 동일하다면 스캔되지 않습니다.
  • 이 기능은 파일 이름이 변경되거나 삭제되거나 이동한 파일을 분석하지 않습니다. 단, 해당 파일이 동일한 커밋에서 수정된 경우에는 분석됩니다.
  • 이 기능은 리포지터리 생성 중에 도입된 파일을 분석하지 않습니다.

차단된 푸시 해결하기

차단된 시크릿이 최근 커밋에 추가된 경우:

  1. 파일에서 시크릿을 제거합니다.
  2. 변경 사항을 git add <file-name>으로 스테이징합니다.
  3. 변경된 파일을 포함한 최근 커밋을 수정하려면 git commit --amend를 사용합니다.
  4. 변경 사항을 git push로 푸시합니다.

차단된 시크릿이 Git 히스토리에서 이전에 나타난 경우:

  1. 푸시 오류 메시지에서 커밋 SHA를 식별합니다. 여러 개인 경우 git log를 사용하여 가장 빠른 것을 찾습니다.
  2. 대화식 리베이스를 시작하려면 git rebase -i <commit-sha>~1를 사용합니다.
  3. 편집기에서 pick 명령을 edit로 변경하여 문제가 되는 커밋을 편집하도록 합니다.
  4. 파일에서 시크릿을 제거합니다.
  5. 변경 사항을 git add <file-name>으로 스테이징합니다.
  6. 변경된 파일을 git commit --amend로 커밋합니다.
  7. 시크릿이 모두 제거될 때까지 git rebase --continue로 리베이스를 계속합니다.
  8. 변경 사항을 git push로 푸시합니다.

시크릿 감지 건너뛰기

시크릿 감지를 건너뛰어야 하는 경우가 있을 수 있습니다. 예를 들어 개발자가 테스트를 위해 플레이스홀더 시크릿을 커밋해야 하거나 Git 작업 시간이 초과되어 시크릿 감지를 우회해야 하는 경우 등이 있을 수 있습니다.

한 푸시에서 모든 커밋에 대한 시크릿 감지를 건너뛰는 두 가지 방법이 있습니다:

  • 하나의 커밋 메시지에 [skip secret detection]을 추가합니다. 예:
# 이 커밋은 같은 푸시에 있습니다. 둘 다 스캔되지 않습니다.
실수로 실제 시크릿 추가
테스트 파일에 플레이스홀더 토큰 추가 [skip secret detection]
# 이 커밋은 같은 푸시에 있습니다. 둘 다 스캔되지 않습니다.
실수로 실제 시크릿 추가
테스트 파일에 플레이스홀더 토큰 추가

git push -o secret_detection.skip_all
note
Pre-receive secret detection을 건너뛸 때도 파이프라인 시크릿 감지는 건너뛴 시크릿을 스캔합니다.