Несколько хранилищ ключей Azure, связанных с одной и той же конфигурацией приложения, приводят к ошибке аутентификации в приложении весенней загрузки

Моя конфигурация следующая:

Конфигурация приложения Azure содержит связанные ссылки значений ключей на два разных хранилища ключей. каждый связан с разделом с другим префиксом.

Приложение весенней загрузки проходит проверку подлинности в конфигурации приложения и в одном из хранилищ ключей.

В моем приложении мне нужны только значения из одного из хранилищ ключей (того, которое связано с разделом Kafka), и у меня есть фильтр в конфигурации, чтобы извлечь только раздел конфигурации приложения.

В моем Application.java у меня есть код для привязки конфигурации приложения.

    @EnableConfigurationProperties({
            KafkaSettings.class})

и фильтр раздела в соответствующем классе.

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

Я ожидал, что это сработает, но я все равно получаю ошибку аутентификации о том, что моему приложению не разрешено читать секреты из хранилища ключей Storage, что мне не нужно.

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

Как и ожидалось, проблема будет решена, если я добавлю разрешения для второго хранилища ключей, но это не моя цель: я хочу избежать ненужного назначения разрешений этому хранилищу ключей.

Мой вопрос: можно ли приказать моему приложению извлекать секреты только из необходимого хранилища ключей и игнорировать другое, или я совершил фундаментальную ошибку, связав несколько хранилищ ключей с разными разрешениями с одной и той же конфигурацией приложения?

Любая помощь приветствуется

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Версия Java на основе версии загрузки
Версия Java на основе версии загрузки
Если вы зайдете на официальный сайт Spring Boot , там представлен start.spring.io , который упрощает создание проектов Spring Boot, как показано ниже.
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
0
0
90
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Когда параметр приложения в Azure ссылается на секрет Key Vault через URL-адрес подписи общего доступа (SAS), Служба приложений Azure получает значение секрета из Key Vault и кэширует его при запуске. Секрет не извлекается каждый раз, когда приложение обращается к настройке приложения или запускает фрагмент кода, ссылающийся на настройку приложения.

Таким образом, независимо от того, нужно оно вам или нет и используется ли оно в коде, приложение попытается подключиться ко второму Key Vault.

Дважды проверьте, что он не используется в вашем приложении, и просто удалите настройки или обнулите их значения.

Итак, вы говорите, что я использую конфигурацию приложения неправильно, я не должен связывать хранилища ключей, которым требуются разные уровни разрешений, потому что при запуске считывается вся конфигурация приложения (и ссылки разрешаются), и происходит фильтрация. позже. Я правильно понял?

Nardu 19.04.2024 09:41

@Nardu Да, ваше понимание правильное. Если вам нужна строка подключения KV, но вы хотите преодолеть это поведение, вам необходимо изменить формат значения (возможно, удалить фигурные скобки). Затем вам нужно будет вручную получить секрет в коде. Пожалуйста, отметьте ответ как ответ, если это решило вашу проблему.

Architect Jamie 19.04.2024 18:05

Другие вопросы по теме