概要
ローカルで開発をする時、サーバ、GitHub
、AWS
などの秘密キー(Secrets)
やCredentials
を使うことになります。この時、間違ってこのSecrets
やCredentials
をコミット(Commit)してしまうと、セキュリティに非常に脆弱になります。
今回のブログポストではGitHub Actions
またはGitLab CI
でTrufflehog
を実行して、コミット(Commit)にSecrets
やCredentials
が含まれているか確認する方法について説明します。
TruffleHog
TruffleHog
は700
個以上の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)にSecrets
やCredentials
が含まれているか確認することができます。.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
を実行して、Secrets
やCredentials
が含まれているか確認することができます。
GitLab CI
GitLab CI
でTrufflehog
を実行して、コミット(Commit)にSecrets
やCredentials
が含まれているか確認することができます。.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
を実行して、Secrets
やCredentials
が含まれているか確認することができます。
完了
これでTrufflehog
を使ってコミット(Commit)にSecrets
やCredentials
が含まれているか確認する方法について見てみました。またGitHub Actions
やGitLab CI
でTrufflehog
を実行する方法についても説明しました。
皆さんもGitHub Actions
やGitLab CI
にTrufflehog
を適用してコミット(Commit)にSecrets
やCredentials
が含まれているか確認してみてください。
私のブログが役に立ちましたか?下にコメントを残してください。それは私にとって大きな大きな力になります!
アプリ広報
Deku
が開発したアプリを使ってみてください。Deku
が開発したアプリはFlutterで開発されています。興味がある方はアプリをダウンロードしてアプリを使ってくれると本当に助かります。