Azure Key Vault と Azure Policy を統合する

Azure Policy は、ユーザーが大規模な Azure 環境を監査および管理する機能を提供するガバナンス ツールです。 Azure Policy は、割り当てられたポリシー規則に Azure リソースが確実に準拠するように、Azure リソースにガードレールを配置する機能を提供します。 これによりユーザーは、利用中の Azure 環境の監査、リアルタイムの適用、修復を実行できます。 ポリシーによって実行された監査の結果は、どのリソースとコンポーネントが準拠しているか、していないかのドリルダウンを表示できるコンプライアンス ダッシュボードでユーザーが使用できるようになります。 詳細については、「Azure Policy サービスの概要」を参照してください。

使用シナリオの例を示します。

  • 会社のキー コンテナーにおける最小限のキー サイズと証明書の最長有効期間に関する要件を実装することで会社のセキュリティ体制を改善したいのに、どのチームが準拠し、どのチームがとそうでないかがわからない。
  • 現在、組織全体にわたる監査を実行するためのソリューションがないか、組織内の個々のチームにコンプライアンスに関する報告を行うよう依頼することで環境の監査を手動で実施している。 このタスクを自動化し、リアルタイムで監査を実行して、監査の精度を保証する方法を探している。
  • 会社のセキュリティ ポリシーを適用し、個人が自己署名証明書を作成するのを止める必要があるのに、作成を自動的にブロックする方法がない。
  • テスト チームのいくつかの要件を緩和する必要があるのに、運用環境に対する厳しい管理は維持する必要がある。 リソースの適用を分離するため、簡単で自動化された方法を必要としている。
  • 稼働中のサイトの問題が発生した場合に、新しいポリシーの適用を確実にロールバックできるようにする必要がある。 ポリシーの適用をオフにするワンクリック ソリューションを必要としている。
  • 環境監査のためにサード パーティのソリューションに依存しているので、社内の Microsoft サービスを利用したい。

ポリシーの効果の種類とガイダンス

ポリシーを適用するときに、結果の評価に対する効果を決定できます。 各ポリシー定義では、複数の効果の中からいずれかを選択できます。 そのため、ポリシーの強制は、評価する操作の種類によって異なる動作をする可能性があります。 一般に、Key Vault と統合するポリシーの効果は次のとおりです。

  • 監査: ポリシーの効果が Audit に設定されているときには、ポリシーによって環境に対する重大な変更が発生することはありません。 指定したスコープ内の、ポリシー定義に準拠していない証明書などのコンポーネントは、ポリシーのコンプライアンス ダッシュボードで非準拠とマーク付けされて、それらのコンポーネントに対するアラートが出されるだけです。 ポリシーの効果が選択されていない場合は、監査が既定値です。

  • 拒否: ポリシーの効果が Deny に設定されているときには、ポリシーにより、証明書などの新しいコンポーネントや、既存コンポーネントの、ポリシー定義に準拠しない新しいバージョンの作成がブロックされます。 キー コンテナー内の既存の非準拠リソースは影響を受けません。 "監査" 機能は引き続き動作します。

  • 無効: ポリシーの効果が Disabled に設定されている場合、ポリシーは引き続き評価されますが、適用は有効になりません。そのため、Disabled の効果を持つ条件に準拠しています。 これは、すべての条件ではなく、特定の条件に対してポリシーを無効化するのに役立ちます。

  • 変更: ポリシーの効果が Modify に設定されている場合は、ネットワークへの Deny タグの追加など、リソース タグの追加を実行できます。 これは、Azure Key Vault マネージド HSM のパブリック ネットワークへのアクセスを無効化するのに便利です。 Modify の効果を利用するには、roleDefinitionIds パラメータでポリシー定義にマネージド ID を構成する必要があります。

  • DeployIfNotExists: ポリシーの効果を DeployIfNotExists に設定すると、条件を満たしたときにデプロイ テンプレートが実行されます。 Key Vault の診断設定を Log Analytics ワークスペースに構成するために使用できます。 DeployIfNotExists の効果を利用するには、roleDefinitionIds パラメータでポリシー定義にマネージド ID を構成する必要があります。

  • AuditIfNotExists: ポリシーの効果が AuditIfNotExists に設定されている場合、ポリシー条件の詳細で指定されたプロパティがないリソースを特定できます。 これは、リソース ログが有効になっていないキー コンテナーを特定するのに便利です。 DeployIfNotExists の効果を利用するには、roleDefinitionIds パラメータでポリシー定義にマネージド ID を構成する必要があります。

