如何更换Azure Data Lake Store的加密密钥至新Key-Vault
如何将Azure Data Lake Store的加密密钥切换到新的Key Vault
没问题,我来一步步教你完成这个操作,分可视化门户和命令行两种方式,你可以根据自己的习惯选择:
先搞定前提条件
在动手之前,确保你已经准备好这些:
- 新的Key Vault已经创建完成,必须和你的ADLS存储账户在同一Azure区域(ADLS对客户托管密钥的KV有区域限制)
- 新Key Vault里已经生成/导入了用于加密的RSA密钥(推荐用RSA-2048及以上版本)
- 你的账号拥有足够权限:ADLS存储账户的
Storage Account Contributor或Owner权限,新Key Vault的Key Vault Contributor或Owner权限;如果用的是托管标识(系统/用户分配),还要给这个标识授予新KV密钥的Get、WrapKey、UnwrapKey权限
方法一:通过Azure Portal操作
这是最直观的方式,适合单次操作:
- 登录Azure门户,找到你的ADLS存储账户(如果是Gen1,找Data Lake Store;Gen2的话找Storage Account)
- 在左侧菜单的「安全性 + 网络」分类下,点击「加密」选项
- 确认当前加密类型是「使用客户托管密钥」,然后点击「更改密钥」按钮
- 在弹出的配置面板里,选择「选择Key Vault和密钥」
- 从下拉列表中选中你新建的Key Vault,再选择里面的目标加密密钥(也可以指定特定密钥版本,不选则默认用最新版)
- 点击「保存」,等待3-5分钟让配置生效,期间不要关闭页面
方法二:通过Azure CLI操作
适合自动化脚本或者批量管理场景:
- 先登录Azure CLI并切换到目标订阅:
az login az account set --subscription <你的订阅ID>
- 获取新Key Vault的资源ID(后续命令要用):
az keyvault show --name <新Key Vault名称> --query id -o tsv
- 执行更新命令替换ADLS的加密密钥,把占位符换成你的实际信息:
az storage account update \ --name <ADLS存储账户名称> \ --resource-group <存储账户所在资源组> \ --encryption-key-name <新KV中的密钥名称> \ --encryption-key-version <密钥版本(可选,留空则用最新)> \ --encryption-key-source Microsoft.KeyVault \ --encryption-key-vault <刚才获取的新KV资源ID>
- 如果用的是用户分配托管标识,还要额外给标识授权:
az keyvault set-policy \ --name <新Key Vault名称> \ --object-id <用户分配标识的对象ID> \ --key-permissions get wrapKey unwrapKey
重要注意事项
- 切换密钥后,新写入ADLS的数据会立即用新密钥加密,旧数据会在后台自动完成重新加密,这个过程完全透明,不影响正常访问
- 不要急着删除旧Key Vault!至少等1-2周,确认ADLS已经稳定使用新密钥,且所有旧数据都完成重加密后再删除(可以通过Azure Monitor跟踪加密状态)
- 如果切换过程中遇到权限报错,先检查托管标识(如果用了)的KV权限,或者你的账号是否有足够的资源组级权限
内容的提问来源于stack exchange,提问作者dante
相关产品推荐
相关产品推荐

