为已运行的Vault配置Azure自动解封
配置现有Vault实例使用Azure自动解封(保留原解封密钥)
前提条件
- 已拥有Azure订阅,可创建Key Vault并配置权限
- 现有Vault实例处于已解封状态(需修改配置)
- 本地已安装
vaultCLI并能连接目标Vault实例
步骤1:在Azure创建用于自动解封的Key Vault并导入原密钥
- 登录Azure CLI:
az login - 创建资源组(无则新建):
az group create --name vault-unseal-rg --location eastus - 创建Azure Key Vault:
az keyvault create --name my-vault-unseal-kv --resource-group vault-unseal-rg --location eastus --enable-rbac-authorization false - 导入原解封密钥到Azure Key Vault:
- 将你的Base64格式解封密钥保存到本地文件(如
unseal-key.txt) - 执行导入命令:
az keyvault key import --name vault-unseal-key --vault-name my-vault-unseal-kv --pem-file unseal-key.txt --kty RSA
注意:若原密钥是二进制格式,需先转换为PEM格式再导入。
- 将你的Base64格式解封密钥保存到本地文件(如
步骤2:配置Azure服务主体权限
- 创建服务主体,供Vault访问Azure Key Vault:
记录返回的az ad sp create-for-rbac --name vault-unseal-spappId、password和tenant信息,后续会用到。 - 给服务主体分配Azure Key Vault的密钥权限:
az keyvault set-policy --name my-vault-unseal-kv --spn <appId> --key-permissions get unwrapKey wrapKey
步骤3:更新现有Vault的自动解封配置
- 用
vaultCLI登录目标Vault实例:vault login - 启用Azure自动解封插件:
vault write sys/unseal/azure-key-vault \ tenant_id=<tenant> \ client_id=<appId> \ client_secret=<password> \ vault_name=my-vault-unseal-kv \ key_name=vault-unseal-key - 验证配置:
能正常返回配置信息即为成功。vault read sys/unseal/azure-key-vault/config
步骤4:验证自动解封功能
- 手动密封Vault:
vault operator seal - 等待数秒后检查状态,若
Sealed显示false,说明自动解封生效:vault status
注意事项
- 导入到Azure Key Vault的密钥必须和原Vault解封密钥完全一致,否则自动解封会失败
- 若Vault通过Helm部署,后续升级chart时需避免配置被覆盖,可将自动解封参数加入
values.yaml:server: extraEnvironmentVars: VAULT_AZUREKEYVAULT_TENANT_ID: <tenant> VAULT_AZUREKEYVAULT_CLIENT_ID: <appId> VAULT_AZUREKEYVAULT_CLIENT_SECRET: <password> VAULT_AZUREKEYVAULT_VAULT_NAME: my-vault-unseal-kv VAULT_AZUREKEYVAULT_KEY_NAME: vault-unseal-key unsealConfig: enabled: true azureKeyVault: enabled: true
内容的提问来源于stack exchange,提问作者icordoba
相关产品推荐
相关产品推荐

