A Pydantic v2 settings extension for secure configuration management using HashiCorp Vault OpenSource (OSS) and Enterprise
Project description
Pydantic2-Settings-Vault
Pydantic2-Settings-Vault is a simple extension of Pydantic Settings to collect secrets from HashiCorp Vault OpenSource (OSS) and Enterprise
Demonstration:
from typing import Tuple, Type
from pydantic import Field, SecretStr
from pydantic_settings import (
BaseSettings,
PydanticBaseSettingsSource,
)
from pydantic2_settings_vault import VaultConfigSettingsSource
class AppSettings(BaseSettings):
MY_SECRET: SecretStr = Field(
...,
json_schema_extra={
"vault_secret_path": "secret/data/test",
"vault_secret_key": "FOO", # pragma: allowlist secret
},
)
@classmethod
def settings_customise_sources(
cls,
settings_cls: Type[BaseSettings],
init_settings: PydanticBaseSettingsSource,
env_settings: PydanticBaseSettingsSource,
dotenv_settings: PydanticBaseSettingsSource,
file_secret_settings: PydanticBaseSettingsSource,
) -> Tuple[PydanticBaseSettingsSource, ...]:
return (
init_settings,
env_settings,
dotenv_settings,
VaultConfigSettingsSource(settings_cls=settings_cls),
)
# The connection to Vault is done via HTTP with AppRole authentication
import os
os.environ['VAULT_URL'] = "<configure it>"
os.environ['VAULT_ROLE_ID'] = "<configure it>"
os.environ['VAULT_SECRET_ID'] = "<configure it>"
# Only with Enterprise edition
os.environ['VAULT_NAMESPACE'] = "<configure it>"
Table of Contents
Description
Pydantic2-Settings-Vault is a extension for Pydantic Settings that enables secure configuration management by integrating with HashiCorp Vault. This library supports both the open-source (OSS) and Enterprise versions of Vault, providing a seamless way to retrieve and manage secrets within your Pydantic-based applications. By leveraging Vault's robust security features, Pydantic2-Settings-Vault allows developers to easily incorporate secure secret management practices into their Python projects, enhancing overall application security and simplifying the handling of sensitive configuration data.
Installation
# Install the dependency
pip install pydantic2-settings-vault
uv add pydantic2-settings-vault
poetry add pydantic2-settings-vault
License
Pydantic2-Settings-Vault is released under the MIT License. See the LICENSE file for more details.
Contact
For questions, suggestions, or issues related to Pydantic2-Settings-Vault, please open an issue on the GitHub repository.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for pydantic2_settings_vault-1.0.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | ab0a8a3631132668e093a7e10e1476d0fb0bd57f9d69c0dc48aef194afe51998 |
|
MD5 | 8fdc1a711ddf8d29185178f54404b863 |
|
BLAKE2b-256 | 3034d95857127576ab1a4b32becdd7059d11df51b4d02b20b24c8006c6c7d79b |
Hashes for pydantic2_settings_vault-1.0.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 277942b85b171100ad53862d0827aceaec23c7390e5bc81c5400fdfab6b73f8a |
|
MD5 | d05276ed264e1190d21041f8f95d3c7d |
|
BLAKE2b-256 | 09ca5bec8d0d3aa550e13bf25611903c910c7bc2f7334a57dc6c794988a8c4a4 |