mcpField
A
azure-key-vault

azure-key-vault

github.com/vinayaklattheセキュリティ17977 回インストール1 日前に更新
リポジトリ

azure-key-vault について

Azure のアプリケーションやセキュリティ設計者向けに、Key Vault でのシークレット、キー、証明書の管理方法を案内します。アクセス制御、ネットワーク制限、ライフサイクル設計を扱います。

主な機能

  1. 01Standard Key Vault と Managed HSM の選択
  2. 02RBAC とマネージド ID のアクセス設計
  3. 03論理削除と消去保護の計画
  4. 04プライベートエンドポイントとネットワーク制限
  5. 05キーと証明書のローテーション計画

活用シーン

  1. 01アプリと環境ごとの保管庫分離設計
  2. 02マネージド ID によるアプリのシークレット取得
  3. 03カスタマー管理キーと HSM の計画
  4. 04証明書の期限監視とローテーション設定

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/vinayaklatthe/microsoft-security-skills --skill azure-key-vault

インストール後、Claude Code で/azure-key-vaultを入力して読み込まれたか確認します。

詳細

Azure Key Vault

Azure Key Vault は、シークレット、キー、証明書を一元的かつ安全に保存し、RBAC ベースのアクセス制御、ネットワーク分離、ログ記録、ライフサイクルの自動化を提供します。これにより、アプリケーションに認証情報を埋め込む必要がなくなり、暗号化マテリアルのライフサイクルを管理できます。

使用する場面

アプリケーションのシークレット、暗号化キー(カスタマー マネージド キー/BYOK を含む)、TLS 証明書を管理するときに使用します。このスキルを使って、Standard と Managed HSM のどちらを選ぶか、アクセスをどう設計するか、ローテーションをどう計画するかを決定してください。

次の場合はこのスキルを使用しないでください。 CA の設計(pki-design)、Entra アプリの認証情報のみを扱う場合(entra-id)、PaaS のネットワークトポロジー(azure-network-security-design)。

コンテナーの種類とアクセスモデルを選択する

要件選択肢備考
アプリケーションのシークレット、TLS 証明書、ソフトウェア保護キーStandard Key Vault既定。FIPS 140-2 レベル 2
FIPS 140-3 レベル 3 のキーを使用する単一テナント HSM(CMK、ルート CA)Managed HSM規制対象のワークロード
アプリや環境ごとの分離アプリごと、環境ごとに 1 つのコンテナー影響範囲を限定
実行時にシークレットを読み取るアプリマネージド ID + RBAC(Key Vault Secrets User)コードにシークレットを含めない
構成内の App Service/Functions のシークレットアプリ設定の Key Vault 参照コードの変更は不要
Storage/SQL 用のカスタマー マネージド キーKey Vault(または HSM)のキー + ID の付与個別にローテーション

経験則: アプリごと、環境ごとに 1 つのコンテナー(dev/test/prod)を使用します。複数のアプリでコンテナーを共有しないでください。1 つのアプリの ID が侵害されると、ほかのすべてのアプリのシークレットを読み取られるおそれがあります。Managed HSM は、規制要件または CMK の境界で FIPS 140-3 レベル 3 が必要な場合にのみ使用してください。

