APIキー・トークン漏えいを防ぐ仕組みとは?GitHubからCI/CDまで実践Secrets管理

- Secrets管理
- APIキー漏えい
- GitHub Secret Scanning
- CI/CDセキュリティ
- git-secrets
「GitHubにAWSのアクセスキーをpushしてしまった」
「CIの環境変数がログに出ていた」
「退職者が使っていたAPIキーが今も有効だった」
よく「うっかりミス」として片付けられますが、本質は違います。
“漏れないようにする"だけでは防げない。漏れる前提で仕組みを作ることが重要です。
1. Secretsが漏れる4つの経路
経路①:Gitリポジトリへの誤commit
最も多い経路です。.envファイルをgitignoreに追加し忘れる、ハードコードしてしまう、などが典型。
特に怖いのは:一度commitされたSecretsは、削除してもgit historyに残ること。
経路②:CI/CDのログ出力
GitHub ActionsやJenkins等でSecretsを使う際、コマンドの出力がログにそのまま残ることがあります。
bash
# 危険な例
echo "Connecting with token: $API_KEY"
curl -H "Authorization: Bearer $API_KEY" ...経路③:コンテナイメージへの埋め込み
Dockerfileでビルド時にSecretsを渡し、そのままイメージに含めてしまうケース。
経路④:Slackやドキュメントへの貼り付け
「急いで共有した」がために、SlackのDMやNotionにAPIキーを直貼りしてしまうケース。
2. 予防:Secretsを"コードに置かない"仕組み
Git pre-commit hookによる検出
commitの前に自動スキャンするツールを導入します。
代表的なツール:
- git-secrets(AWS製)
- detect-secrets(Yelp製)
- truffleHog
bash
# detect-secretsのセットアップ例
pip install detect-secrets
detect-secrets scan > .secrets.baseline
# .git/hooks/pre-commitに追加Secrets管理ツールの利用
コードにSecretsを書かず、専用の管理ツールから取得する設計にします。
代表的なサービス:
- AWS Secrets Manager
- Azure Key Vault
- HashiCorp Vault
- GCP Secret Manager
3. 検知:漏れてしまったSecretsを素早く発見する
予防だけでは不十分です。漏れた場合の早期発見の仕組みも必要です。
GitHubのSecret Scanning
GitHubにはSecret Scanningという機能があり、pushされたコードに含まれるSecrets(AWSキー、GitHub PAT等)を自動で検出・通知します。
プライベートリポジトリでも有効化を推奨します(GitHub Advanced Securityが必要)。
定期的なリポジトリスキャン
既存のコードベースに過去のSecretsが残っていないかを定期スキャンします。
bash
# truffleHogによるリポジトリ全体スキャン
trufflehog git https://github.com/your-org/your-repo.git4. ローテーション:漏れたら"すぐ無効化"できる体制を
Secretsが漏れたときに最も重要なのは、発見後の対応速度です。
体制整備のポイント:
- 全SecretsのInventory(どのSecretsが、どのシステムで使われているか)を管理する
- ローテーション手順書を事前に作成しておく
- 定期自動ローテーション(90日等)を設定する
- 緊急時の無効化手順(手動・自動)を演習しておく
5. CI/CDでのSecrets管理
GitHub Actionsでのベストプラクティス:
yaml
# 良い例:SecretsはGitHub Secretsから参照
steps:
- name: Deploy
env:
API_KEY: ${{ secrets.API_KEY }}
run: |
# ログに出力しない
deploy.sh注意点:
echoでSecrets変数を出力しない- デバッグモード(ACTIONS_STEP_DEBUG)を本番CIで有効にしない
- SecretsのスコープはJob単位で最小化する
6. Colorkrew Securityの考え方
Secrets管理の仕組みは「導入して終わり」ではなく、Inventory整備・定期ローテーション・インシデント時の即時無効化まで、継続的な運用設計が求められます。「自社の環境に合った管理方法がわからない」「既存のリポジトリに漏えいリスクがないか確認したい」という場合は、専門家による設計レビューが最も確実で早い解決策です。
Colorkrew Securityでは、Secrets管理を含むDevSecOpsの設計支援・セキュリティレビューを行っています。まずはお気軽にお問い合わせください。



