Моя конфигурация следующая:
Конфигурация приложения 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>'
Как и ожидалось, проблема будет решена, если я добавлю разрешения для второго хранилища ключей, но это не моя цель: я хочу избежать ненужного назначения разрешений этому хранилищу ключей.
Мой вопрос: можно ли приказать моему приложению извлекать секреты только из необходимого хранилища ключей и игнорировать другое, или я совершил фундаментальную ошибку, связав несколько хранилищ ключей с разными разрешениями с одной и той же конфигурацией приложения?
Любая помощь приветствуется
Когда параметр приложения в Azure ссылается на секрет Key Vault через URL-адрес подписи общего доступа (SAS), Служба приложений Azure получает значение секрета из Key Vault и кэширует его при запуске. Секрет не извлекается каждый раз, когда приложение обращается к настройке приложения или запускает фрагмент кода, ссылающийся на настройку приложения.
Таким образом, независимо от того, нужно оно вам или нет и используется ли оно в коде, приложение попытается подключиться ко второму Key Vault.
Дважды проверьте, что он не используется в вашем приложении, и просто удалите настройки или обнулите их значения.
@Nardu Да, ваше понимание правильное. Если вам нужна строка подключения KV, но вы хотите преодолеть это поведение, вам необходимо изменить формат значения (возможно, удалить фигурные скобки). Затем вам нужно будет вручную получить секрет в коде. Пожалуйста, отметьте ответ как ответ, если это решило вашу проблему.
Итак, вы говорите, что я использую конфигурацию приложения неправильно, я не должен связывать хранилища ключей, которым требуются разные уровни разрешений, потому что при запуске считывается вся конфигурация приложения (и ссылки разрешаются), и происходит фильтрация. позже. Я правильно понял?