アプローチ

  1. データプレーンには Azure RBAC を使用する — コンテナーを RBAC 権限モデル(従来のアクセス ポリシーではなく)に切り替えます。最小権限のロール(Key Vault Secrets User、Key Vault Crypto User)を、ユーザー アカウントではなく マネージド ID に割り当てます。 確認方法:コンテナーの enableRbacAuthorization = true。prod で Key Vault Administrator を持つユーザーがいないこと。

  2. マネージド ID + Key Vault 参照でアプリにアクセスさせる — アプリはシステム割り当てまたはユーザー割り当てのマネージド ID で認証し、実行時にシークレットを取得します。 App Service/Functions では、アプリ設定で Key Vault 参照(@Microsoft.KeyVault(SecretUri=...))を使用します。SDK コードの変更は不要です。 確認方法:ソースコードにプレーンテキストのシークレットが含まれていないこと。マネージド ID に、対象のコンテナーでシークレット ロールのみが付与されていること。

  3. 論理的な削除 + 消去保護を有効にする — 論理的な削除は既定で有効です。誤操作または悪意によるキーの削除を 90 日間復元可能にするため、消去保護を有効にします。CMK およびほとんどのコンプライアンス シナリオで必須です。 確認方法:softDeleteRetentionInDays >= 7、enablePurgeProtection = true。

  4. ネットワーク アクセスを制限する — 機密性の高いコンテナーでは、パブリック ネットワーク アクセスを無効にし、ワークロード VNet 内の プライベート エンドポイントを使用します。それ以外のアクセスは、サービス タグまたは選択したネットワークでファイアウォールを設定して制限します。 確認方法:publicNetworkAccess = Disabled。プライベート エンドポイントで名前解決できること。インターネットからのパブリック IP テストがブロックされること。

  5. アプリごと、環境ごとに 1 つのコンテナーを使用する — アプリごとに影響範囲を限定できます。アプリ間の読み取りはロールの付与が必要となるため、監査できます。複数のアプリのシークレットを 1 つの共有コンテナーにまとめないでください。

  6. ローテーションを自動化し、有効期限を監視する — シークレット/証明書に有効期限を設定します。発行元から証明書を自動更新するには ローテーション ポリシーを使用します。シークレットについては、Event Grid → Logic App/Function を使用し、シークレットの保存元でローテーションしてシークレットを更新します。 確認方法:本番環境で有効期限が NULL のシークレットがないこと。証明書またはシークレットの有効期限の 60 日前にアラートが発報されること。

  7. 監視と Defender — 診断ログを Log Analytics に送信するように設定し、異常なアクセスを検出するため Defender for Key Vault を有効にします。

ガードレール

  • アプリごと、環境ごとにボールトを分けると、影響範囲を限定でき、アクセス制御も簡素化できます。 共有ボールトは、過剰な権限付与につながるアンチパターンです。
  • 消去保護を有効にすると元に戻せません。CMK や多くのコンプライアンスシナリオで必須です。 有効にする際は、十分に理解したうえで設定してください。
  • シークレットをソースコードや構成に保存しないでください。マネージド ID と Key Vault 参照を使用してください。 コードに保存したシークレットは、リポジトリ、ログ、環境変数のダンプなどから漏えいします。
  • 機密性の高いボールトでは、パブリックネットワークアクセスを無効にしてください。 インターネットに公開された Key Vault は、ブルートフォース攻撃や認証情報のスプレー攻撃の標的になります。
  • アクセス ポリシーではなく RBAC を使用してください。 RBAC は、適切な継承と PIM 対象ロールを備えた最新のモデルです。
  • アプリに Key Vault Administrator を付与しないでください。 アプリに必要なのは、シークレットやキーへの読み取り権限であり、管理者権限ではありません。

よくあるアンチパターン

  • 「すべてのアプリで共有の『エンタープライズ』Key Vault を使う」 - 1 つのアプリが侵害されると、すべてのアプリのシークレットが読み取られます。アプリごと、環境ごとに分けてください。
  • 「ずっと使ってきたからアクセス ポリシーを使う」 - レガシーな方式で、監査も困難です。RBAC を使用してください。
  • 「削除が必要になるかもしれないから、消去保護を設定しない」 - 悪意ある、または誤操作による最初の消去で、データが失われます。消去保護を有効にし、取り消せないことを踏まえて運用してください。
  • 「利便性のためにパブリックネットワークアクセスを有効にする」 - インターネットにさらされます。プライベート エンドポイントとファイアウォールを使用してください。
  • 「App Service のアプリケーション設定にシークレットを平文で保存する」 - 構成の読み取り権限を持つ人なら誰でも閲覧できます。Key Vault 参照を使用してください。
  • 「有効期限もローテーションも設定しない」 - 長期間有効なシークレットは、継続的なリスクになります。有効期限とローテーション ポリシーを設定してください。
  • 「アプリと CA ルートキーで同じボールトを使う」 - 影響範囲の異なるものが混在します。CA / HSM キーは Managed HSM に保存し、アプリのシークレット用ボールトとは分離してください。

プロンプトの例

  • Set up Azure Key Vault with RBAC, purge protection, and a private endpoint.
  • Configure an App Service to read secrets via managed identity and Key Vault references.
  • When should I use Managed HSM instead of standard Key Vault?
  • Plan one-vault-per-app-per-environment for our microservices estate.
  • Automate certificate rotation in Key Vault with a 60-day expiry alert.
  • Review my Key Vault access model for least privilege.

Microsoft Learn

コメント