次の方法で共有


Azure Key Vault で暗号化キーの自動ローテーションを構成する

概要

Key Vault での暗号化キーの自動ローテーションを使用すると、ユーザーは、指定された頻度で新しいキー バージョンを自動的に生成するように Key Vault を構成できます。 ローテーションを構成するには、個別のキーごとに定義できるキー ローテーション ポリシーを使用できます。

暗号化のベスト プラクティスを満たすために、少なくとも 2 年ごとに暗号化キーをローテーションすることをお勧めします。

Key Vault のオブジェクトのバージョン管理方法の詳細については、「 Key Vault オブジェクト、識別子、およびバージョン管理」を参照してください。 Azure Key Vault のさまざまな資産の種類にわたる自動ローテーションの概念の包括的な理解については、「Azure Key Vault の自動ローテーションについて」を参照してください。

Azure サービスとの統合

この機能により、カスタマー マネージド キー (CMK) が Azure Key Vault に格納された Azure サービスに対して、保存時の暗号化のエンドツーエンドのゼロタッチ ローテーションが有効になります。 Azure サービスに関する特定のドキュメントを参照して、そのサービスでエンドツーエンドのローテーションに対応しているかどうかを確認してください。

Azure のデータ暗号化の詳細については、次を参照してください。

価格設定

スケジュールされているキー ローテーションごとに追加のコストが発生します。 詳細については、Azure Key Vault の価格に関するページを参照してください

権限が必要です

Key Vault のキー ローテーション機能を使用するには、キー管理のアクセス許可が必要です。 "Key Vault Crypto Officer" ロールを割り当て、ローテーション ポリシーとオンデマンド ローテーションを管理できます。

Key Vault RBAC アクセス許可モデルを使用して Azure ロールを割り当てる方法の詳細については、「Azure RBAC を使用してキー、証明書、シークレットへのアクセスを制御する」を参照してください。

アクセス ポリシーのアクセス許可モデルを使用する場合は、キーのローテーション ポリシーを管理するために、"回転"、"ローテーション ポリシーの設定"、および "ローテーション ポリシーの取得" キーのアクセス許可を設定する必要があります。

キー ローテーション ポリシー

キー ローテーション ポリシーを使用すると、ユーザーはローテーション通知と Event Grid 通知を有効期限に近いスケジュールで設定できます。

キー ローテーション ポリシーの設定:

  • [有効期限]: キーの有効期限。 新しくローテーションされたキーに有効期限を設定するために使用されます。 現在のキーには影響しません。
  • [有効]/[無効]: キーのローテーションを有効または無効にするフラグ
  • ローテーションの種類:
    • [Automatically renew at a given time after creation (default)](作成後指定された時間が経過したら、自動的に更新する (既定値))
    • [Automatically renew at a given time before expiry](有効期限の残りが指定された日数になったら、自動的に更新する)。 ローテーション ポリシーに [有効期限] が設定されており、キーに [有効期限日] が設定されている必要があります。
  • [ローテーション時間]: キーのローテーション間隔。最小値は作成から 7 日、有効期限から 7 日です
  • [通知時間]: イベント グリッド通知のキーの有効期限が近いことを知らせるイベントの間隔。 ローテーション ポリシーに [有効期限] が設定されており、キーに [有効期限日] が設定されている必要があります。

Von Bedeutung

キー ローテーションでは、新しいキー マテリアルを持つ既存のキーの新しいキー バージョンが生成されます。 ターゲット サービスでは、最新バージョンのキーに自動的に更新するために、バージョンレス キー URI を使用する必要があります。 データ暗号化ソリューションでは、サービスの中断を回避するために、バージョンありのキー URI を保存し、それと共に、暗号化/ラップ操作に使用された同じキー マテリアルを指すデータを暗号化解除/ラップ解除用として保存する必要があります。 現在、すべての Azure サービスはそのパターンに従ってデータを暗号化しています。

ローテーション ポリシーの構成

キー ローテーション ポリシーを構成する

キーの作成時にキーローテーション ポリシーを構成します。

キーの作成時にローテーションを構成する

既存のキーに対してローテーション ポリシーを構成します。

既存のキーのローテーションを構成する

Azure CLI(Azure コマンドライン インターフェイス)

キー ローテーション ポリシーをファイルに保存します。 キー ローテーション ポリシーの例:

{
  "lifetimeActions": [
    {
      "trigger": {
        "timeAfterCreate": "P18M",
        "timeBeforeExpiry": null
      },
      "action": {
        "type": "Rotate"
      }
    },
    {
      "trigger": {
        "timeBeforeExpiry": "P30D"
      },
      "action": {
        "type": "Notify"
      }
    }
  ],
  "attributes": {
    "expiryTime": "P2Y"
  }
}

Azure CLI az keyvault key rotation-policy update コマンドを使用して、以前に保存したファイルを渡すキーにローテーション ポリシーを設定します。

az keyvault key rotation-policy update --vault-name <vault-name> --name <key-name> --value </path/to/policy.json>

