Azure Key Vaultシークレットをセキュリティで保護する

Azure Key Vaultシークレットには、パスワード、接続文字列、アクセス キーなどの機密性の高いアプリケーション資格情報が格納されます。 この記事では、シークレット管理に固有のセキュリティに関する推奨事項について説明します。

この記事では、Key Vault シークレットに固有のセキュリティ プラクティスについて説明します。 ネットワーク セキュリティ、ID とアクセス管理、コンテナー アーキテクチャなどの包括的なKey Vault セキュリティ ガイダンスについては、Azure Key Vaultを参照してください。

シークレットとして格納する内容

Azure Key Vault シークレットは、サービスまたはアプリケーションの資格情報を格納するために設計されています。 次の種類のデータをシークレットとして格納します。

  • アプリケーション資格情報: クライアント アプリケーション シークレット、API キー、サービス プリンシパルの資格情報
  • 接続文字列: データベース接続文字列、ストレージ アカウント接続文字列
  • パスワード: サービス パスワード、アプリケーション パスワード
  • アクセス キー: Redis Cache キー、Azure Event Hubs キー、Azure Cosmos DB キー、Azure Storage キー
  • SSH キー: セキュリティで保護されたシェル アクセス用のプライベート SSH キー

Important

構成データはKey Vaultに格納しないでください。 IP アドレス、サービス名、機能フラグ、およびその他の構成設定は、Key VaultではなくAzure App Configurationに格納する必要があります。 Key Vaultは、一般的な構成管理ではなく、暗号化シークレット用に最適化されています。

シークレットの詳細については、「Azure Key Vault シークレットについてを参照してください。

シークレットのストレージ形式

シークレットをKey Vaultに格納する場合は、次の書式設定のベスト プラクティスに従います。

  • 複合資格情報を適切に格納する: 複数のコンポーネント (ユーザー名やパスワードなど) を含む資格情報の場合は、次のように格納します。

    • 適切に書式設定された接続文字列、または
    • 資格情報コンポーネントを含む JSON オブジェクト
  • メタデータにタグを使用する: ローテーション スケジュール、有効期限、所有権などの管理情報をシークレット値自体ではなくシークレット タグに格納します。

  • シークレット サイズを最小限に抑える: シークレット値を簡潔に保ちます。 大きなペイロードは、暗号化用のKey Vault キーとストレージ アクセス トークン用のKey Vault シークレットを使用して、暗号化を使用してAzure Storageに格納する必要があります。

シークレットのローテーション

アプリケーション メモリまたは構成ファイルに格納されているシークレットは、アプリケーションのライフサイクル全体にわたって保持され、露出リスクが高まります。 侵害リスクを最小限に抑えるために、通常のシークレット ローテーションを実装します。

  • シークレットを定期的にローテーションする: 組織のセキュリティ ポリシーと資格情報の機密性に基づいてシークレットを頻繁にローテーションします。 ローテーション間隔が短いほど (60 日から 90 日など)、侵害されたシークレットによる露出リスクが軽減されます。
  • 自動回転: Azure Key Vaultの回転機能を使用して回転プロセスを自動化する
  • デュアル資格情報を使用する: ダウンタイムをゼロにしてローテーションする場合は、2 セットの認証資格情報を使用してリソースを実装します

シークレットのローテーションの詳細については、次を参照してください。

シークレットキャッシュとパフォーマンス

Key Vaultは、不正使用を防ぐためにサービスの制限を適用します。 セキュリティを維持しながらシークレットアクセスを最適化するには:

  • メモリ内のキャッシュ シークレット: アプリケーションにシークレットをキャッシュして、Key Vault API 呼び出しを減らし、調整を回避します。 キャッシュされた値を可能な限り再利用し、シークレットがローテーションされたときに更新します。 詳細については、Azure Key Vault調整ガイダンスを参照してください。
  • 再試行ロジックを実装する: 指数バックオフ再試行ロジックを使用して一時的な障害と調整を処理する
  • ローテーション時に更新: シークレットがローテーションされたときにキャッシュされた値を更新して、アプリケーションで現在の資格情報が使用されるようにします

機密情報の監視

監視を有効にしてシークレット アクセス パターンを追跡し、潜在的なセキュリティの問題を検出します。

  • 有効なKey Vaultログ記録: すべてのシークレット アクセス操作をログに記録して、未承認のアクセス試行を検出します。 Azure Key Vaultログ記録を参照してください
  • Event Grid 通知を設定する: 自動化されたワークフローのシークレット ライフサイクル イベント (作成、更新、期限切れ、有効期限間近) を監視します。 Event Grid ソースとしてAzure Key Vault
  • 構成アラート: 疑わしいアクセス パターンまたは認証試行の失敗に対するAzure Monitorアラートを設定します。 Azure Key Vault の監視とアラートを参照してください。
  • アクセスを定期的に確認する: シークレットへのアクセス権を持つユーザーを定期的に監査し、不要なアクセス許可を削除する

次のステップ