0Pricing
Cyber Security Academy · レッスン

シークレットスキャンとハードコードされた認証情報

git-secrets、gitleaks、pre-commitフックを使って、APIキーやパスワードがコミットされるのを防ぎます。

「シークレットスキャンとハードコードされた認証情報」はCoddyKit上の無料Cyber Security Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCyber Security Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Cyber Security Academyコースには全4レッスンが含まれています。

ハードコードされたシークレットの問題

開発者は、APIキー、パスワード、秘密鍵、トークンを誤ってソースコードリポジトリにコミットしてしまいます。いったんgitの履歴に入ると、削除した後も残り続けます。公開リポジトリは、プッシュされてから数秒以内にボットによって収集されます。

コミットされる情報

リポジトリでよく見つかるシークレット:

  • AWSアクセスキー(AKIA...)
  • GitHubのパーソナルアクセストークン
  • 設定ファイル内のデータベースパスワード
  • Stripeまたは決済用のAPIキー
  • TLS/SSHの秘密鍵
  • SlackのWebhook URL

防止のためのコミット前フック

そもそもシークレットがgitに到達しないように防止してください。

# Install gitleaks as a pre-commit hook:
pip install pre-commit
# .pre-commit-config.yaml:
repos:
- repo: https://github.com/zricethezav/gitleaks
  rev: v8.18.1
  hooks:
  - id: gitleaks

既存のリポジトリのスキャン

既存のリポジトリをスキャンしてシークレットを検出してください。

# gitleaks: scan entire git history
gitleaks detect --source . --log-opts="--all"

# truffleHog: high-entropy string + regex detection
trufflehog git file://.

# GitHub secret scanning (automatic for public repos)
# Alerts under Security → Secret scanning alerts

GitHub Secret Scanning

GitHubは公開リポジトリを自動的にスキャンし、既知のシークレットパターン(AWSキー、GitHubトークンなど)を検出すると、提供元に通知します。非公開リポジトリでは、GitHub Advanced Securityによってこの機能を拡張できます。AWSなどの提供元は、検出時にキーを自動的に失効させます。

.gitignoreによる解決策(および限界)

.envを.gitignoreに追加すると、誤ったコミットを防止できます。ただし、開発者は他のファイルにシークレットをコミットする可能性があり、ファイルがすでにコミットされている場合は.gitignoreでは対処できません。多層防御として、gitignore、コミット前フック、CIスキャンを組み合わせてください。

環境変数の使用

シークレットをコードに記述してはいけません。実行時に読み込む環境変数を使用してください。

# Python:
import os
api_key = os.environ["API_KEY"]

# Node.js with dotenv (for local dev only):
require("dotenv").config()
const apiKey = process.env.API_KEY

# Never commit .env to git

シークレットマネージャー

本番アプリケーションでは、専用のシークレットマネージャーを使用してください。

  • AWS Secrets Manager— 自動ローテーション、IAMで制御されたアクセス
  • HashiCorp Vault— オープンソース、エンタープライズ対応、多数のバックエンド
  • Azure Key Vault/GCP Secret Manager

シークレットをコードやディスク上の環境変数に保存することはありません。

侵害されたシークレットのローテーション

シークレットが漏洩した場合:

  1. 調査より先に、直ちにシークレットを失効させてください
  2. 不正使用がないかアクセスログを確認してください
  3. 新しいシークレットを生成してください
  4. 古いシークレットを使用しているすべてのシステムを更新してください
  5. git-filter-repoまたはBFG Repo Cleanerを使用して、gitの履歴から削除してください

Gitの履歴からシークレットを削除する

失効させた後、履歴から削除してください。

# BFG Repo Cleaner (faster than filter-branch):
java -jar bfg.jar --delete-files .env repo.git
git reflog expire --expire=now --all
git gc --prune=now --aggressive
git push --force
# Note: force push rewrites history - coordinate with team

CI/CDパイプライン内のシークレット

CI/CDシステムには、独自のシークレット管理機能があります。

  • GitHub Actions:リポジトリまたは組織の設定に保存し、${{ secrets.API_KEY }}としてアクセスします
  • GitLab CI:CI/CD Variables
  • Jenkins:Credentials plugin

ログではシークレットをマスクしてください。デバッグ出力に決して表示しないでください。

クイックチェック:シークレットスキャン

シークレットがリポジトリに入るのを防ぐために、最も効果的な第一の防御策は何ですか。

レッスンのまとめ

gitにハードコードされたシークレットは重大なリスクです。公開リポジトリは数秒以内にボットによって収集されます。防止策は、コミット前フック(gitleaks)とgitignoreです。検出には、truffleHogとGitHub secret scanningを使用します。シークレットは環境変数または専用のシークレットマネージャー(Vault、AWS Secrets Manager)に保存してください。漏洩した場合は直ちにローテーションし、BFG Repo Cleanerでgitの履歴から削除してください。

よくある質問

「シークレットスキャンとハードコードされた認証情報」レッスンは無料ですか?

はい。「シークレットスキャンとハードコードされた認証情報」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Cyber Security Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Cyber Security Academyコースには全4レッスンが含まれています。

「シークレットスキャンとハードコードされた認証情報」で何を学びますか?

git-secrets、gitleaks、pre-commitフックを使って、APIキーやパスワードがコミットされるのを防ぎます。 ブラウザで直接実行するハンズオンコードでCyber Security Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Cyber Security Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのCyber Security Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。

「シークレットスキャンとハードコードされた認証情報」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このCyber Security Academyレッスンでコードを書いて実行できますか?

はい。すべてのCyber Security Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. CI/CDパイプラインにおけるSASTとDAST
  2. ソフトウェア構成分析(SCA)
  3. シークレットスキャンとハードコードされた認証情報
  4. セキュリティチャンピオンと脅威モデリング
← Cyber Security Academyに戻る