Skip to content

zaphire12/vault_python_client

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

🔐 Vault Client (Python)

Высокоуровневый 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

📘 Полезные ссылки


About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages