Secret Gate
실제 시크릿을 파악하는 릴리스 게이트: 아무것도 발견되지 않을 때까지 배포하지 않습니다.
- Linux or macOS
- Python 3.9+
- Git hooks
- CI

기능 소개
Secret Gate은 릴리스 zip 파일, 고객용 사본, 오픈소스 푸시, 다음 커밋 등 무엇이든 손에서 떠나기 전에 단 하나의 질문에 답합니다. 여기에 내 비밀 정보가 들어 있는가? Secret Gate은 비밀 정보가 저장된 파일을 읽기 때문에 무엇이 비밀인지 알고 있으며, 그 값을 절대 노출하지 않습니다. 발견 항목은 파일명, 줄 번호, 값의 출처를 알려줍니다.
- 정확한 값. env 파일, JSON 및 YAML 구성 파일,
.netrc및 키 파일에 있는 모든 값을 원본 그대로, base64 인코딩 상태, URL 인코딩 상태로 검색합니다. 평범한 단어처럼 보이는 비밀번호나 알려진 접두사가 없는 내부 토큰도 다른 값과 동일하게 잡아냅니다. - 실행되지 않는 머신의 비밀. 노트북에서 지문을 생성하면 빌드 서버는 값을 보유하지 않고도 해당 값을 찾아냅니다.
- 다른 머신은 자체 비밀과 대조합니다. 파일은 SSH를 통해 각 머신으로 전송되어 스캔된 후 삭제됩니다. 비밀은 이동하지 않으며, 응답할 수 없는 머신이 있으면 릴리스가 차단됩니다.
- 형식, 이름, 노이즈까지. 25가지 토큰 형식, 사용자 이름, 호스트, 도메인, 계정 ID, 사설 IP 주소, 개인 이메일 주소, 전화번호, IBAN, 홈 폴더 경로, 비밀 정보처럼 보이는 이름 옆의 무작위 문자열까지 검출합니다.
- 매번 스스로를 증명합니다. 각 스캔은 모든 종류의 카나리를 심는 것으로 시작합니다. 어떤 검사가든 카나리를 놓치면 스캔이 실행되지 않습니다.
- 이미 작업 중인 곳에서. 폴더, zip 및 tar 아카이브, git pre-commit 또는 pre-push 훅, CI용 종료 코드, JSON 보고서를 지원합니다.
출시된 제품으로 테스트 완료
- 판매 중인 모든 키트: 출시된 8개 아카이브를 빌드 머신의 133개 비밀 값과 노트북의 16,259개 지문으로 스캔했습니다. 모두 5.4초 만에 통과했습니다.
- 릴리스 사본에 심은 실제 비밀은 원본과 base64 인코딩 상태로 모두 잡혔으며, 매번 출처 파일명이 명시되었습니다. 값은 출력이나 보고서 어디에도 나타나지 않았습니다.
- SSH를 통한 원격 스캔은 릴리스를 두 번째 머신의 499개 비밀 값과 대조하여 1.4초 만에 완료했으며, 해당 머신에만 존재하던 사본에 심은 토큰을 찾아냈습니다.
구성품
게이트
4가지 검사, 자가 테스트, 아카이브 및 git 스테이징 스캔, 가독성 있는 보고서와 JSON 보고서.
지문
값 없이 다른 머신에서 스캔하기 위해 한 머신의 비밀 지문을 생성합니다.
원격 스캔
비밀 정보를 보유한 모든 머신에서 동일한 파일을 확인하며, 프로젝트의 규칙도 함께 전송됩니다.
설정 및 CI
비밀 파일 검색기, git 훅, 릴리스 아카이브용 GitHub Actions 워크플로우를 제공합니다.
요구 사항
- Python 3.9 이상을 지원하는 Linux 또는 macOS; pip로 설치할 항목이 없습니다.
- 훅용 Git, 원격 스캔용 SSH.
참고 사항
- 현재 상태의 파일을 읽습니다. 이미 git 히스토리에 있는 비밀 정보는 그대로 남아 있으므로, 해당 비밀 정보를 교체(rotate)해야 합니다.
- 스캔 대상 폴더 내부의 아카이브는 열리지 않습니다. 각 아카이브를 개별적으로 스캔하십시오.
- 지문 파일은 비밀 정보만큼 비공개로 관리하십시오. 16자 이상의 각 값에서 앞의 4자를 포함합니다.
자주 묻는 질문
gitleaks나 TruffleHog와 어떻게 다른가요?
이들은 일반적으로 비밀 정보의 형태를 찾아내며, 그 역할에 충실합니다. Secret Gate는 실제 비밀 정보가 무엇인지도 파악합니다. 자체 비밀 파일을 읽고 정확한 값을 검색하므로, 특징적인 형태가 없는 데이터베이스 비밀번호나 내부 토큰도 잡아냅니다. 출시 직전의 한 순간을 위해 설계되었으며, 실패 시 안전하게 차단(fail closed)됩니다.
비밀 정보가 외부로 전송되나요?
아니요. 값은 스캔을 위해 파일에서 메모리로 읽혀지며, 출력, 저장 또는 전송되지 않습니다. 지문 파일을 생성하는 경우, 해시와 각 값의 앞 4자만 포함됩니다. 원격 스캔은 출시할 파일을 사용자의 머신으로 전송하며, 해당 머신의 비밀 정보는 머신 내부에 그대로 유지됩니다.
오탐(false alarms)은 어떻게 처리하나요?
탐지 결과는 "이 부분을 확인하라"는 의미입니다. 문제가 없다면 프로젝트 설정에서 해당 유형의 탐지에 대한 좁은 범위의 허용 규칙을 추가하십시오. 예를 들어 자체 지원 주소 등이 해당됩니다. 검사를 완전히 끄는 스위치는 없습니다.
git 히스토리를 스캔할 수 있나요?
아니요. 출시할 대상(폴더, 아카이브 또는 다음 커밋)만 확인합니다. 이미 히스토리에 있는 비밀 정보는 해당 비밀 정보를 교체(rotate)해야 합니다.
업데이트됨: