我正在努力实现以下目标:
能够使用 Azure 用户分配的托管标识 (UAMI) 从 Spring Boot 应用程序(在 AKS 中部署)对 vault(部署在 Azure 上)进行身份验证
堆栈:openjdk 8、spring boot 2.5.4、spring-cloud-starter-vault-config 3.0.3、AKS
我在 azure 上安装了 hashcorp 保险库。下面的文档建议在这种情况下我可以使用 UAMI 对保险库进行身份验证。参考https://cloud.spring.io/spring-cloud-vault/reference/html/
春季启动应用程序配置:
应用程序.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 并建立连接,当然,由于 azure 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 日志完全不同。我的 JKS 在 local 和 AKS 上都有根证书。
有人可以帮我解决这个问题。我查看了各种文件,但似乎都过时了。