ViennaNET.Extensions.Configuration.HashicorpVault 6.0.2

There is a newer version of this package available.
See the version list below for details.
dotnet add package ViennaNET.Extensions.Configuration.HashicorpVault --version 6.0.2                
NuGet\Install-Package ViennaNET.Extensions.Configuration.HashicorpVault -Version 6.0.2                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="ViennaNET.Extensions.Configuration.HashicorpVault" Version="6.0.2" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add ViennaNET.Extensions.Configuration.HashicorpVault --version 6.0.2                
#r "nuget: ViennaNET.Extensions.Configuration.HashicorpVault, 6.0.2"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install ViennaNET.Extensions.Configuration.HashicorpVault as a Cake Addin
#addin nuget:?package=ViennaNET.Extensions.Configuration.HashicorpVault&version=6.0.2

// Install ViennaNET.Extensions.Configuration.HashicorpVault as a Cake Tool
#tool nuget:?package=ViennaNET.Extensions.Configuration.HashicorpVault&version=6.0.2                

ViennaNET.Extensions.Configuration.HashicorpVault

Предоставляет API поставщика конфигурации на основе секретов в хранилище Hashicorp Vault. Позволяет добавить, в качестве источника секрет в формате ключ/значение или JSON.

Оглавление

Введение

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

Установка

Добавьте в проект веб-службы сслыку на пакте ViennaNET.Extensions.Configuration.HashicorpVault.

dotnet add package ViennaNET.Extensions.Configuration.HashicorpVault

Руководство пользователя

Создайте секрет в Vault используя KV Secrets Engine и один из двух форматов представленных ниже.

<details> <summary>В классическом формате словаря (Key/Value).</summary>

  "SecretKey1": "SecretExampleValueString"
  "SecretKey2": "true"
  "SecretKey3": "123456"

Чтобы отразить иерархию используйте в качестве разделителя символы: -, . или _.

  "Secret-Example-Key1": "SecretExampleValueString",
  "Secret-Example-Key2": "true",
  "Secret-Example-Key3": "123456"

</details>

<details> <summary>В формате JSON (соответствует формату appsettings.json).</summary>

{
  "Secret": {
    "Example": {
      "Key1": "SecretExampleValueString",
      "Key2": true,
      "Key3": 123456
    }
  }
}

</details>

Затем добавьте и настройте поставщик конфигурации.


// Для получения параметров HTTP клиента Vault API.
builder.Configuration.AddEnvironmentVariables("VAULT_");

// Средонезависимая конфигурация. Без перезагрузки.
// В итоговый путь будет равен: /kv/appsettings.json
builder.Configuration.AddVault(options => builder.Configuration.Bind(options), "appsettings.json", 1);

// Средозависимая конфигурация, по аналогии с appsettings.Development.json и т. д.
// Без перезагрузки.
builder.Configuration.AddVault(options => builder.Configuration.Bind(options), 
    $"appsettings.{builder.Environment.EnvironmentName}.json");

// Средонезависимая конфигурация. Перезагружается раз в 10 секунд.
// Загружает последнюю доступную версию секрета "some-secret-name".
builder.Configuration.AddVault(options => builder.Configuration.Bind(options),
    "some-secret-name", reloadInterval: TimeSpan.FromSeconds(10));

Перед запуском приложения установите значения переменных сред любым, допустимым способом. Например с помощью ConfigMap и Secret в K8S или с помощью Ansible в не контейнерезированных средах.

Variable Описание Обязательно
VAULT_BASE_ADDRESS Адрес службы HashicorpVault, где размещены хранилища. ДА
VAULT_APP_ROLE_ID Учётные данные клиента: App Role ID ДА
VAULT_APP_SECRET_ID Учётные данные клиента: App Secret ID ДА

Далее используйте платформу конфигурации, как обычно.

Известные проблемы и ограничения

  1. Поставщик конфигурации поддерживает только KV Secrets Engine.
  2. Каждая версия секрета, считается не изменяемой, поэтому автоматическая перезагрузка возможна, только если вы не указываете версию. Тогда, при каждой перезагружке, поставщик запрашивает latest.
  3. Если целевая версия отмечена как удалённая, возникает исключение.
Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
8.0.8 111 4/23/2024
8.0.7 121 1/11/2024
8.0.1 116 12/29/2023
6.0.5 122 12/29/2023
6.0.2 140 12/8/2023
6.0.1-tags-6-0-0-0001 104 12/5/2023