Как динамически получать секреты Azure Key Vault для предварительной среды в функциях Azure?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как динамически получать секреты Azure Key Vault для предварительной среды в функциях Azure?

Сообщение Anonymous »

Я работаю над функцией Azure, которая интегрируется с внешним API и должна обрабатывать секреты по-разному в зависимости от среды:
В рабочей среде я использую статические значения конфигурации, загружаемые при запуске. (например, ClientId, ClientSecret и т. д.).
На стадии подготовки мне нужно динамически получать эти секреты из Azure Key Vault на основе уникального идентификатора, переданного в запросе (например, идентификатора, такого как GLN).
Сценарий:
Производственная среда: такие секреты, как ClientId, ClientSecret и SubscriptionKey, являются статическими и загружаются из конфигурации при запуске.
Подготовочная среда: секреты необходимо динамически получать из Azure Key Vault во время выполнения на основе запроса. идентификатор.

Код: Выделить всё

public async Task GetToken(string identifier)
{
// Check if the token is cached
if (_memoryCache.TryGetValue("token", out Token cachedToken) && cachedToken != null)
{
return cachedToken;
}

Token newToken;

// Check if running in production (static secrets)
if (IsProductionEnvironment())
{
newToken = await FetchTokenAsync(
_configuration["ProdClientId"],
_configuration["ProdClientSecret"],
_configuration["ProdSubscriptionKey"]);
}
else
{
// For preproduction, fetch secrets dynamically from Key Vault
var clientId = await FetchSecretFromKeyVaultAsync($"preprod-{identifier}-clientId");
var clientSecret = await FetchSecretFromKeyVaultAsync($"preprod-{identifier}-clientSecret");
var subscriptionKey = await FetchSecretFromKeyVaultAsync($"preprod-{identifier}-subscriptionKey");

newToken = await FetchTokenAsync(clientId, clientSecret, subscriptionKey);
}

// Cache the token
_memoryCache.Set("token", newToken, new MemoryCacheEntryOptions().SetAbsoluteExpiration(newToken.ExpiresAt));

return newToken;
}

private async Task FetchSecretFromKeyVaultAsync(string secretName)
{
// Use KeyVault client to fetch secrets dynamically
KeyVaultSecret secret = await _secretClient.GetSecretAsync(secretName);
return secret.Value;
}
Мои вопросы:
Является ли этот подход динамического получения секретов из Key Vault на основе идентификатора запроса лучшей практикой или существует более эффективный способ справиться с этим?
/>Как мне лучше структурировать свой код для обработки как статических секретов для рабочей среды, так и динамических секретов для предварительной подготовки без дублирования логики?
Следует ли мне рассмотреть возможность использования других служб Azure (например, конфигурации приложений) для оптимизации этого подхода?
Мы будем очень признательны за любые советы по передовому опыту динамического получения секретов из Key Vault в таком сценарии!

Подробнее здесь: https://stackoverflow.com/questions/790 ... ironment-i
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»