コンテンツにスキップ

シークレット管理

文書基準: 2026年8月

アプリケーションはDBパスワード、APIキー、証明書などの機密情報(シークレット)を使用します。これらをソースコードや環境変数にハードコーディングすると、漏洩リスクが大きくなります。シークレット管理サービスは機密情報を暗号化して一元管理し、アプリケーションが実行時に安全に取得できるようにします。

  • 漏洩防止 — Gitにコミットされたパスワード、ログに露出したAPIキーなどの事故を防ぎます。
  • 自動ローテーション (Rotation) — パスワードを定期的に自動変更し、漏洩時の被害を最小化します。
  • 監査 (Audit) — 誰がいつどのシークレットにアクセスしたかを記録します。
  • 一元管理 — 複数のサービスが使用するシークレットを一箇所で管理します。
ベンダー 製品 備考
AWS Secrets Manager 自動ローテーション(RDS、Redshiftなどネイティブ連携)。クロスアカウント共有
AWS SSM Parameter Store シンプルなキー・バリュー保存。無料ティアあり。自動ローテーションは限定的
Azure Key Vault (Secrets) シークレット+鍵+証明書の統合管理
Google Cloud Secret Manager バージョン管理を内蔵。IAMでアクセス制御
OCI OCI Vault (Secrets) シークレット保存+バージョン管理。IAMポリシーでアクセス制御

シークレットを暗号化する鍵自体を管理するサービスです。

ベンダー 製品 備考
AWS KMS (Key Management Service) ベンダー管理鍵 / 顧客管理鍵(CMK) / BYOK
Azure Key Vault (Keys) HSM対応。Managed HSMで専用HSM
Google Cloud Cloud KMS HSM、外部鍵管理(EKM)対応
OCI OCI Vault (Keys) ソフトウェア鍵 / HSM鍵。BYOK対応
ベンダー 製品 備考
AWS ACM (Certificate Manager) 無料の公的証明書発行。ALB/CloudFront自動連携
Azure App Service Certificates / Key Vault Key Vaultで証明書のライフサイクル管理
Google Cloud Certificate Manager 無料のマネージド証明書。Load Balancer自動連携
OCI OCI Certificates 証明書発行およびライフサイクル管理。Load Balancer連携

AWS — Secrets ManagerとParameter Storeの2つの選択肢があります。自動ローテーションが必要ならSecrets Manager、単純な設定値の保存であればParameter Store(無料)が適しています。2025〜2026年にManaged External Secrets機能が追加され、Salesforce、MongoDB Atlas、Confluent Cloud、Jenkinsなどサードパーティの認証情報も標準化された管理と自動ローテーションに対応しています。

Azure — Key Vault一つでシークレット、暗号化鍵、証明書をすべて管理します。サービスが分かれていないため、管理がシンプルです。

Google Cloud — Secret Managerがバージョン管理を標準で提供しており、シークレットの変更履歴を追跡し、以前のバージョンへロールバックできます。ローテーションスケジュールもネイティブで設定可能で、指定周期ごとにPub/Sub通知を送信し、Cloud Functionでローテーションを実行するパターンを容易に実装できます。

OCI — Vault一つでシークレットと暗号化鍵を統合管理し、HSM鍵とソフトウェア鍵を選択できます。IAMポリシーによってきめ細かなアクセス制御が可能です。

暗号化鍵を誰が生成・管理するかによって、3つのモデルがあります。

モデル 説明 特徴
ベンダー管理鍵 (Vendor-Managed) ベンダーが鍵の生成・管理・ローテーションを行う デフォルト。ユーザー側の関与が最小限
顧客管理鍵 (CMK/CMEK) ユーザーがKMSで鍵を生成・管理 鍵ポリシー、ローテーション周期、アクセス制御をユーザーが直接管理
BYOK (Bring Your Own Key) ユーザーが外部で鍵を用意しKMSにアップロード 鍵の原本を外部に保管。規制要件への対応
EKM/HYOK (External Key Management) 外部HSMに鍵を置き、KMSは参照のみ 鍵がクラウドに保存されない。最も厳格な統制

シークレットの自動ローテーション (Rotation)

Section titled “シークレットの自動ローテーション (Rotation)”

シークレットを定期的に自動変更することで、漏洩時の被害を最小化できます。

