GitGuardian
GitLab v19.2Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
GitGuardian은 소스 코드 리포지터리에서 API 키, 비밀번호, 토큰과 같은 하드코딩된 자격 증명을 탐지하는 시크릿 탐지 서비스입니다. GitGuardian 정책에 따라 커밋을 거부하도록 GitLab을 구성할 수 있습니다.
히스토리
- Introduced in GitLab 16.9 with a flag named
git_guardian_integration. Enabled by default. Disabled on GitLab.com. - Enabled on GitLab.com in GitLab 17.7.
- Generally available in GitLab 17.8. Feature flag
git_guardian_integrationremoved. api_urlparameter introduced in GitLab 19.1.
GitGuardian은 소스 코드 리포지터리에서 API 키, 비밀번호, 토큰과 같은 하드코딩된 자격 증명을 탐지하는 시크릿 탐지 서비스입니다. 이 통합을 활성화하면 GitLab은 각 푸시를 GitGuardian에 전송하여 스캔합니다. GitGuardian이 시크릿을 탐지하면 GitLab은 해당 푸시를 차단합니다.
GitGuardian 정책에 따라 커밋을 거부하도록 GitLab을 구성할 수 있습니다.
GitGuardian 통합을 설정하려면:
GitGuardian API 토큰 만들기#
사전 요구 사항:
- GitGuardian 계정이 있어야 합니다.
API 토큰을 만들려면:
-
GitGuardian 계정에 로그인합니다.
-
사이드바에서 API 섹션으로 이동합니다.
-
API 섹션 사이드바에서 Personal access tokens 페이지로 이동합니다.
-
Create token을 선택합니다. 토큰 만들기 대화 상자가 열립니다.
-
토큰 정보를 제공합니다:
API 토큰에 목적을 식별할 수 있는 의미 있는 이름을 지정합니다.
예를 들어 GitLab integration token.
-
적절한 만료일을 선택합니다.
-
scan scope 체크박스를 선택합니다. 통합에 필요한 유일한 범위입니다.
-
Create token을 선택합니다.
-
토큰을 생성한 후 클립보드에 복사합니다. 이 토큰은 민감한 정보이므로 안전하게 보관하세요.
이제 통합에 사용할 수 있는 GitGuardian API 토큰을 성공적으로 만들었습니다.
프로젝트에 GitGuardian 통합 설정#
사전 요구 사항:
- 프로젝트에 대한 Maintainer 또는 Owner 권한이 있어야 합니다.
API 토큰을 만들고 복사한 후 커밋을 거부하도록 GitLab을 구성합니다:
프로젝트에 통합을 활성화하려면:
상단 메뉴에서 Search or go to를 선택하고 프로젝트 또는 그룹을 찾습니다.
왼쪽 사이드바에서 Settings > Integrations를 선택합니다.
GitGuardian을 선택합니다.
Enable integration에서 Active 체크박스를 선택합니다.
선택 사항. API endpoint 텍스트 상자에 GitGuardian 인스턴스의 기본 URL을 입력합니다:
GitGuardian EU SaaS의 경우 https://api.eu1.gitguardian.com을 입력합니다.
- 자체 호스팅 GitGuardian의 경우 인스턴스 URL을 입력합니다(예:
https://gitguardian.example.com).
이 필드를 비워두면 GitLab은 기본 US SaaS 엔드포인트(https://api.gitguardian.com)를 사용합니다.
API token에 GitGuardian의 토큰 값을 붙여넣습니다.
선택 사항. Test settings를 선택합니다.
Save changes를 선택합니다.
이제 GitLab은 GitGuardian 정책에 따라 커밋을 거부할 준비가 되었습니다.
비밀 탐지 건너뛰기#
히스토리
- Introduced in GitLab 17.0.
필요한 경우 GitGuardian 시크릿 탐지를 건너뛸 수 있습니다. 푸시의 모든 커밋에 대한 시크릿 탐지를 건너뛰는 옵션은 기본 시크릿 탐지의 옵션과 동일합니다. 다음 중 하나를 수행합니다:
-
커밋 메시지 중 하나에
[skip secret push protection]을 추가합니다. -
secret_push_protection.skip_all푸시 옵션을 사용합니다.
알려진 문제#
- 푸시가 지연되거나 시간 초과될 수 있습니다. GitGuardian 통합을 사용하면:
푸시가 타사로 전송됩니다.
-
GitLab은 GitGuardian과의 연결 또는 GitGuardian 프로세스를 제어할 수 없습니다.
-
GitGuardian API 제한으로 인해 통합은 1 MB를 초과하는 파일을 무시합니다. 스캔되지 않습니다.
-
푸시된 파일의 이름이 256자를 초과하면 푸시가 실패합니다.
-
자세한 내용은 GitGuardian API 문서를 참조하세요.
아래의 문제 해결 단계에서는 이러한 문제 중 일부를 완화하는 방법을 보여줍니다.
문제 해결#
GitGuardian 통합을 사용할 때 다음 문제가 발생할 수 있습니다.
500 HTTP 오류#
HTTP 500 오류가 발생할 수 있습니다.
이 문제는 변경된 파일이 많은 커밋에 대한 요청이 시간 초과될 때 발생합니다.
커밋에서 50개 이상의 파일을 변경할 때 이 문제가 발생하면:
-
변경 사항을 더 작은 커밋으로 분할합니다.
-
더 작은 커밋을 하나씩 푸시합니다.
오류: Filename: ensure this value has at most 256 characters#
Filename: ensure this value has at most 256 characters라는 HTTP 400 오류가 발생할 수 있습니다.
이 문제는 해당 커밋에서 푸시하는 변경된 파일 중 일부의 파일 이름(경로가 아닌)이 256자를 초과할 때 발생합니다.
해결 방법은 가능하면 파일 이름을 줄이는 것입니다. 예를 들어 프레임워크에 의해 자동으로 생성되어 파일 이름을 줄일 수 없는 경우, 통합을 비활성화하고 다시 푸시해 보세요. 필요한 경우 나중에 통합을 다시 활성화하는 것을 잊지 마세요.