Secure Steady
シークレット管理 - シークレット管理 の使い方・オプション・サンプル

シークレット管理 - シークレット管理

API キー、パスワード、証明書などの機密情報を安全に保管・配布・ローテーションする仕組み。ハードコーディングの防止が基本。

概念図

シークレット管理 diagram

実例

HashiCorp Vault にシークレットを保存・取得

bash
vault kv put secret/myapp/db username=admin password=s3cret
vault kv get secret/myapp/db

AWS Secrets Manager にシークレットを保存

bash
aws secretsmanager create-secret --name prod/db-password --secret-string "s3cret"

シークレット管理の必要性と手法

シークレットのハードコーディングや平文保存は、情報漏洩の主要な原因の一つです。

  • ハードコーディングの危険性: ソースコードに API キーやパスワードを直接記述すると、Git リポジトリ経由で漏洩するリスクがある
  • 環境変数の限界: 環境変数はプロセス一覧やログに表示される場合があり、十分な保護とは言えない

シークレット管理ツール:

  • HashiCorp Vault: 動的シークレット生成、自動ローテーション、監査ログを備えたシークレット管理の標準
  • AWS Secrets Manager / Parameter Store: AWS 環境でのマネージドシークレット管理
  • Azure Key Vault / GCP Secret Manager: 各クラウドプロバイダーのマネージドサービス
  • Kubernetes Secrets: Base64 エンコードのみで暗号化されないため、Sealed Secrets や External Secrets Operator との併用を推奨

ベストプラクティス

  • シークレットの自動ローテーション: パスワードや API キーを定期的に自動更新する仕組みを構築する
  • 最小権限のアクセス制御: シークレットへのアクセスを必要なサービス・ユーザーに限定する
  • 監査ログ: シークレットへのアクセスをすべて記録し、不正なアクセスを検知する
  • Git リポジトリのスキャン: git-secrets, truffleHog, gitleaks 等でリポジトリ内のシークレットを検出する
  • CI/CD パイプラインのシークレット管理: GitHub Actions Secrets, GitLab CI Variables 等を使い、パイプライン内でシークレットを安全に扱う
  • .gitignore の設定: .env, credentials.json 等のファイルを Git の追跡対象から除外する

関連トピック