当前位置: 首页 > 知识库问答 >
问题:

带有Azure身份验证的Spring云配置库:在AKS上读取配置失败

宓博实
2023-03-14

我正在努力实现以下目标:

能够使用Azure用户分配的管理身份(UAMI)从Spring启动应用程序(部署在AKS中)向vault(部署在Azure上)进行身份验证

栈:openjdk 8,spring boot 2.5.4,spring-cloud-starter-vault-config 3 . 0 . 3,AKS

我在azure上安装了hashicorp保险库。下面的文档建议我可以在这种情况下使用UAMI对vault进行身份验证。参考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 并进行连接,当然,由于 azure MSI,我无法在本地端到端上对此进行测试。我正在使用用户分配的托管标识 (UAMI)。

但当我将其部署到Azure Kubernetes集群时,它会给我以下错误,甚至不会尝试连接到vault。看起来它需要身份验证作为令牌:

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 中有根证书。

有人能帮我一下吗?我看过各种文件,但似乎都是旧的。

共有1个答案

安星汉
2023-03-14

根据下面的文档使用Azure POD Identity - Arctiq将Hashicorp Vault与Azure AKS集成,您可以将您的Hashicorp vault与AKS集成。您可以从AKS生成认证令牌来认证Hashicorp vault。

Azure AD Pod Identity允许您将Pod绑定到在集群外部管理的Azure Identity。Vault可以配置为使用Azure AD作为身份提供程序,这将使AKS中的容器化应用程序能够使用Vault中的机密,而无需任何代码修改。

> < li>

在您的AK上启用Azure AD Pod身份。

创建Azure身份。

将Azure身份部署到AKS。

将Hashicorp保险库部署到AKS

验证Azure身份绑定

从pod会话内部,从Azure元数据服务获取令牌,然后使用JWT令牌向Vault进行身份验证

 类似资料:
  • 我们正在配置spring云配置服务器,下面是我的应用程序属性的外观: 我可以登录到github url,即https://github.com/myorganization/config-store.git使用用户名MyUser和密码MyPassword作为上述属性,但当我试图启动我的配置服务器使用:./mvnw sping-boot: run我得到以下错误: 我已经尝试了很多东西,但现在没有任何

  • 将配置服务器用户名和密码存储为环境变量(在客户端和服务器中)还是使用密钥库更好?密钥库密码无论如何都存储为环境变量,那么为什么实际使用密钥库呢?还是有更好的方法在SpringCloudConfig服务器中实现身份验证?

  • 问题内容: 我想我丢失了一些东西,因为我在文档中找不到如何编写供Redis实例与sidekiq一起使用的用户名和密码。 有没有办法做到这一点?还是通过ENV变量? 问题答案: Sidekiq将无法识别的redis选项直接传递给Redis驱动程序: Redis没有用户的概念,因此只有密码。

  • 有人面对过这个问题吗?如果没有身份验证,spring-cloud-config-client可以很好地工作,但是如果启用了基本身份验证,相同的代码就不能工作了。 Spring Cloud Config Server应用程序。属性: Spring Cloud Config Client bootstrap.yml: 奇怪的是,记录器的输出是空白的,这意味着没有活动的配置文件。因此,很明显,这个boo

  • 我一直在努力遵循这个教程: https://www.baeldung.com/spring-security-basic-authentication 我创建了几个restendpoint,如下所示: 现在的问题是,每当我试图发送POST请求时,我都会得到以下错误消息: HTTP状态401-访问此资源需要完全身份验证 我尝试了两种方法来发送请求,一种是通过邮递员 1.1 401 set-cooki

  • 我想使用Spring Cloud实现OAuth2的令牌刷新。 我可以使用以下有效负载通过向发送请求来创建令牌: 但对于刷新令牌,则使用相同的路径。我还需要将用户名和密码发送到标题中,但我没有它们。我可以使用以下负载使用刷新令牌创建一个新令牌: Github代码