
Git 후크 기반 비밀 스캐너로, 전송 중인 변경 세트에서 토큰, 비밀번호, 개인 키를 탐지하여 민감한 데이터가 리포지토리에 커밋되거나 푸시되는 것을 방지합니다.
커밋 전에 비밀 정보가 체크인되는 것을 탐지하고 방지하는 도구
Talisman은 git 변경 집합을 스캔하여 잠재적인 비밀 정보나 민감한 정보가 개발자 워크스테이션을 벗어나지 않도록 보장하는 도구입니다.
의심스러워 보이는 항목(예: 잠재적인 SSH 키, 인증 토큰, 개인 키 등)이 있는지 나가는 변경 집합을 검증합니다.
Talisman은 MAC OSX, Linux 및 Windows를 지원합니다.
Talisman은 다음 방법 중 하나로 설치하여 사용할 수 있습니다:
Talisman은 git 저장소에 pre-commit 또는 pre-push 후크로 설정할 수 있습니다.
아래 지침을 확인하십시오.
면책: git 저장소에 강제 푸시(forced push)를 통해 비밀 정보가 침투하는 것은 Talisman이 탐지할 수 없습니다. 강제 푸시는 그 자체로 악명 높은 방법으로 간주되며, git 저장소 관리자가 이러한 활동을 승인하기 위해 적절한 조치를 적용할 것을 권장합니다.
Talisman을 PATH에 설치하여 git 후크 프레임워크 및 스크립트에서 사용할 수 있도록 하는 것을 권장합니다. 릴리즈 페이지에서 시스템에 맞는 올바른 바이너리를 선택하거나 설치 스크립트를 실행하십시오:```bash bash -c "$(curl --silent https://raw.githubusercontent.com/thoughtworks/talisman/main/install.sh)"
또는 환경 변수 `INSTALL_LOCATION`을 설정하여 바이너리의 사용자 지정 위치를 지정하십시오:```bash
INSTALL_LOCATION=/usr/local/bin bash -c "$(curl --silent https://raw.githubusercontent.com/thoughtworks/talisman/main/install.sh)"
또는 환경 변수 VERSION을 릴리스된 태그로 설정하여 특정 버전을 설치할 수 있습니다::```bash
VERSION=v1.36.0 bash -c "$(curl --silent https://raw.githubusercontent.com/thoughtworks/talisman/main/install.sh)"
또는 Linux의 linuxbrew와 macOS의 homebrew를 사용하여 터미널에서 다음 명령을 실행하십시오:```bash
brew install talisman
우리는 Talisman을 pre-commit git hook 템플릿으로 설치하는 스크립트를 제공합니다. 이렇게 하면 Talisman이 기존 git 저장소뿐만 아니라 'init' 또는 'clone'하는 모든 새 저장소에도 존재하게 됩니다.
pre-commit 후크로: ``` bash -c "$(curl --silent https://raw.githubusercontent.com/thoughtworks/talisman/main/global_install_scripts/install.bash)"
또는
사전 푸시 훅으로: ```
bash -c "$(curl --silent https://raw.githubusercontent.com/thoughtworks/talisman/main/global_install_scripts/install.bash)" -- pre-push
$PATH에 TALISMAN_HOME이 설정되어 있지 않은 경우, 설정할 적절한 위치를 묻는 창이 나타납니다. 프로필 소스를 설정할 머신에서 옵션 번호를 선택하세요.경로 파일에 source를 실행하거나 터미널을 다시 시작하는 것을 잊지 마세요.
나중에 $PATH를 설정하기로 선택한 경우, TALISMAN_HOME=$HOME/.talisman/bin을 경로에 내보내기(export)하세요.
SEARCH_ROOT 환경 변수를 기본 디렉토리 경로로 설정할 수 있습니다.전역적으로 talisman을 훅으로 설치하면 기존 훅을 덮어쓰지 않습니다. 설치 스크립트가 기존 훅을 발견하면 콘솔에 해당 사실만 표시합니다. 여러 훅을 실행하려면 pre-commit이나 husky와 같은 훅 프레임워크를 사용하는 것이 좋습니다. 이 지침은 talisman 실행 파일이 시스템 경로에 설치되어 있다고 가정합니다.
pre-commit을 사용하여 Talisman과 함께 기존 훅을 관리하세요. .pre-commit-hooks.yaml에서 pre-commit-hooks를 참조하여 .pre-commit-config.yaml에 추가하세요:```yaml
### Husky
[husky](https://typicode.github.io/husky)는 hooks 관리를 위한 npm 모듈입니다.
`package.json`의 husky pre-commit 설정에 다음 줄을 추가하세요:```
talisman --githook pre-commit
talisman 실행 파일이 설치되면 Git 저장소에 독립형 pre-commit 훅을 구성할 수 있습니다:```bash cd my-git-project echo "talisman -g pre-commit" >> .git/hooks/pre-commit chmod +x .git/hooks/pre-commit
# 업그레이드
v0.4.4 릴리스부터 Talisman은 <b>자동으로</b> 바이너리를 최신 릴리스로 업데이트합니다. (설정된 대로) 훅이 호출될 때(pre-commit/pre-push 시점) 업데이트가 이루어집니다. 따라서 그냥 편안히 앉아서, 별다른 노력 없이 최신 Talisman을 계속 사용하세요.
다음 환경 변수를 설정할 수 있습니다:
1. TALISMAN_SKIP_UPGRADE: 자동 업그레이드 확인을 건너뛰려면 true로 설정합니다. 기본값은 false입니다.
2. TALISMAN_UPGRADE_CONNECT_TIMEOUT: 업그레이드가 취소되기 전 최대 연결 시간 초과(초 단위)입니다. 기본값은 10초입니다.
혹시 수동으로 업그레이드해야 하는 경우, 다음 단계를 따르세요:
<br>[권장] Talisman 바이너리와 훅 스크립트를 최신 릴리스로 업데이트:```bash
curl --silent https://raw.githubusercontent.com/thoughtworks/talisman/main/global_install_scripts/update_talisman.bash > /tmp/update_talisman.bash && /bin/bash /tmp/update_talisman.bash
Talisman 바이너리만 업데이트하려면 다음을 실행하세요:```bash curl --silent https://raw.githubusercontent.com/thoughtworks/talisman/main/global_install_scripts/update_talisman.bash > /tmp/update_talisman.bash && /bin/bash /tmp/update_talisman.bash talisman-binary
# Talisman 작동 모습
설치가 성공적으로 완료된 후, Talisman은 각 커밋 또는 푸시 전에 (설치 시 선택한 대로) 자동으로 명백한 비밀 정보를 검사합니다. 보안 위반이 감지되면 Talisman은 오류에 대한 상세 보고서를 표시합니다:```bash
$ git push
Talisman Report:
+-----------------+-------------------------------------------------------------------------------+
| FILE | ERRORS |
+-----------------+-------------------------------------------------------------------------------+
| danger.pem | The file name "danger.pem" |
| | failed checks against the |
| | pattern ^.+\.pem$ |
+-----------------+-------------------------------------------------------------------------------+
| danger.pem | Expected file to not contain hex encoded texts such as: |
| | awsSecretKey=c64e8c79aacf5ddb02f1274db2d973f363f4f553ab1692d8d203b4cc09692f79 |
+-----------------+-------------------------------------------------------------------------------+
위 예시에서, danger.pem 파일이 다음 이유들로 인해 보안 위반으로 플래그되었습니다: