[Trufflehog] Secrets와 Credentials 검사

[Trufflehog] Secrets와 Credentials 검사

2023-08-31 hit count image

Trufflehog을 사용하여 코드에 Secrets와 Credentials가 포함되어 있는지 검사하는 방법에 대해서 알아보도록 하겠습니다.

개요

로컬에서 개발을 하다보면 서버, GitHub, AWS 등의 비밀 키(Secrets)Credentials을 사용하게 됩니다. 이때, 실수로 이 SecretsCredentials를 커밋(Commit)하게 되면 보안에 매우 취약해지게 됩니다.

이번 블로그 포스트에서는 GitHub Actions 또는 GitLab CI에서 Trufflehog을 실행하여 커밋(Commit)에 SecretsCredentials가 포함되었는지 확인하는 방법에 대해서 알아보도록 하겠습니다.

TruffleHog

TruffleHog700개 이상의 Secrets / Credentials 검사기를 통해 코드에 Secrets / Credentials가 포함되어 있는지 확인하는 도구입니다.

TruffleHog 설치

TruffleHog는 다음과 같이 다양한 방법으로 설치할 수 있습니다.

# 1. MacOS users
brew install trufflesecurity/trufflehog/trufflehog

# 2. Docker
docker run --rm -it -v "$PWD:/pwd" trufflesecurity/trufflehog:latest github --repo https://github.com/trufflesecurity/test_keys

# 3. Docker for M1 and M2 Mac
docker run --platform linux/arm64 --rm -it -v "$PWD:/pwd" trufflesecurity/trufflehog:latest github --repo https://github.com/trufflesecurity/test_keys

# 4. Binary releases
Download and unpack from https://github.com/trufflesecurity/trufflehog/releases

# 5. Compile from source
git clone https://github.com/trufflesecurity/trufflehog.git
cd trufflehog; go install

TruffleHog 실행

TruffleHog는 다음과 같이 다양한 방법으로 실행할 수 있습니다.

# 1. Scan a repo for only verified secrets
trufflehog git https://github.com/trufflesecurity/test_keys --only-verified

# 2. Scan a GitHub Org for only verified secrets
trufflehog github --org=trufflesecurity --only-verified

# 3. Scan a GitHub Repo for only verified keys and get JSON output
trufflehog git https://github.com/trufflesecurity/test_keys --only-verified --json

# 4. Scan an S3 bucket for verified keys
trufflehog s3 --bucket=<bucket name> --only-verified

# 5. Scan a Github Repo using SSH authentication in docker
docker run --rm -v "$HOME/.ssh:/root/.ssh:ro" trufflesecurity/trufflehog:latest git ssh://github.com/trufflesecurity/test_keys

# 6. Scan individual files or directories
trufflehog filesystem path/to/file1.txt path/to/file2.txt path/to/dir

# 7. Scan GCS buckets for verified secrets.
trufflehog gcs --project-id=<project-ID> --cloud-environment --only-verified

GitHub Acionts

GitHub Actions에서 Trufflehog을 실행하여, 커밋(Commit)에 SecretsCredentials가 포함되었는지 확인할 수 있습니다. .github/workflows/scan_secrets.yml 파일을 생성하고 다음과 같이 수정합니다.


name: Scan secrets
on:
  pull_request:
    branches:
      - main
jobs:
  ScanSecrets:
    name: Scan secrets
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Scan secrets
        uses: trufflesecurity/trufflehog@main
        with:
          path: ./
          base: ${{ github.event.repository.default_branch }}
          extra_args: --only-verified

이렇게 GitHub Actions를 생성하면, Pull Request를 생성할 때마다 Trufflehog을 실행하여 SecretsCredentials가 포함되었는지 확인할 수 있습니다.

GitLab CI

GitLab CI에서 Trufflehog을 실행하여, 커밋(Commit)에 SecretsCredentials가 포함되었는지 확인할 수 있습니다. .gitlab-ci.yml 파일을 생성하고 다음과 같이 수정합니다.

...
scan_secrets:
  stage: scan
  tags:
    - docker
  image: golang:latest
  script:
    - git clone https://github.com/trufflesecurity/trufflehog.git
    - cd trufflehog; go install
    - cd ..
    - trufflehog git file://. --only-verified --fail --no-update --since-commit=main
  only:
    refs:
      - merge_requests
...

이렇게 GitLab CI를 생성하면, Pull Request를 생성할 때마다 Trufflehog을 실행하여 SecretsCredentials가 포함되었는지 확인할 수 있습니다.

완료

이것으로 Trufflehog를 사용하여 커밋(Commit)에 SecretsCredencials이 포함되었는지 확인하는 방법에 대해서 알아보았습니다. 또한 GitHub ActionsGitLab CI에서 Trufflehog를 실행하는 방법에 대해서도 알아보았습니다.

여러분도 GitHub ActionsGitLab CITrufflehog를 적용하여 커밋(Commit)에 SecretsCredencials이 포함되었는지 확인해 보시기 바랍니다.

제 블로그가 도움이 되셨나요? 하단의 댓글을 달아주시면 저에게 큰 힘이 됩니다!

앱 홍보

책 홍보

스무디 한 잔 마시며 끝내는 React Native 책을 출판한지 벌써 2년이 다되었네요.
이번에도 좋은 기회가 있어서 스무디 한 잔 마시며 끝내는 리액트 + TDD 책을 출판하게 되었습니다.

아래 링크를 통해 제가 쓴 책을 구매하실 수 있습니다.
많은 분들에게 도움이 되면 좋겠네요.

스무디 한 잔 마시며 끝내는 React Native, 비제이퍼블릭
스무디 한 잔 마시며 끝내는 리액트 + TDD, 비제이퍼블릭
[심통]현장에서 바로 써먹는 리액트 with 타입스크립트 : 리액트와 스토리북으로 배우는 컴포넌트 주도 개발, 심통
Posts