Как динамически получать секреты 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#»