使用できる組み込みポリシー定義

組み込みと呼ばれる事前に定義されたポリシーは、キー コンテナーのガバナンスを容易にします。そのため、ベスト セキュリティ プラクティスに関連付けられた一般に使われるルールを適用するために JSON 形式でカスタム ポリシーを記述する必要はありません。 組み込みはあらかじめ設定されていますが、特定のポリシーではパラメーターを定義する必要があります。 たとえば、ポリシーの効果を定義することで、拒否の操作を適用する前にキー コンテナーとそのオブジェクトを監査し、停止を防ぐことができます。 Azure Key Vault の現在の組み込みは、大きく 4 つのグループ、Key コンテナー、証明書、キー、シークレット管理に分類されます。 各カテゴリ内では、特定のセキュリティ目標を推進するためのポリシーがグループ化されています。

キー コンテナー

アクセス制御

Azure Policy サービスを使用すると、コンテナー間での RBAC アクセス許可モデルへの移行を管理できます。 「コンテナー アクセス ポリシーから Azure ロールベースのアクセス制御のアクセス許可モデルへの移行」を参照してください

ポリシー 効果
Azure Key Vault では RBAC アクセス許可モデルを使用する必要がある 監査 "(既定)"、拒否、無効

ネットワーク アクセス

パブリック ネットワーク アクセスの制限、Azure Private Link 接続の有効化、プライベート エンドポイントの DNS 解決をオーバーライドするプライベート DNS ゾーンの作成、ファイアウォール保護の有効化によりデータ漏えいのリスクを軽減し、キー コンテナーが既定でパブリック IP にアクセスできないようにします。

ポリシー 効果
Azure Key Vault should disable public network access (Azure Key Vault で公衆ネットワーク アクセスを無効にする必要がある) 監査 "(既定)"、拒否、無効
[プレビュー]: Azure Key Vault マネージド HSM で公衆ネットワーク アクセスを無効にする必要がある 監査 "(既定)"、拒否、無効
[プレビュー]: 公衆ネットワーク アクセスを無効にするように Key Vault マネージド HSM を構成する 変更 "(既定)"、無効
[プレビュー]: Azure Key Vault でプライベート リンクを使用する必要がある 監査 "(既定)"、拒否、無効
[プレビュー]: Azure Key Vault マネージド HSM はプライベート リンクを使用する必要がある 監査 "(既定)"、無効
[プレビュー]: プライベート エンドポイントを使って Azure Key Vault を構成する DeployIfNotExists "(既定)"、無効
[プレビュー]: プライベート エンドポイントを使って Azure Key Vault マネージド HSM を構成する DeployIfNotExists "(既定)"、無効
[プレビュー]: プライベート DNS ゾーンを使うように Azure Key Vault を構成する DeployIfNotExists "(既定)"、無効
Key Vault でファイアウォールを有効にする必要がある 監査 "(既定)"、拒否、無効
ファイアウォールを有効にするように Key Vault を構成する 変更 "(既定)"、無効

削除保護

論理的な削除と消去保護を有効にすることで、キー コンテナーとそのオブジェクトの完全なデータ損失を防ぎます。 論理的な削除では、誤って削除したキー コンテナーを構成可能な保存期間内で復元できますが、消去保護では、論理的に削除されたキー コンテナーに必須の保存期間を適用して、インサイダー攻撃から保護します。 消去保護は、論理的な削除が有効な場合にのみ有効にすることができます。 組織や Microsoft の内部にいるどのユーザーも、論理的な削除の保有期間中にキー コンテナーを消去することはできなくなります。

