You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何无需Azure CLI实现Spring Boot集成Azure Key Vault?

无需Azure CLI即可运行集成Azure Key Vault的Spring Boot应用

针对你的Spring Boot 3.1.5应用依赖Azure CLI登录才能访问Key Vault的问题,有几种可行的替代方案,完全摆脱CLI依赖:

方案1:用Azure AD服务主体(本地/非Azure环境通用)

  1. 在Azure AD中创建一个服务主体,给它分配Key Vault的**Key Vault Secrets User角色**(只给读取机密的权限,遵循最小权限原则)
  2. 记下这个服务主体的三个核心信息:客户端ID、客户端密钥、租户ID
  3. 修改application.properties,替换掉原来依赖CLI的配置,直接配置服务主体凭据:
azure.keyvault.uri=https://<你的密钥保管库名称>.vault.azure.net/
azure.keyvault.client-id=<服务主体客户端ID>
azure.keyvault.client-secret=<服务主体客户端密钥>
azure.keyvault.tenant-id=<你的Azure租户ID>

配置完成后启动应用,Spring Boot会直接通过服务主体身份验证访问Key Vault,再也不用依赖Azure CLI登录。

方案2:用系统托管标识(仅Azure托管环境适用)

如果你的应用部署在Azure云服务(比如App Service、AKS、VM)里,这是最省心的方案:

  1. 打开Azure门户,找到你的应用托管资源(比如App Service),进入「标识」选项卡,启用系统分配的标识
  2. 回到Key Vault的「访问控制(IAM)」页面,把刚才启用的托管标识添加进去,分配Key Vault Secrets User角色
  3. 不用修改任何配置文件,Spring Boot会自动识别托管标识,完成身份验证——全程不用管任何凭据,也不需要Azure CLI

方案3:用环境变量传递凭据(避免配置文件明文存密钥)

如果不想在application.properties里明文写客户端密钥,可以把服务主体信息通过环境变量传递:

  • Windows系统:
set AZURE_KEYVAULT_CLIENT_ID=<客户端ID>
set AZURE_KEYVAULT_CLIENT_SECRET=<客户端密钥>
set AZURE_KEYVAULT_TENANT_ID=<租户ID>
set AZURE_KEYVAULT_URI=<Key Vault URI>
  • Linux/macOS系统:
export AZURE_KEYVAULT_CLIENT_ID=<客户端ID>
export AZURE_KEYVAULT_CLIENT_SECRET=<客户端密钥>
export AZURE_KEYVAULT_TENANT_ID=<租户ID>
export AZURE_KEYVAULT_URI=<Key Vault URI>

启动应用时,Spring Boot会自动读取这些环境变量,完成Key Vault的身份验证,同样不需要Azure CLI。

注意事项

  • 服务主体的权限要卡准,只给必要的读取权限,别给多余权限增加风险
  • 客户端密钥是敏感信息,生产环境别硬编码到代码或配置文件里,优先用托管标识或者环境变量
  • 托管标识是Azure环境下最安全的方案,不用手动管理凭据,Azure会自动维护

内容的提问来源于stack exchange,提问作者Sk Monjurul Haque

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 02:57:25