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

Spring Boot如何从Azure Key Vault获取keys/secrets及配置问题解决

Spring Boot 正确对接Azure Key Vault 获取密钥/密钥对操作指南

仅配置Key Vault URI无法正常运行的核心原因是Azure Key Vault默认禁止匿名访问,缺少合法身份验证凭证会导致应用启动阶段拉取配置失败,后续接口请求自然无法正常处理。

1. 引入对应依赖

首先需要在项目中引入Azure Key Vault的Spring Boot Starter依赖,以Maven为例:

<dependency>
    <groupId>com.azure.spring</groupId>
    <artifactId>azure-spring-boot-starter-keyvault-secrets</artifactId>
    <version>匹配当前Spring Boot版本的最新稳定版</version>
</dependency>

Gradle配置参考:

implementation 'com.azure.spring:azure-spring-boot-starter-keyvault-secrets:<版本号>'

2. 补充完整配置(核心)

除了Key Vault URI之外,还需要配置身份验证信息,根据部署场景分为两种方式:

  • 本地开发场景:使用Azure服务主体验证,需要提前在Azure AD中创建服务主体,并给该服务主体配置Key Vault的Secret Get、Secret List访问权限,配置文件示例如下:
azure:
  keyvault:
    secret:
      property-sources:
        - endpoint: https://<你的KeyVault名称>.vault.azure.com/ # 国际版Azure后缀为.com,国内Azure后缀为.cn
  client:
    id: <服务主体客户端ID>
    secret: <服务主体客户端密钥>
    tenant-id: <Azure租户ID>
  • 生产部署到Azure资源场景:如果应用部署在Azure的App Service、VM、AKS等资源上,直接开启对应资源的系统分配托管身份,给该托管身份配置Key Vault的访问权限即可,无需在配置文件中硬编码client-id和client-secret,SDK会自动获取环境内的身份凭证。

3. 读取Key Vault中存储的内容

配置完成后,你可以用两种方式读取存储的密钥/配置:

  • 使用@Value注解直接注入,比如你在Key Vault中存储了名为db-password的密钥,代码写法如下:
@Value("${db-password}")
private String dbPassword;
  • 注入Environment对象后调用方法读取:
@Autowired
private Environment environment;

// 调用时获取
String dbPwd = environment.getProperty("db-password");

4. 异常排查注意项

如果配置完成后仍无法正常启动,可以按以下顺序排查:

  • 确认服务主体/托管身份的Key Vault访问策略配置正确,对应权限已授予
  • 确认应用所在网络可以访问Key Vault,Key Vault防火墙没有拦截应用的访问IP
  • 确认Key Vault的URI拼写正确,国内/国际版的域名后缀没有混淆
  • 确认依赖版本和当前项目的Spring Boot版本匹配,不存在版本冲突

内容的提问来源于stack exchange,提问作者Srinivas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 00:18:03