ポリシー 効果
Key Vault で論理的な削除が有効になっている必要がある 監査 "(既定)"、拒否、無効
Key Vault で消去保護が有効になっている必要がある 監査 "(既定)"、拒否、無効
Azure Key Vault マネージド HSM で消去保護が有効になっている必要がある 監査 "(既定)"、拒否、無効

診断

リソース ログを有効にして、セキュリティ インシデントが発生したときやネットワークがセキュリティ侵害されたときに調査のために使うアクティビティ証跡を再作成するようにします。

ポリシー 効果
Key Vault の診断設定をイベント ハブにデプロイする DeployIfNotExists "(既定)"
デプロイ - イベント ハブに Key Vault マネージド HSM の診断設定を構成する DeployIfNotExists "(既定)"、無効
デプロイ - Log Analytics ワークスペースに Key Vault の診断設定を構成する DeployIfNotExists "(既定)"、無効
Key Vault のリソース ログを有効にする必要がある AuditIfNotExists "(既定)"、無効
Key Vault マネージド HSM のリソース ログを有効にする必要がある AuditIfNotExists "(既定)"、無効

証明書

証明書のライフサイクル

有効期間の短い証明書の使用を促進し、継続的な損害の期間を最小限に抑え、攻撃者にとっての証明書の価値を下げることで、検出されない攻撃を軽減します。 有効期間の短い証明書を実装する場合、有効期限が切れる前に適切にローテーションできるように、有効期限を定期的に監視して停止を回避することをお勧めします。 有効期限までの期間が一定日数内である証明書、または使用できる有効期間の一定割合に達した証明書に対して指定される、有効期間のアクションを管理することもできます。

ポリシー 効果
[プレビュー]: 証明書には最長有効期間を指定する必要がある 効果: 監査 ("既定")、拒否、無効
[プレビュー]: 証明書の有効期限が指定された日数以内に切れてはならない 効果: 監査 ("既定")、拒否、無効
証明書には、指定された有効期間アクション トリガーが必要である 効果: 監査 ("既定")、拒否、無効

注意

証明書の有効期限ポリシーは、180 日、90 日、60 日、30 日間のしきい値など、有効期限の異なるしきい値を指定して複数回適用することをお勧めします。

証明機関

特定の証明機関の選択を監査または適用して、Azure Key Vault の統合証明機関 (Digicert または GlobalSign)、または希望する統合されていない証明機関のいずれかに依存して証明書を発行します。 また、自己署名証明書の作成を監査または拒否できます。

ポリシー 効果
証明書は、指定の統合された証明機関によって発行される必要がある 監査 ("既定")、拒否、無効
証明書は、指定の統合されていない証明機関によって発行される必要がある 監査 ("既定")、拒否、無効

証明書の属性

キー コンテナーの証明書の種類を、RSA、ECC、または HSM でサポートされるものに制限します。 楕円曲線暗号または ECC 証明書を使う場合、P-256、P-256K、P-384、P-521 などの曲線名をカスタマイズして選択できます。 RSA 証明書を使う場合、証明書の最小キー サイズを 2048 ビット、3072 ビット、または 4096 ビットから選択できます。

ポリシー 効果
証明書は、許可されたキーの種類を使用する必要がある 監査 ("既定")、拒否、無効
楕円曲線暗号を使用する証明書には、許可されている曲線名が必要である 監査 ("既定")、拒否、無効
RSA 暗号を使用する証明書に、キーの最小サイズを指定する必要がある 監査 ("既定")、拒否、無効

キー

HSM でサポートされるキー

