Pre-receive secret detection

Tier: Ultimate Offering: GitLab Dedicated Status: Experiment
  • 이곳에서 GitLab Dedicated 고객을 위한 실험으로 GitLab 16.7에서 소개되었습니다.
note
이 기능은 실험으로, GitLab Dedicated에서만 사용할 수 있으며 GitLab 테스트 동의서의 적용을 받습니다.

Pre-receive 시크릿 검출은 커밋된 파일의 내용을 스캔하여 비밀 키나 API 토큰과 같은 시크릿이 리포지터리에 노출되는 것을 방지하기 위해 원격 리포지터리로 푸시될 때 콘텐츠를 확인합니다. 시크릿이 감지되면 푸시가 차단되어 시크릿이 인스턴스에 도달하지 않도록 보장됩니다.

Pre-receive 시크릿 검출은 실험으로, GitLab Dedicated에서만 사용할 수 있습니다. 인스턴스에서 시크릿 검출을 사용하려면 파이프라인 시크릿 검출을 대신 사용하세요.

Pre-receive 시크릿 검출 활성화

전제 조건:

  • 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로 변경 사항을 푸시합니다.

시크릿 검출 건너뛰기

일부 경우에는 pre-receive 시크릿 검출을 건너뛰어야 할 수 있습니다. 예를 들어, 개발자가 테스트를 위해 일시적인 시크릿을 커밋하거나 사용자가 Git 작업 시간 초과로 인해 시크릿 검출을 우회하려는 경우가 있습니다. 푸시의 모든 커밋에서 pre-receive 시크릿 검출을 건너뛰려면 커밋 메시지 중 하나에 [skip secret detection]을 추가합니다. 예를 들면:

# 이 커밋들은 동일한 푸시에 있으며 둘 다 스캔되지 않습니다.
실수로 실제 시크릿 추가
테스트 파일에 플레이스홀더 토큰 추가 [skip secret detection]
note
Pipeline secret detection[skip secret detection]을 사용하여 우회된 시크릿을 여전히 스캔합니다.