【发布时间】:2021-10-30 18:04:41
【问题描述】:
我正在努力实现以下目标:
能够使用 Azure 用户分配的托管标识 (UAMI) 从 Spring Boot 应用程序(部署在 AKS 中)向保管库(部署在 Azure 上)进行身份验证
堆栈:openjdk 8、spring boot 2.5.4、spring-cloud-starter-vault-config 3.0.3、AKS
我在 azure 上安装了 hashcorp vault。下面的文档建议在这种情况下我可以使用 UAMI 对保险库进行身份验证。 指https://cloud.spring.io/spring-cloud-vault/reference/html/
Spring Boot 应用配置:
application.yml:
server:
port: 8090
spring:
application:
name: my application-service
cloud:
config:
import: vault://secret/somepath_to_secrets
vault:
uri: https://my-vault-uri
scheme: https
namespace: myapp
authentication: AZURE_MSI
azure-msi:
role: pod_identity_role_name
这在我的本地工作有点好,因为日志说它试图点击上面提到的保险库 URI 并建立连接,当然,由于天蓝色的 MSI,我无法在本地端到端测试这个。我正在使用用户分配的托管身份 (UAMI)。
但是当我将它部署到 Azure Kubernetes 集群时,它给了我以下错误,甚至没有尝试连接到保管库。似乎它期望身份验证作为令牌:
Error creating bean with name 'clientAuthentication' defined in class path resource
caused by java.lang.IllegalArgumentException: Token(spring.cloud.vault.token) must not be empty
这对我来说没有意义,因为本地日志和 AKS 日志完全不同。我在本地和 AKS 的 JKS 中都有根证书。
有人可以帮我解决这个问题吗?我查看了各种文件,但似乎都很旧。
【问题讨论】:
标签: spring-boot azure azure-aks hashicorp-vault spring-cloud-vault-config