ベンダー 自動ローテーション対応
AWS Secrets Manager RDS、DocumentDB、Redshiftのネイティブローテーション。Lambdaでカスタムローテーション関数を作成可能。Managed External Secretsによりサードパーティ(Salesforce、MongoDB Atlas、Confluent Cloud、Jenkinsなど)の認証情報も自動ローテーション対応
Azure Key Vault 証明書の自動更新。シークレットはEvent Grid + Function Appでローテーションを実装
Google Cloud Secret Manager ローテーションスケジュールをネイティブサポート — ローテーション周期と時間を設定すると、Pub/Subトピックへ通知を送信。Cloud Functionがサブスクライブして実際のローテーションロジックを実行するパターン
OCI Vault Secret Rotation対応 (Autonomous DB、MySQLネイティブ)。Functionでカスタムローテーション

外部シークレットストアとの連携

Section titled “外部シークレットストアとの連携”

HashiCorp Vault、CyberArkなど外部のシークレット管理ソリューションを使用する場合、クラウドネイティブサービスと統合できます。

統合方式 説明
External Secrets Operator クラウドベンダーのシークレットストア(AWS Secrets Manager、Azure Key Vaultなど)のシークレットをKubernetes Secretへ自動同期。v1.x GAに到達し本番安定性を確保
HashiCorp Vault Dynamic Secrets VaultがAWS IAM、DB認証情報を動的に生成
CSI Secret Store Driver Kubernetes Podにシークレットをファイルとしてマウント

構成/プロパティ管理 (Configuration Management)

Section titled “構成/プロパティ管理 (Configuration Management)”

シークレット(パスワード、APIキー)とは異なり、構成値(feature flag、エンドポイントURL、タイムアウト値など)は機密ではありませんが、中央で管理し実行時に動的に変更する必要があります。各ベンダーはシークレット管理とは別に(または統合して)構成管理サービスを提供しています。

区分 シークレット 構成値
DBパスワード、APIキー、証明書 Feature flag、エンドポイントURL、タイムアウト、環境別設定
暗号化 必須 (保存時+転送時) 任意 (機密性の高い設定は暗号化)
アクセス制御 最小権限、監査必須 チーム/サービス単位
ローテーション周期 定期的な自動ローテーションを推奨 デプロイ/リリース時に変更
保存場所 Secrets Manager / Key Vault Parameter Store / App Configuration
ベンダー サービス 特徴
AWS SSM Parameter Store 階層型キー・バリュー保存。String/StringList/SecureStringタイプ。無料の標準ティア (10,000件)。高度なティアはポリシーベースの期限切れ/通知
AWS AWS AppConfig Feature flag+構成デプロイ。段階的ロールアウト、検証後デプロイ、自動ロールバック
Azure Azure App Configuration 中央構成ストア。Feature flagを内蔵。Key Vault参照でシークレット連携。ラベルで環境別に分離
Google Cloud Runtime Configurator (レガシー) / Firebase Remote Config Runtime Configuratorは制限的。サーバーアプリはSecret Managerに機密でない値も保存するパターンが一般的
OCI OCI Resource Manager Variables / Vault 専用の構成サービスなし。Vaultに機密でない値も保存するか、Object Storage+アプリロジックで実装
  • 環境別分離dev/db-endpointprod/db-endpointのようにパスまたはラベルで環境を区別
  • Feature flag — コードデプロイなしで機能をON/OFF。AWS AppConfig、Azure App Configurationがネイティブ対応
  • 動的リロード — 構成変更時にアプリケーションを再起動せずに反映。ポーリングまたはイベントベース
  • シークレット参照 — 構成サービスにシークレット値を直接保存せず、Secrets Manager/Key VaultのARN/URIを参照
  • シークレットのハードコーディング — ソースコードや設定ファイルにパスワードやAPIキーを直接記載すると、Git履歴に永久に残り漏洩リスクが大きくなります。
  • ローテーションなしで永続使用 — シークレットを一度生成した後にローテーションしないと、漏洩時の被害範囲が際限なく拡大します。
  • 環境変数への直接保存 — シークレットを環境変数に平文で保存すると、プロセス一覧、ログ、クラッシュダンプに露出する可能性があります。シークレットストアから実行時に取得してください。
  • すべてのシークレットを専用ストア(Secrets Manager、Key Vaultなど)で管理しているか
  • 自動ローテーション(Rotation)を設定しているか
  • pre-commit hookでシークレットのコミットを防止しているか (git-secrets、detect-secretsなど)
  • シークレットアクセスの監査ログを有効化したか