在Azure Key Vault中配置加密密钥自动轮换
在Azure Key Vault中配置加密密钥自动轮换
Azure Key Vault中的加密密钥自动轮换功能允许用户将Key Vault配置为按指定频率自动生成新的密钥版本。本文将详细介绍如何配置和管理这一功能,包括与Azure服务的集成、定价信息、所需权限、密钥轮换策略的设置方法,以及通过Azure CLI、Azure PowerShell和ARM模板等多种方式进行配置的详细步骤。
概述
Key Vault中的加密密钥自动轮换使客户可将Key Vault配置为按指定频率自动生成新的密钥版本。 若要配置轮换,可以使用密钥轮换策略,该策略可在每个单个密钥上定义。
我们的建议是至少每两年轮换一次加密密钥,以满足加密最佳做法。
有关如何对Key Vault中的对象进行版本控制的更多信息,请参见Key Vault对象、标识符和版本控制。
与Azure服务集成
利用此功能,客户管理的密钥(CMK)存储在Azure Key Vault中的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 Policy服务,可以控制密钥生命周期,并确保将所有密钥配置为在指定的天数内轮换。
创建并分配策略定义
- 导航到策略资源
- 在“Azure Policy”页左侧的“创作”下选择“分配”。
- 选择页面顶部的“分配策略”。 此按钮会打开“策略分配”页面。
- 输入以下信息:
- 通过选择要对其强制实施策略的订阅和资源组来定义策略的范围。 单击“范围”字段中的三点按钮进行选择。
- 选择策略定义名称:“密钥应具有轮换策略,确保在创建后的指定天数内安排其轮换”。
- 转到页面顶部的“参数”选项卡。
- 将“最长轮换天数”参数设置为所需的天数,例如730。
- 定义策略的预期效果(“审核”或“已禁用”)。
- 填写任何其他字段。 单击页面底部的“上一步”和“下一步”按钮导航选项卡。
- 选择“查看+创建”
- 选择“创建”
分配内置策略后,可能需要24小时才能完成扫描。 扫描完成后,可以看到如下所示的符合性结果。