在 Azure Key Vault 中設定密碼編譯金鑰自動輪替
概觀
Key Vault 中的自動化密碼編譯金鑰輪替可讓使用者將 Key Vault 設定為以指定的頻率自動產生新的金鑰版本。 若要設定輪替,您可以使用金鑰輪替原則,這可以在每個個別金鑰上定義。
建議您至少每兩年輪替一次加密金鑰,以符合密碼編譯最佳做法。
如需 Key Vault 中物件版本設定方式的詳細資訊,請參閱 Key Vault 物件、識別碼和版本設定。
Azure 服務整合
這項功能可實現端對端的零接觸輪替,利用儲存在 Azure Key Vault 中的客戶自控金鑰 (CMK) 為 Azure 服務提供待用加密功能。 請參閱特定的 Azure 服務文件,以了解該服務是否包含端對端輪替功能。
如需 Azure 中資料加密的詳細資訊,請參閱:
定價
每個排程的金鑰輪替都有額外的成本。 如需詳細資訊,請參閱 Azure Key Vault 定價頁面
需要的權限
Key Vault 金鑰輪替功能需要金鑰管理權限。 您可以指派「Key Vault 密碼編譯長」角色來管理輪替原則和隨選輪替。
如需如何使用 Key Vault RBAC 權限模型和指派 Azure 角色的詳細資訊,請參閱使用 Azure RBAC 來控制金鑰、憑證和祕密的存取權
注意
如果您使用存取原則權限模型,則必須設定「輪替」、「設定輪替原則」和「取得輪替原則」金鑰權限,才能管理金鑰的輪替原則。
金鑰輪替原則
金鑰輪替原則可讓使用者設定輪替和事件方格通知的接近到期通知。
金鑰輪替原則設定:
- 到期時間:金鑰到期間隔。 其可用來設定新輪替金鑰的到期日。 其不會影響目前的金鑰。
- 啟用/停用:用來啟用或停用金鑰輪替的旗標
- 輪替類型:
- 建立後於指定的時間自動更新 (預設值)
- 在到期前的指定時間自動更新。 其需要在輪替原則上設定「到期時間」,並在金鑰上設定「到期日」。
- 輪替時間:金鑰輪替間隔,最小值是建立後七天以及到到日後七天
- 通知時間:事件方格通知的金鑰即將到期事件間隔。 其需要在輪替原則上設定「到期時間」,並在金鑰上設定「到期日」。
重要
金鑰輪替會產生具有新金鑰內容的現有金鑰新金鑰版本。 目標服務應該使用無版本金鑰 URI,自動重新整理至最新版的金鑰。 請確定您的資料加密解決方案儲存已設定版本的金鑰 URI,具有指向相同金鑰內容的資料以進行解密/解除包裝,如同用於加密/包裝作業一樣,以避免中斷服務。 所有 Azure 服務目前都遵循該模式進行資料加密。
設定金鑰輪替原則
在建立金鑰期間設定金鑰輪替原則。
設定現有金鑰的輪替原則。
Azure CLI
將金鑰輪替原則儲存至檔案。 金鑰輪替原則範例:
{
"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 Cmdlet 設定輪替原則。
Set-AzKeyVaultKeyRotationPolicy -VaultName <vault-name> -KeyName <key-name> -ExpiresIn (New-TimeSpan -Days 720) -KeyRotationLifetimeAction @{Action="Rotate";TimeAfterCreate= (New-TimeSpan -Days 540)}
隨選輪替
您可以手動叫用金鑰輪替。
入口網站
按一下 [立即輪替] 即可叫用輪替。
Azure CLI
使用 Azure CLI az keyvault key rotate 命令來輪替金鑰。
az keyvault key rotate --vault-name <vault-name> --name <key-name>
Azure PowerShell
使用 Azure PowerShell Invoke-AzKeyVaultKeyRotation Cmdlet。
Invoke-AzKeyVaultKeyRotation -VaultName <vault-name> -Name <key-name>
設定金鑰即將到期通知
設定事件方格金鑰即將到期事件的到期通知。 如果無法使用自動輪替,例如從本機 HSM 匯入金鑰時,您可以設定即將到期通知作為手動輪換的提醒,或透過與事件方格整合作為自訂自動輪換的觸發程序。 您可以為通知設定到期前的天數、月份數和年份數,以觸發即將到期事件。
如需 Key Vault 中事件方格通知的詳細資訊,請參閱 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 原則服務,您可以控管金鑰生命週期,並確保所有金鑰都設定為在指定天數內輪替。
建立及指派原則定義
- 瀏覽至原則資源
- 在 Azure 原則頁面左側的 [製作] 下,選取 [指派]。
- 選取頁面頂端的 [指派原則]。 此按鈕會開啟至 [原則指派] 頁面。
- 輸入下列資訊:
- 選擇要強制執行原則的訂用帳戶和資源群組,定義原則範圍。 按一下 [範圍] 欄位上的三個點按鈕即可選取。
- 選取原則定義的名稱:「金鑰應該有輪替原則,以確保其輪替排程在建立後的指定天數內」。
- 前往頁面頂端的 [參數] 索引標籤。
- 將輪替的天數上限參數設為所需天數,例如 730。
- 定義原則所需的效果 (稽核或停用)。
- 填寫任何其他欄位。 按一下頁面底部的 [上一步] 和 [下一步] 按鈕,即可瀏覽索引標籤。
- 選取 [檢閱 + 建立]
- 選取 [建立]
指派內建原則後,可能需要長達 24 小時才能完成掃描。 掃描完成後,您可以看到如下所示的合規性結果。