HSM は、キーを格納するハードウェア セキュリティ モジュールです。 HSM によって、暗号化キーの物理的な保護レイヤーが提供されます。 暗号化キーは、ソフトウェア キーよりも高いレベルのセキュリティを提供する物理 HSM から離れることはできません。 一部の組織には、HSM キーの使用を必須とするコンプライアンス要件があります。 このポリシーを使用して、HSM ベースでない Key Vault に格納されているキーを監査します。 また、このポリシーを使用して、HSM ベースでない新しいキーの作成をブロックすることもできます。 このポリシーは、RSA や ECC など、すべてのキーの種類に適用されます。

ポリシー 効果
ハードウェア セキュリティ モジュール (HSM) によってキーをサポートする必要がある 監査 ("既定")、拒否、無効

キーのライフサイクル

ライフサイクル管理の組み込みにより、有効期間のないキーにフラグを設定またはブロックする、キーのローテーションが遅れた場合にアラートを出す、有効期間が近いキーを新たに作成しないようにする、キーの有効期間とアクティブ状態を制限してキーのローテーションを促進する、および指定日数を超えてキーがアクティブになるのを防ぐことができます。

ポリシー 効果
キーには、作成後指定された日数以内にローテーションがスケジュールされることを保証するローテーション ポリシーが含まれている必要があります 監査 ("既定")、無効
Key Vault キーには有効期限が必要である 監査 ("既定")、拒否、無効
[プレビュー]: マネージド HSM キーには有効期限を設定する必要がある 監査 ("既定")、拒否、無効
キーの有効期限には、指定された日数より先の日付を指定する必要がある 監査 ("既定")、拒否、無効
[プレビュー]: Azure Key Vault マネージド HSM キーは、有効期限まで指定された日数よりも長い必要がある 監査 ("既定")、拒否、無効
キーには最長有効期間を指定する必要がある 監査 ("既定")、拒否、無効
指定された日数より長くキーをアクティブにすることはできない 監査 ("既定")、拒否、無効

重要

キーをアクティブ化した日が設定されている場合上記のポリシーによって、キーをアクティブ化した日から現在の日付までの経過日数が計算されます。 その日数が設定したしきい値を超えている場合、キーはポリシーに準拠していないとマークされます。 キーをアクティブ化した日が設定されていない場合は、ポリシーによって、キーの作成日から現在の日付までの経過日数が計算されます。 その日数が設定したしきい値を超えている場合、キーはポリシーに準拠していないとマークされます。

キー属性

Key Vault のキーの種類を、RSA、ECC、または HSM でサポートされるものに制限します。 楕円曲線暗号または ECC キーを使う場合、P-256、P-256K、P-384、P-521 などの曲線名をカスタマイズして選択できます。 RSA キーを使う場合、現在および新しいキーの最小サイズを 2048 ビット、3072 ビット、4096 ビットのいずれかにすることを要求できます。 キー サイズが小さい RSA キーを使うことは安全な設計手法ではないことに注意してください。そのため、最小サイズ要件を満たさない新しいキーの作成をブロックすることをお勧めします。

ポリシー 効果
キーは、特定の暗号化の種類 (RSA または EC) である必要がある 監査 ("既定")、拒否、無効
楕円曲線暗号を使用するキーに曲線名を指定する必要がある 監査 ("既定")、拒否、無効
[プレビュー]: 楕円曲線暗号を使用する Azure Key Vault マネージド HSM キーに曲線名を指定する必要がある 監査 ("既定")、拒否、無効
RSA 暗号を使用するキーにキーの最小サイズを指定する必要がある 監査 ("既定")、拒否、無効
[プレビュー]: RSA 暗号を使用する Azure Key Vault マネージド HSM キーにキーの最小サイズを指定する必要がある 監査 ("既定")、拒否、無効

シークレット

シークレットのライフサイクル

ライフサイクル管理の組み込みにより、有効期間のないシークレットにフラグを設定またはブロックする、シークレットのローテーションが遅れた場合にアラートを出す、有効期間が近いキーを新たに作成しないようにする、キーの有効期間とアクティブ状態を制限してキーのローテーションを促進する、および指定日数を超えてキーがアクティブになるのを防ぐことができます。

