Azure 应用程序服务(UAMI)上的 Spring Cloud Vault:连接超时

问题描述 投票:0回答:1

我正在将 Spring Boot 应用程序部署到 Azure 应用程序服务上,并收到 Azure MSI 端点的“连接超时”错误。

应用程序使用 Spring cloudVault 配置和 azure UAMI 连接到Vault,但在引导时失败: “http://169.254.169.254/metadata/instance”的 GET 请求出现 I/O 错误:连接到 http://169.254.169.254 失败:连接超时

我已经读到,对于azure应用程序服务,我们需要使用“IDENTITY_ENDPOINT”和“IDENTITY_HEADER”来连接到应用程序服务中的资源,但我不确定在哪里使用spring cloud配置来设置它。

堆栈:JDK 17 |春季启动3.2.0 | spring-cloud-vault-config 4.1.0

application.yaml

spring.cloud.vault:
  scheme: https
  uri: <vault url>
  authentication: azure_msi
  connection_timeout: 5000
  azure_msi:
    role: MY_UAMI
spring:
  config:
    import: vault://secret-path

该配置在身份验证类型为“令牌”时工作正常,并且在部署到应用程序服务时,在使用身份验证类型为“azure_msi”时会出现超时错误

spring-boot azure azure-web-app-service hashicorp-vault spring-cloud-vault-config
1个回答
0
投票

我们在 Azure Web App 上遇到了同样的问题,这是一个理解的过程。问题是 Spring Vault 目前仅支持 Azure 的 MSI 身份验证:https://docs.spring.io/spring-vault/reference/vault/authentication.html#vault.authentication.azuremsi

我们已经配置了

vault.authentication=AZURE
。尽管有这个名称,但这仅适用于直接在虚拟机上运行的应用程序。它不适用于 Azure Web App,它作为虚拟机上的容器映像运行。我从 Microsoft 支持处收到以下声明:

问题:无法在 Azure Web App 上连接到不可路由的 IP“169.254.169.254”。

解决方案:这是预期行为,因为 IP“169.254.169.254”在 Azure Web 应用程序上不可用。这是专门针对元数据的 Azure 虚拟机功能。

我们通过实现我们自己的、与 Hashicorp 兼容的

ClientAuthentication
(我们连接到的)并挂钩到
EnvironmentVaultConfiguration
来解决这个问题。

我希望我的回答能够帮助人们减少在调试或获得支持上浪费的时间。简而言之:Azure Web App 无法使用 IMDS,因为它不可用。

© www.soinside.com 2019 - 2024. All rights reserved.