概要
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 サービスを使用すると、キーのライフサイクルを管理し、すべてのキーが指定した日数内にローテーションするように構成されていることを確認できます。
ポリシー定義を作成して割り当てる
- Policy リソースに移動します
 - Azure Policy ページの左側にある [作成] の下の [割り当て] を選択します。
 - ページの上部にある [Assign policy](ポリシーを割り当てる) を選択します。 このボタンをクリックすると [ポリシーの割り当て] ページが開きます。
 - 次の情報を入力します。
- ポリシーを適用するサブスクリプションとリソース グループを選択して、ポリシーのスコープを定義します。 [範囲] フィールドの 3 点ボタンをクリックして選択します。
 - ポリシー定義の名前を選択します。"キーにはローテーション ポリシーが必要です。作成後、指定した日数以内にローテーションがスケジュールされていることを確認します。
 - ページの上部にある [パラメーター ] タブに移動します。
- [ 回転する最大日数 ] パラメーターを目的の日数 (例: 730) に設定します。
 - ポリシーの目的の効果 ([監査] または [無効]) を定義します。
 
 
 - その他のフィールドに入力します。 ページの下部にある [前へ] ボタンと [次へ] ボタンをクリックしてタブ内を移動します。
 - [確認と作成] を選択します
 - を選択し を作成する
 
組み込みポリシーを割り当てると、スキャンが完了するまで最大 24 時間かかる場合があります。 スキャンが完了すると、次のようなコンプライアンス結果を確認できます。