ポリシー 効果
シークレットには有効期限が必要である 監査 ("既定")、拒否、無効
シークレットの有効期限は、指定された日数より先の日付を指定する必要がある 監査 ("既定")、拒否、無効
シークレットには最長有効期間を指定する必要がある 監査 ("既定")、拒否、無効
指定された日数より長くシークレットをアクティブにすることはできない 監査 ("既定")、拒否、無効

重要

シークレットをアクティブ化した日が設定されている場合上記のポリシーによって、シークレットをアクティブ化した日から現在の日付までの経過日数が計算されます。 その日数が設定したしきい値を超えている場合、シークレットはポリシーに準拠していないとマークされます。 シークレットをアクティブ化した日が設定されていない場合は、このポリシーによって、シークレットの作成日から現在の日付までの経過日数が計算されます。 その日数が設定したしきい値を超えている場合、シークレットはポリシーに準拠していないとマークされます。

シークレットの属性

プレーンテキストまたはエンコードされたファイルを Azure キー コンテナー シークレットとして格納できます。 ただし、パスワード、接続文字列、またはキーとして格納されている証明書に対して、異なるローテーション ポリシーと制限を設定することが組織で必要になる場合があります。 コンテンツの種類のタグは、ユーザーがシークレットの値を読み取らずに、シークレット オブジェクトに何が格納されているかを確認するのに役立ちます。 コンテンツ タイプのタグが設定されていないシークレットの監査や、コンテンツ タイプのタグが設定されていない場合に新しいシークレットが作成されないようにできます。

ポリシー 効果
シークレットにはコンテンツの種類を設定する必要がある 監査 ("既定")、拒否、無効

シナリオ例

複数のチームによって使用される、100 の証明書を含むキー コンテナーを管理し、キー コンテナー内に 2 年より長く有効な証明書がないようにしたいと考えています。

  1. 証明書には最長有効期間を指定する必要があるポリシーを割り当てて、証明書の最長有効期間は 24 か月であることを指定し、ポリシーの効果を "監査" に設定します。
  2. Azure portal でコンプライアンス レポートを表示し、20 の証明書が非準拠で有効期間が 2 年を超えていて、残りの証明書は準拠していることを検出します。
  3. これらの証明書の所有者に連絡し、証明書が 2 年より長く有効であってはいけないという新しいセキュリティ要件を伝えます。 一部のチームが対応し、15 の証明書は最長有効期間を 2 年以下として更新されました。 他のチームは対応しておらず、キー コンテナーには非準拠の証明書がまだ 5 つあります。
  4. 割り当てたポリシーの効果を "拒否" に変更します。 非準拠の 5 つの証明書は取り消されず、機能し続けています。 ただし、それらは 2 年を超える有効期間では更新できません。

Azure portal からのキー コンテナー ポリシーの有効化と管理

ポリシー定義を選択する

  1. Azure ポータルにログインします。

  2. 検索バーで「ポリシー」を検索し、[ポリシー] を選択します。

    検索バーを示すスクリーンショット。

  3. [ポリシー] ウィンドウで、[定義] を選択します。

    [定義] オプションが強調表示されているスクリーンショット。

  4. カテゴリ フィルターで [すべて選択] を選択解除し、[Key Vault] を選択します。

    カテゴリ フィルターと、選択されている Key Vault カテゴリを示すスクリーンショット。

  5. これで、Azure Key Vault のパブリック プレビューで使用できるすべてのポリシーを参照できるはずです。 上記のポリシーのガイダンスに関するセクションを読んで理解していることを確認し、スコープに割り当てるポリシーを選択します。

    パブリック プレビューで使用可能なポリシーを示すスクリーンショット。

