ViennaNET.Extensions.Configuration.HashicorpVault
6.0.2
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
<PackageReference Include="ViennaNET.Extensions.Configuration.HashicorpVault" Version="6.0.2" />
paket add ViennaNET.Extensions.Configuration.HashicorpVault --version 6.0.2
#r "nuget: ViennaNET.Extensions.Configuration.HashicorpVault, 6.0.2"
// 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 | ДА |
Далее используйте платформу конфигурации, как обычно.
Известные проблемы и ограничения
- Поставщик конфигурации поддерживает только KV Secrets Engine.
- Каждая версия секрета, считается не изменяемой, поэтому автоматическая перезагрузка возможна, только если вы не указываете версию. Тогда, при каждой перезагружке, поставщик запрашивает latest.
- Если целевая версия отмечена как удалённая, возникает исключение.
Product | Versions 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. |
-
net6.0
- Microsoft.Extensions.Configuration (>= 6.0.1)
- VaultSharp (>= 1.12.2.1)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.