Azure PowerShell

Azure Powershell Set-AzKeyVaultKeyRotationPolicy コマンドレットを使用してローテーション ポリシーを設定します。

Set-AzKeyVaultKeyRotationPolicy -VaultName <vault-name> -KeyName <key-name> -ExpiresIn (New-TimeSpan -Days 720) -KeyRotationLifetimeAction @{Action="Rotate";TimeAfterCreate= (New-TimeSpan -Days 540)}

オンデマンドでのローテーション

キー ローテーションは手動で呼び出すことができます。

ポータル

ローテーションを呼び出すには、[Rotate Now](今すぐローテーション) をクリックします。

オンデマンドでのローテーション

Azure CLI(Azure コマンドライン インターフェイス)

Azure CLI az keyvault key rotate コマンドを使用してキーをローテーションします。

az keyvault key rotate --vault-name <vault-name> --name <key-name>

Azure PowerShell

Azure PowerShell Invoke-AzKeyVaultKeyRotation コマンドレットを 使用します。

Invoke-AzKeyVaultKeyRotation -VaultName <vault-name> -Name <key-name>

キーの有効期限が近いことを知らせる通知を構成する

イベント グリッドのキーの有効期限が近いことを知らせるイベントの有効期限通知の構成。 ローカル HSM からキーをインポートする場合など、自動ローテーションを使用できない場合、キーの有効期限が近いことを知らせる通知を手動ローテーションのリマインダーとして、または Event Grid との統合によるカスタム自動ローテーションのトリガーとして構成できます。 有効期限の何日前、何か月前、何年前に有効期限が近いことを知らせるイベントをトリガーするかを構成できます。

通知の構成

Key Vault での Event Grid 通知の詳細については、「Event Grid ソースとしての Azure Key Vault」を参照してください。

ARM テンプレートを使用してキーローテーションを構成する

キー ローテーション ポリシーは、ARM テンプレートを使用して構成することもできます。

コントロール プレーンを使用してキーをデプロイするには、Azure RBAC で構成された Key Vault に対する "Key Vault 共同作成者" ロールが必要です。

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "vaultName": {
            "type": "String",
            "metadata": {
                "description": "The name of the key vault to be created."
            }
        },
        "keyName": {
            "type": "String",
            "metadata": {
                "description": "The name of the key to be created."
            }
        },
        "rotatationTimeAfterCreate": {
            "defaultValue": "P18M",
            "type": "String",
            "metadata": {
                "description": "Time duration to trigger key rotation. i.e. P30D, P1M, P2Y"
            }
        },
        "expiryTime": {
            "defaultValue": "P2Y",
            "type": "String",
            "metadata": {
                "description": "The expiry time for new key version. i.e. P90D, P2M, P3Y"
            }
        },
        "notifyTime": {
            "defaultValue": "P30D",
            "type": "String",
            "metadata": {
                "description": "Near expiry Event Grid notification. i.e. P30D"
            }
        }

    },
    "resources": [
        {
            "type": "Microsoft.KeyVault/vaults/keys",
            "apiVersion": "2021-06-01-preview",
            "name": "[concat(parameters('vaultName'), '/', parameters('keyName'))]",
            "___location": "[resourceGroup().___location]",
            "properties": {
                "vaultName": "[parameters('vaultName')]",
                "kty": "RSA",
                "rotationPolicy": {
                    "lifetimeActions": [
                        {
                            "trigger": {
                                "timeAfterCreate": "[parameters('rotatationTimeAfterCreate')]",
                                "timeBeforeExpiry": ""
                            },
                            "action": {
                                "type": "Rotate"
                            }
                        },
                        {
                            "trigger": {
                                "timeBeforeExpiry": "[parameters('notifyTime')]"
                            },
                            "action": {
                                "type": "Notify"
                            }
                        }

                    ],
                    "attributes": {
                        "expiryTime": "[parameters('expiryTime')]"
                    }
                }
            }
        }
    ]
}

キー ローテーション ポリシーのガバナンスを設定する

Azure Policy サービスを使用すると、キーのライフサイクルを管理し、すべてのキーが指定した日数内にローテーションするように構成されていることを確認できます。

ポリシー定義を作成して割り当てる

  1. Policy リソースに移動します
  2. Azure Policy ページの左側にある [作成] の下の [割り当て] を選択します。
  3. ページの上部にある [Assign policy](ポリシーを割り当てる) を選択します。 このボタンをクリックすると [ポリシーの割り当て] ページが開きます。
  4. 次の情報を入力します。
  5. その他のフィールドに入力します。 ページの下部にある [前へ] ボタンと [次へ] ボタンをクリックしてタブ内を移動します。
  6. [確認と作成] を選択します
  7. を選択し を作成する

組み込みポリシーを割り当てると、スキャンが完了するまで最大 24 時間かかる場合があります。 スキャンが完了すると、次のようなコンプライアンス結果を確認できます。

キー ローテーション ポリシーのコンプライアンスのスクリーンショット。

リソース