azure-key-vault について
Azure のアプリケーションやセキュリティ設計者向けに、Key Vault でのシークレット、キー、証明書の管理方法を案内します。アクセス制御、ネットワーク制限、ライフサイクル設計を扱います。
主な機能
- 01Standard Key Vault と Managed HSM の選択
- 02RBAC とマネージド ID のアクセス設計
- 03論理削除と消去保護の計画
- 04プライベートエンドポイントとネットワーク制限
- 05キーと証明書のローテーション計画
活用シーン
- 01アプリと環境ごとの保管庫分離設計
- 02マネージド ID によるアプリのシークレット取得
- 03カスタマー管理キーと HSM の計画
- 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 が必要な場合にのみ使用してください。
アプローチ
-
データプレーンには Azure RBAC を使用する — コンテナーを RBAC 権限モデル(従来のアクセス ポリシーではなく)に切り替えます。最小権限のロール(
Key Vault Secrets User、Key Vault Crypto User)を、ユーザー アカウントではなく マネージド ID に割り当てます。 確認方法:コンテナーのenableRbacAuthorization = true。prod でKey Vault Administratorを持つユーザーがいないこと。 -
マネージド ID + Key Vault 参照でアプリにアクセスさせる — アプリはシステム割り当てまたはユーザー割り当てのマネージド ID で認証し、実行時にシークレットを取得します。 App Service/Functions では、アプリ設定で Key Vault 参照(
@Microsoft.KeyVault(SecretUri=...))を使用します。SDK コードの変更は不要です。 確認方法:ソースコードにプレーンテキストのシークレットが含まれていないこと。マネージド ID に、対象のコンテナーでシークレット ロールのみが付与されていること。 -
論理的な削除 + 消去保護を有効にする — 論理的な削除は既定で有効です。誤操作または悪意によるキーの削除を 90 日間復元可能にするため、消去保護を有効にします。CMK およびほとんどのコンプライアンス シナリオで必須です。 確認方法:
softDeleteRetentionInDays >= 7、enablePurgeProtection = true。 -
ネットワーク アクセスを制限する — 機密性の高いコンテナーでは、パブリック ネットワーク アクセスを無効にし、ワークロード VNet 内の プライベート エンドポイントを使用します。それ以外のアクセスは、サービス タグまたは選択したネットワークでファイアウォールを設定して制限します。 確認方法:
publicNetworkAccess = Disabled。プライベート エンドポイントで名前解決できること。インターネットからのパブリック IP テストがブロックされること。 -
アプリごと、環境ごとに 1 つのコンテナーを使用する — アプリごとに影響範囲を限定できます。アプリ間の読み取りはロールの付与が必要となるため、監査できます。複数のアプリのシークレットを 1 つの共有コンテナーにまとめないでください。
-
ローテーションを自動化し、有効期限を監視する — シークレット/証明書に有効期限を設定します。発行元から証明書を自動更新するには ローテーション ポリシーを使用します。シークレットについては、Event Grid → Logic App/Function を使用し、シークレットの保存元でローテーションしてシークレットを更新します。 確認方法:本番環境で有効期限が NULL のシークレットがないこと。証明書またはシークレットの有効期限の 60 日前にアラートが発報されること。
-
監視と 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
- Key Vault の概要:https://learn.microsoft.com/azure/key-vault/general/overview
- セキュリティ機能:https://learn.microsoft.com/azure/key-vault/general/security-features
- RBAC ガイド:https://learn.microsoft.com/azure/key-vault/general/rbac-guide
- 論理的な削除と消去保護:https://learn.microsoft.com/azure/key-vault/general/soft-delete-overview
- プライベート エンドポイント:https://learn.microsoft.com/azure/key-vault/general/private-link-service
- App Service での Key Vault 参照:https://learn.microsoft.com/azure/app-service/app-service-key-vault-references
- Managed HSM:https://learn.microsoft.com/azure/key-vault/managed-hsm/overview
- Key Vault 向け Defender:https://learn.microsoft.com/azure/defender-for-cloud/defender-for-key-vault-introduction