「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.git

4. ローテーション:漏れたら"すぐ無効化"できる体制を

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の設計支援・セキュリティレビューを行っています。まずはお気軽にお問い合わせください。