GitGuardian
GitLab v19.5Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
요약
GitGuardian은 소스 코드 리포지터리에서 API 키, 비밀번호, 토큰 같은 하드코딩된 자격 증명을 찾아내는 시크릿 탐지 서비스입니다. GitGuardian 정책에 따라 커밋을 거부하도록 GitLab을 구성할 수 있습니다.
히스토리
- GitLab 16.9에서
git_guardian_integration이라는 기능 플래그와 함께 도입되었습니다. 기본적으로 활성화되어 있습니다. GitLab.com에서는 비활성화되어 있습니다. - GitLab 17.7에서 GitLab.com에서 활성화되었습니다.
- GitLab 17.8에서 일반 공개되었습니다. 기능 플래그
git_guardian_integration은 제거되었습니다. api_url파라미터는 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 체크박스를 선택합니다. 이 통합에 필요한 유일한 범위입니다.
- API 토큰에 용도를 알 수 있는 의미 있는 이름을 지정합니다.
예를 들어
- 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)를 사용합니다. - GitGuardian EU SaaS는
-
API token에 GitGuardian에서 복사한 토큰 값을 붙여 넣습니다.
-
선택 사항. Test settings를 선택합니다.
-
Save changes를 선택합니다.
이제 GitLab은 GitGuardian 정책에 따라 커밋을 거부할 준비가 되었습니다.
시크릿 탐지 건너뛰기#
히스토리
- 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자를 초과할 때 발생합니다.
가능하면 파일 이름을 줄이는 것이 해결 방법입니다. 예를 들어 프레임워크가 자동으로 생성한 이름이라 줄일 수 없다면, 통합을 비활성화하고 다시 푸시합니다. 필요하다면 그 뒤에 통합을 다시 활성화합니다.