Azure Key Vault により、クラウド内の暗号化キー、証明書 (および証明書に関連付けられている秘密キー)、シークレット (接続文字列やパスワードなど) が保護されます。 ただし、ビジネスに不可欠な機密データを格納する場合は、コンテナーとそこに格納されるデータのセキュリティを最大化するための手順を実行する必要があります。
この記事では、Azure Key Vault のデプロイを最適な状態で保護する方法に関するガイダンスを提供します。
Azure Key Vault のアーキテクチャ
アプリケーション、リージョン、環境ごとに 1 つのキー コンテナーを使用する: 開発、運用前、運用環境用に個別のキー コンテナーを作成して、侵害の影響を軽減します。
キー ボールトは、保存されているシークレットのセキュリティ境界を定義します。 これは、シークレットを同じコンテナーにグループ化すると、攻撃によってさまざまな事項にわたるシークレットにアクセスできるおそれがあるため、セキュリティ イベントの "爆発半径" が大きくなることを意味します。 アクセスの懸念を軽減するには、特定のアプリケーションがどのシークレットにアクセスする必要があるかを検討し、この線引きに基づいてキー ボールトを分離します。 アプリケーション別にキー ボールトを分離するのが最も一般的な境界です。 ただし、大規模なアプリケーションでは、関連するサービスのグループごとになど、セキュリティ境界をより細かく設定できます。
マルチテナント ソリューションでテナントごとに 1 つのキー コンテナーを使用する: マルチテナント SaaS ソリューションの場合、テナントごとに個別のキー コンテナーを使用してデータが分離された状態を維持します。 詳細については、「マルチテナント機能と Azure Key Vault」を参照してください。
Key Vault におけるオブジェクトのストレージ
顧客の構成やサービス構成を格納するためのデータ ストレージとして Azure Key Vault を使用しない: サービスでは、保存時に暗号化して Azure Storage を使用するか、Azure 構成マネージャーを使用する必要があります。 このようなシナリオでは、ストレージのパフォーマンスが高くなります。
証明書 (顧客またはサービス所有) をシークレットとして保存しない: サービス所有の証明書は、キー コンテナー証明書として格納し、自動ローテーションを構成する必要があります。 詳細については、「 Azure Key Vault: 証明書 」および 「Azure Key Vault の自動ローテーションについて」を参照してください。
- 顧客のコンテンツ (シークレットと証明書を除く) を Azure Key Vault に格納しない: Azure Key Vault はデータ ストアではなく、データ ストアのようにスケーリングするように構築されていません。 代わりに、Cosmos DB や Azure Storage などの適切なデータ ストアを使用します。 顧客は、保存時の暗号化に BYOK (Bring Your Own Key) オプションを選択できます。 このキーは Azure Key Vault に格納して、Azure Storage 内のデータを暗号化できます。
体制と脆弱性の管理
- Azure Policy を使用して構成を適用する: Azure Key Vault の構成を監査し、安全な構成が適用されるようにし、ポリシーから逸脱した場合にはアラートが通知されるように Azure Policy を構成します。 「Azure Key Vault 用の Azure Policy 規制コンプライアンス コントロール」を参照してください。
ネットワーク セキュリティ
これらのネットワーク セキュリティ機能は、最も制限された機能から最も制限されていない機能の順にリストされます。 組織のユース ケースに最も適した構成を選択します。
パブリック ネットワーク アクセスを無効にし、プライベート エンドポイントのみを使用する: Azure Private Link をデプロイして、仮想ネットワークから Azure Key Vault へのプライベート アクセス ポイントを確立し、パブリック インターネットに公開されないようにします。 実装の手順については、「Key Vault を Azure Private Link と統合する」を参照してください。
- 一部の顧客シナリオでは、信頼された Microsoft サービスがファイアウォールをバイパスする必要があります。このような場合は、信頼できる Microsoft サービスを許可するようにコンテナーを構成する必要があります。 詳細については、ネットワーク セキュリティに関するページの「Key Vault ファイアウォールが有効になっている (信頼されたサービスのみ)」を参照してください。
Key Vault ファイアウォールを有効にする: パブリック静的 IP アドレスまたは仮想ネットワークへのアクセスを制限します。 詳細については、Key Vault のネットワーク セキュリティに関するページの「ファイアウォール設定」を参照してください。
- 一部の顧客シナリオでは、信頼された Microsoft サービスがファイアウォールをバイパスする必要があります。このような場合は、信頼できる Microsoft サービスを許可するようにコンテナーを構成する必要があります。
ネットワーク セキュリティ境界の使用: 組織の仮想ネットワーク境界やパブリック静的 IP アドレスの外部にデプロイされる PaaS リソース (Azure Key Vault、Azure Storage、SQL Database など) の論理ネットワーク分離境界を定義します。 詳細については、「ネットワーク セキュリティ: ネットワーク セキュリティ境界」を参照してください)
- "publicNetworkAccess": "SecuredByPerimeter" は"信頼された Microsoft サービスにファイアウォールのバイパスを許可する" をオーバーライドします。つまり、信頼を必要とする一部のシナリオが機能しなくなります。
ID 管理
マネージド ID を有効にする: すべてのアプリやサービスの Azure Key Vault への接続に Azure マネージド ID を使用して、資格情報のハードコーディングを排除します。 マネージド ID は、明示的な資格情報の必要性を排除しながら、認証をセキュリティで保護するのに役立ちます。 Azure Key Vault の認証に関するページを参照してください。
ロールベースのアクセス制御を使用する: Azure Key Vault へのアクセスを管理するために、Azure ロールベースのアクセス制御 (RBAC) を使用します。 詳細については、「Key Vault データ プレーン操作用の Azure RBAC」を参照してください。
- レガシのアクセス ポリシーを使用しない: レガシのアクセス ポリシーは、Privileged Identity Management (PIM) のサポートがないため、使用しないでください。 Azure RBAC は、承認されていないキー コンテナー アクセスの潜在的なリスクを軽減します。 「Azure ロールベースのアクセス制御 (Azure RBAC) とアクセス ポリシーの比較 (レガシ)」を参照してください。
Just-In-Time (JIT) 特権ロールを割り当てる: Azure Privileged Identity Management (PIM) を使用して、Key Vault の管理者とオペレーターに対して適格な JIT RBAC ロールを割り当てます。 詳細については、Privileged Identity Management (PIM) の概要に関するページを参照してください。
- 特権ロールのアクティブ化の承認を要求する: JIT ロールをアクティブ化するために少なくとも 1 人の承認者の確認を必須とすることで、承認されていないアクセスを防ぐセキュリティ レイヤーを追加します。 「Privileged Identity Management で Microsoft Entra ロールの設定を構成する」を参照してください。
- ロールのアクティブ化に多要素認証を適用する: オペレーターと管理者の JIT ロールをアクティブ化するには MFA を必須とします。 「Microsoft Entra 多要素認証」を参照してください。
Microsoft Entra 条件付きアクセス ポリシーを有効にする: Azure Key Vault では、ユーザーの場所やデバイスなどの条件に基づいてアクセス制御を適用する Microsoft Entra 条件付きアクセス ポリシーがサポートされています。 詳細については、条件付きアクセスの概要に関するページを参照してください。
最小限の特権の原則を適用する: 管理ロールを持つユーザーの数を制限し、ロールに必要な最小限のアクセス許可のみがユーザーに付与されるようにします。 「最小限の特権の原則でセキュリティを高める」を参照してください
データ保護
論理的な削除を有効にする: 論理的な削除を有効にして、削除された Key Vault オブジェクトを 7 日から 90 日間の保持期間であれば回復できるようにします。 Azure Key Vault のソフト削除の概要を参照してください。
消去保護を有効にする: 消去保護を有効にして、論理的な削除を有効にした後でも、Key Vault オブジェクトの偶発的または悪意のある削除から保護します。 Azure Key Vault ソフト削除の概要: 消去保護を参照してください
暗号化資産の自動ローテーションを実装する: キー、シークレット、証明書の自動ローテーションを構成して、侵害のリスクを最小限に抑え、セキュリティ ポリシーへの準拠を確保します。 暗号化マテリアルの定期的なローテーションは、重要なセキュリティプラクティスです。 Azure Key Vault での自動ローテーションの概要、キーの自動ローテーションの構成、証明書の自動ローテーションの構成、1 セットの認証資格情報を使用したリソースのシークレット ローテーションの自動化、2 セットの認証資格情報を使用したリソースのシークレット ローテーションの自動化に関するページを参照してください。
ログと脅威検出
監査ログを有効にする: Azure Key Vault のログは、コンテナーで実行された操作に関する情報を保存します。 詳細については、Key Vault のログ記録に関する記事を参照してください。
Microsoft Defender for Key Vault を有効にする: 疑わしいアクティビティを監視してアラートを生成する Microsoft Defender for Key Vault を有効にします。 詳細については、「Microsoft Defender for Key Vault の概要」を参照してください。
セキュリティ イベントのログ アラートを有効にする: アクセス エラーやシークレットの削除など、重要なイベントがログに記録されたときに通知されるようにアラートを設定します。 「Azure Key Vault の監視とアラート」を参照してください。
監視とアラート: Azure Key Vault と Azure Event Grid を統合して、キー、証明書、またはシークレットの変更に関する通知を受け取ります。 詳細については、「Azure Event Grid での Key Vault の監視」を参照してください。
バックアップと回復
Azure Key Vault のネイティブ バックアップを有効にする: シークレット、キー、証明書をバックアップし、回復性を確保するために、Azure Key Vault のネイティブ バックアップ機能を構成して使用します。 「Azure Key Vault のバックアップ」を参照してください。
再作成できないシークレットのバックアップを確認する: 他のソースから再作成できない Key Vault オブジェクト (暗号化キーなど) をバックアップします。 「Azure Key Vault のバックアップ」を参照してください。
バックアップと回復の手順をテストする: バックアップ プロセスの有効性を確認するために、Azure Key Vault のシークレット、キー、証明書の復元を定期的にテストします。 「Azure Key Vault のバックアップ」を参照してください。