Java Spring Boot应用访问Azure Key Vault方法及服务主体创建报错排查
Java Spring Boot 访问 Azure Key Vault 实现指南
一、代码实现内容
1. 引入依赖
在pom.xml中添加Spring Cloud Azure的Key Vault依赖:
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter-keyvault-secrets</artifactId> <version>4.11.0</version> <!-- 使用最新稳定版 --> </dependency>
2. 配置应用参数
在application.yml(或application.properties)中配置Key Vault连接信息:
spring: cloud: azure: keyvault: uri: https://<your-key-vault-name>.vault.azure.net/ credential: client-id: <service-principal-client-id> client-secret: <service-principal-client-secret> profile: tenant-id: <azure-ad-tenant-id>
3. 读取Key Vault中的密钥
通过@Value注解直接注入密钥值:
import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class SecretController { @Value("${your-secret-name}") private String secretValue; @GetMapping("/secret") public String getSecret() { return secretValue; } }
也可以通过AzureKeyVaultSecretService主动获取密钥:
import com.azure.spring.cloud.keyvault.secrets.AzureKeyVaultSecretService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component public class SecretReader { private final AzureKeyVaultSecretService secretService; @Autowired public SecretReader(AzureKeyVaultSecretService secretService) { this.secretService = secretService; } public String getSecret(String secretName) { return secretService.getSecret(secretName).getValue(); } }
二、Azure订阅权限配置
1. 配置Key Vault访问策略
- 登录Azure门户,进入目标Key Vault,选择「访问策略」>「添加访问策略」。
- 在「密钥权限」中勾选所需权限(如
获取、列出,根据业务需求选择)。 - 在「选择主体」中搜索并选择目标Service Principal,完成添加。
2. 订阅层面权限(可选)
如果需要Service Principal管理Key Vault资源(如创建、删除),需在订阅或资源组的IAM中为其分配Key Vault参与者或参与者角色:
- 进入订阅/资源组的「访问控制(IAM)」>「添加角色分配」。
- 选择对应角色,指定Service Principal为被分配者,完成配置。
三、创建Service Principal报错解决
报错Directory permission is needed for the current user to register the application.是因为当前Azure用户没有Azure AD应用注册权限,解决方法如下:
- 方法1:提升用户角色
让Azure AD管理员为当前用户分配应用程序注册参与者、应用程序管理员或全局管理员角色(优先选择最小权限的应用程序注册参与者)。 - 方法2:修改Azure AD租户设置
管理员登录Azure门户,进入「Azure Active Directory」>「用户设置」>「应用注册」,将「用户可以注册应用程序」设置为「是」,允许普通用户注册应用。 - 方法3:通过管理员账号创建SP
如果无法获取权限,可请求Azure AD管理员使用其账号创建Service Principal,再将权限分配给你的用户使用。
内容的提问来源于stack exchange,提问作者BPT
相关产品推荐
相关产品推荐

