Pre-receive secret detection

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

Pre-receive secret detection은 커밋된 파일의 내용을 검사하여 키 또는 API 토큰과 같은 비밀 정보가 레포지토리에 노출되는 것을 방지하기 위해 원격 저장소로 푸시될 때 파일의 내용을 검사합니다. 비밀 정보가 감지되면 푸시가 차단되어 해당 비밀 정보가 인스턴스에 도달하지 않도록 보장합니다.

Pre-receive secret detection은 실험으로, GitLab Dedicated에서만 사용할 수 있습니다. 인스턴스에서 비밀 정보 감지를 사용하려면 파이프라인 비밀 정보 감지를 사용하세요.

Pre-receive secret detection 활성화

필수 조건:

  • GitLab Dedicated 인스턴스의 관리자여야 합니다.
  1. 관리자로 GitLab Dedicated 인스턴스에 로그인합니다.
  2. 왼쪽 사이드바에서 아래쪽에 관리자 영역을 선택합니다.
  3. 설정 > 보안 및 규정 준수를 선택합니다.
  4. 시크릿 감지를 확장합니다.
  5. Pre-receive secret detection 활성화 확인란을 선택합니다.

한계

  • 이 기능은 1MiB 미만의 비 이진 blob만 검사합니다. 이진 blob 및 1MiB보다 큰 blob은 검사되지 않습니다.
  • 커밋의 내용이 다른 파일의 내용과 동일하면 스캔하지 않습니다.
  • 파일 이름이 변경되거나 삭제되거나 이동한 경우에는 해당 커밋에서 수정된 내용이 없는 한 분석이 스킵됩니다.
  • 이 기능은 리포지토리 생성 시 도입된 파일을 분석하지 않습니다.

차단된 푸시 해결

차단된 비밀 정보가 브랜치에서 가장 최근에 커밋된 경우:

  1. 파일에서 비밀 정보를 제거합니다.
  2. 변경 사항을 git add <파일 이름>으로 스테이징합니다.
  3. 변경된 파일을 포함하도록 가장 최근의 커밋을 수정하려면 git commit --amend를 사용합니다.
  4. 변경 사항을 git push로 푸시합니다.

차단된 비밀 정보가 Git 기록에서 이전에 나타난 경우:

  1. 푸시 오류 메시지에서 커밋 SHA를 식별합니다. 여러 개인 경우 git log을 사용하여 가장 초기의 것을 찾습니다.
  2. 수정 가능한 재베이스를 시작하려면 git rebase -i <커밋-SHA>~1을 사용합니다.
  3. 편집기에서 pick 명령을 edit로 변경하여 문제가 되는 커밋을 편집 상태로 표시합니다.
  4. 파일에서 비밀 정보를 제거합니다.
  5. 변경 사항을 git add <파일 이름>으로 스테이징합니다.
  6. 변경된 파일을 git commit --amend로 커밋합니다.
  7. 모든 비밀 정보가 제거될 때까지 git rebase --continue로 재베이스를 계속합니다.
  8. 변경 사항을 git push로 푸시합니다.

시크릿 감지 건너뛰기

어떤 경우에는 Pre-receive secret detection을 건너뛰어야 할 수 있습니다. 예를 들어 개발자는 테스트를 위해 플레이스홀더 비밀 정보를 커밋하거나 사용자가 Git 작업 시간 초과로 인해 시크릿 감지를 우회하려고 할 수 있습니다. 푸시의 모든 커밋에서 시크릿 감지를 건너뛰려면 커밋 메시지 중 하나에 [skip secret detection]를 추가하면 됩니다. 예를 들면 다음과 같습니다.

# 이 커밋들은 동일한 푸시에 있습니다. 둘 다 스캔되지 않을 것입니다.
실수로 진짜 비밀 정보 추가
테스트 파일에 플레이스홀더 토큰 추가 [skip secret detection]
note
파이프라인 시크릿 감지는 커밋 메시지 중 하나에 [skip secret detection]를 사용할 경우 여전히 우회된 시크릿을 스캔합니다.