Pydantic BaseSettings的一个简单扩展,可以从Hashicorp Vault检索机密

pydantic-vault的Python项目详细描述


Pydantic拱顶

Check code

PydanticBaseSettings的简单扩展,可以从HashicorpVault中的KV v2 secrets engine检索机密

入门

与Pydantic BaseSettings相同,创建一个继承pydantic_vault.VaultBaseSettings的类,然后定义字段并使用

importosfrompydanticimportSecretStr,Fieldfrompydantic_vaultimportVaultBaseSettingsclassSettings(VaultBaseSettings):username:str=Field(...,vault_secret_path="path/to/secret",vault_secret_key="my_user")password:SecretStr=Field(...,vault_secret_path="path/to/secret",vault_secret_key="my_password")classConfig:vault_url:str="https://vault.tld"vault_token:SecretStr=os.environ["VAULT_TOKEN"]vault_namespace:str="your/namespace"# Optional, pydantic-vault supports Vault namespaces (for Vault Enterprise)vault_secret_mount_point:str="secrets"# Optional, if your KV v2 secrets engine is not available at the default "secret" mount pointsettings=Settings()# These variables will come from the Vault secret you configuredsettings.usernamesettings.password.get_secret_value()# Now let's pretend we have already set the USERNAME in an environment variable# (see the Pydantic documentation for more information and to know how to configure it)# Its value will override the Vault secretos.environ["USERNAME"]="my user"settings=Settings()settings.username# "my user", defined in the environment variablesettings.password.get_secret_value()# the value set in Vault

文件

Field其他参数

您可能已经注意到我们直接从Pydantic导入Field。Pydantic保险库不添加任何自定义逻辑,这意味着您仍然可以使用Pydantic中您知道和喜爱的所有内容。在

Pydantic Vault使用的其他参数包括:

Parameter nameRequiredDescription
^{}YesThe path to your secret in Vault
^{}YesThe key to use in the secret

例如,如果创建一个密钥为password且值为a secret password的机密database/prod,则可以使用

^{pr2}$

身份验证

目前Pydantic Vault只支持直接令牌身份验证,即必须使用您选择的方法进行身份验证,然后将生成的保险库令牌传递给您的Settings类。在

计划对Approle和Kubernetes身份验证方法提供支持。在

配置

Settings.Config类中,可以配置以下元素:

^{tb2}$

您还可以配置原始Pydantic BaseSettings类中可用的所有内容。在

优先顺序

设定值的确定如下(按优先级降序排列):

  • 传递给Settings类初始值设定项的参数
  • 环境变量
  • Vault变量
  • Settings模型的默认字段值

它是same order,与原始的BaseSettings相同,但是在默认值之前是Vault。在

许可证

Pydantic Vault在MIT license下可用。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Rest DSL路由无法启动路由,因为同一端点不允许有多个使用者   jvm有没有像JConsole或VisualVM这样的工具可以告诉我“类、对象、引用变量在java中存储在哪里?”   java为什么我的列表中的所有元素看起来都一样?   java运行时。运行shell脚本的exec无法打开文件   JPopupMenu的JMenuItem的java热键   会话在Java中被覆盖   如何在java中去除字符串中的尖锐重音?   java Mockito监视一个接口,模拟它的默认方法,获取NullPointerException   javascript如何在jquery中禁用同一时间选择   将数组列表附加到现有CSV文件,但它会附加并清除存储在Java文件中的以前的数据   java从我的jar中访问pdf文件   java Sonar issue参数必须为非Null,但标记为可为Null   java Salesforce流式API:在网络故障之后和重新订阅之前获取事件   在Java 1.8.0_65上运行Play2.0应用程序时出现playframework错误   java为什么字母的ASCII由方法自动转换。toCharArray()?   java如何知道JDialog是否关闭?   java向服务器发送POST请求,服务器的响应为null,启动   java如何设置JTable中特定单元格的值?   ImagePlus中的java保存问题