Высокоуровневый Python-клиент для работы с HashiCorp Vault, с поддержкой автоматической инициализации, распечатывания (unseal), проверки токена и работы с KV Secret Engine (v2).
- ✅ Автоматическая инициализация Vault (если он не инициализирован)
- 🔓 Автоматическое распечатывание Vault при наличии ключей
- 🔐 Проверка действительности токена (
is_authenticated) - 📥 Чтение KV-секретов (v2) по пути и ключу
⚠️ Предупреждение, если Vault не запечатан, но токен отсутствует
.
├── client.py # Основной Vault-клиент
├── exceptions.py # Кастомные исключения
├── vault-cluster.json # (опционально) сохранение root_token и ключей
└── README.md # Этот файл
from client import Client
client = Client(
url='http://127.0.0.1:8200/',
token='your-token-here', # Опционально
keys=['key1', 'key2', 'key3'], # Для автоматического unseal
auto_initialize=True,
auto_unseal=True
)
# Проверка токена
if client.is_authenticated():
print("Аутентификация успешна")
# Получение значения из секрета
password = client.get_secret_value('my-app/config', key='db_password')
print(password)| Параметр | Тип | Значение по умолчанию | Описание |
|---|---|---|---|
token |
str | None |
None |
Токен Vault |
url |
str |
'http://localhost:8200/' |
URL сервера Vault |
kv_mount_point |
str |
'secret' |
Mount point для KV v2 |
verify |
str | bool |
True |
Проверка SSL-сертификата |
auto_unseal |
bool |
True |
Автоматический unseal |
auto_initialize |
bool |
True |
Автоинициализация |
shares |
int |
5 |
Кол-во ключей при init |
threshold |
int |
3 |
Сколько ключей нужно для unseal |
keys |
list[str] |
[] |
Ключи для распечатывания |
- Если Vault уже инициализирован и не запечатан, но не передан токен — будет выдано предупреждение.
- Если Vault запечатан, но не переданы ключи — клиент не сможет продолжить работу.
- Если передано меньше ключей, чем требуется по
threshold— будет исключениеVaultClientError.
Модуль определяет собственные исключения:
| Исключение | Когда возникает |
|---|---|
VaultClientError |
Ошибки инициализации, распечатывания, конфигурации |
VaultAuthenticationError |
Ошибки при проверке токена |
VaultSecretReadError |
Ошибки чтения KV-секретов |
⚠️ Важно: не используйте данный код без модификации в проде.
- Никогда не коммитьте
vault-cluster.jsonв репозиторий! - Всегда включайте проверку сертификатов (
verify=True) - Храните токены и ключи через переменные окружения или внешние secret manager'ы
- В проде используйте более безопасные способы авторизации (AppRole, JWT, Kubernetes)
pip install hvac