链接到同一应用程序配置的多个 Azure keyvault 导致 Spring Boot 应用程序中出现身份验证错误

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

我的配置如下:

Azure 应用程序配置包含对 2 个不同 keyvault 的链接键值引用, 每个链接到具有不同前缀的部分。

Spring Boot 应用程序经过应用程序配置和密钥库之一的身份验证

在我的应用程序中,我只需要其中一个密钥库(链接到 kafka 部分的密钥库)中的值,并且我在配置中有一个过滤器,仅提取应用程序配置的一部分

在我的 Application.java 中,我有用于链接应用程序配置的代码

    @EnableConfigurationProperties({
            KafkaSettings.class})

以及相应类别中的部分过滤器。

    @ConfigurationProperties(prefix = "kafka")
    public class KafkaSettings {
       private String bootstrapServers;
       ...

我希望这能起作用,但我仍然收到身份验证错误,表明我的应用程序无权从我不需要的存储密钥库中读取机密。

Status code 403, "{"error":{"code":"Forbidden","message":"The user, group or application 'appid=<appid>' does not have secrets get permission on key vault '<keyvaultname>'

正如预期,如果我添加第二个 keyvault 的权限,问题就会解决,但这不是我的目标,我想避免不必要地分配此 keyvault 的权限。

我的问题是,是否可以告诉我的应用程序仅从必要的密钥库中提取秘密并忽略另一个密钥库,或者我是否通过将具有不同权限的多个密钥库链接到同一应用程序配置而犯了根本性错误?

如有任何帮助,我们将不胜感激

spring-boot azure azure-keyvault azure-app-configuration
1个回答
0
投票

当 Azure 中的应用设置通过共享访问签名 (SAS) URL 引用 Key Vault 机密时,Azure 应用服务将从 Key Vault 检索机密值并在启动时缓存它。每次应用程序访问应用程序设置或运行引用应用程序设置的代码时,都不会获取密钥。

因此,无论您是否需要它,或者是否在代码中使用它,应用程序都会尝试连接到第二个 Key Vault。

仔细检查您的应用程序中是否未使用它,然后删除设置或取消它们的值。

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