スコープにポリシーを割り当てる

  1. 適用するポリシーを選択します。この例では、[Manage Certificate Validity Period] (証明書の有効期間を管理する) ポリシーが表示されています。 左上隅の [割り当て] ボタンをクリックします。

    [Manage Certificate Validity Period]\(証明書の有効期間を管理する\) ポリシーを示すスクリーンショット。

  2. 適用するポリシーのサブスクリプションを選択します。 サブスクリプション内で、スコープを 1 つのリソース グループのみに制限することを選択できます。 ポリシーをサブスクリプション全体に適用し、一部のリソース グループを除外する場合は、除外リストを構成することもできます。 ポリシーの効果 (監査または拒否) を生じさせる場合はポリシー適用セレクターを [有効] に設定し、効果 (監査または拒否) をオフにするには [無効] に設定します。

    サブスクリプション内で、スコープを 1 つのリソース グループのみに制限することを選択できる場所を示すスクリーンショット。

  3. 必要な最長有効期間を月単位で指定するため、画面上部の [パラメーター] タブをクリックします。 パラメーターを入力する必要がある場合は、[入力またはレビューが必要なパラメーターのみを表示する] オプションをオフにできます。 上のセクションのガイダンスに従い、ポリシーの効果について [監査] または [拒否] を選択します。 次に、[確認および作成] ボタンを選択します。

    [パラメーター] タブを示すスクリーンショット。ここで、必要な最大有効期間を月単位で指定することができます。

コンプライアンスの結果を表示する

  1. ポリシーのブレードに戻り、[コンプライアンス] タブを選択します。コンプライアンスの結果を表示するポリシー割り当てをクリックします。

    [コンプライアンス] タブを示すスクリーンショット。ここで、コンプライアンスの結果を表示するポリシー割り当てを選択できます。

  2. このページからは、準拠または非準拠のコンテナー別に、結果をフィルター処理することができます。 ここでは、ポリシー割り当てのスコープ内にある、非準拠のキー コンテナーの一覧を確認できます。 コンテナー内のいずれかのコンポーネント (証明書) が非準拠である場合、そのコンテナーは非準拠と見なされます。 個々のコンテナーを選択すると、個々の非準拠コンポーネント (証明書) を表示できます。

    ポリシー割り当てのスコープ内にある、非準拠のキー コンテナーの一覧を示すスクリーンショット。

  3. 非準拠のコンテナー内にあるコンポーネントの名前を表示します

    コンテナー内にある非準拠のコンポーネントの名前を表示できる場所を示すスクリーンショット。

  4. ユーザーに対して、キー コンテナー内でリソースを作成する機能が拒否されているかどうかを確認する必要がある場合は、[コンポーネント イベント (プレビュー)] タブをクリックすると、要求の要求元やタイムスタンプに基づいて、拒否された証明書操作の概要を表示できます。

    Azure Key Vault の動作の概要

機能の制限

ポリシーに "拒否" 効果を割り当てると、非準拠リソースの作成の拒否が開始されるのに最大 30 分 (平均的な場合) かかり、最長の場合は 1 時間かかることがあります。 この遅延は、次のシナリオを示しています。

  1. ポリシーが割り当てられる。
  2. 既存のポリシー割り当てが変更される。
  3. 既存のポリシーを含むスコープに新しい KeyVault (リソース) が作成される。

コンテナー内の既存コンポーネントのポリシー評価では、ポータル UI でコンプライアンスの結果を表示できるようになるまで最大 1 時間 (平均的な場合) かかり、最長の場合は 2 時間かかることがあります。

コンプライアンスの結果が "未開始" と表示される場合は、以下の理由が原因の可能性があります。

  • ポリシーの評価がまだ完了していません。 最初の評価の待機時間は、最悪のシナリオでは最大 2 時間かかる場合があります。
  • ポリシー割り当てのスコープ内にキー コンテナーがありません。
  • ポリシー割り当てのスコープ内に、証明書が含まれるキー コンテナーがありません。

Note

Azure Policy のリソース プロバイダーのモード (Azure Key Vault のものなど) を使用すると、[コンポーネント コンプライアンス] ページにコンプライアンスに関する情報が表示されます。

次の手順