用一句话描述你的Python包。
项目描述
VaultAnyconfig
扩展了HVAC Hashicorp Vault客户端,并从anyconfig中添加了加载和转储功能。这允许自动混合Vault中的机密,允许您存储一个包含所有详细信息(除了机密)的配置文件,然后访问Hashicorp Vault将机密加载到内存字典中。
支持的机密引擎
目前vault-anyconfig 仅 支持1和2版本的键值存储。
kv2限制
- vault-anyconfig 仅 将读取机密的最新版本以保持配置文件的简单性
- 由于HVAC客户端的限制,必须在kv2机密的mountpoint后添加
data
,例如secret/data/example-secret
文件和格式
有三个配置文件(也可以作为字符串提供),可以存储在一个、两个或三个文件中,只要它们正确编写即可。
本节中的示例将是JSON,但可以使用任何由anyconfig支持的文件格式。
Vault配置
这配置了与Vault的连接,必须包含至少一个成员(通常是url参数)。如果没有提供此部分或为空,则不会配置Vault实例,而是仅使用anyconfig功能。
该部分必须命名为 vault_config
,可以包含初始化 HVAC 客户端 的任何有效参数。
示例
{
"vault_config": {
"url": "https://vault.acme.com:8200"
}
}
Vault 认证
这为使用 auto_auth
方法提供了认证,必须命名为 vault_creds
。它应该包含一个名为 auth_method
的成员,该成员应与 HVAC 客户端 中的某个认证方法相对应(不带 "auth_
" 前缀),例如 approle
。其余成员应与指定的认证方法的参数相匹配。
示例
{
"vault_creds": {
"role_id": "sample-role-id",
"secret_id": "sample-secret-id",
"auth_method": "approle"
}
}
主要配置
主要配置应包含您所需的配置部分(不包括秘密,除非需要透明模式),以及一个名为 vault_secrets
的部分。在 vault_secrets
部分,键是用于插入到您的配置中的键的点分隔路径,值是 Vault 中秘密的路径。请参阅 vault_secrets
使用部分,了解指定秘密的不同方法。
此外,还包括一个 vault_files
部分,用于从 Vault 获取文件并将其写入磁盘。这不被推荐(应尽量减少秘密持久化的时间),但包括用于需要秘密文件路径的旧应用程序(例如 TLS 证书)。
原始配置示例
{
"website": {
"host": "http://acme.com",
"site-name": "Great Products for Coyotes",
"tls-key": "/etc/web/acme.com.key",
"tls-cert": "/etc/web/acme.com.crt"
},
"vault_secrets": {
"website.db_user": "secret/mysql/customer.user",
"website.db_pwd": "secret/mysql/customer.password"
},
"vault_files": {
"website.tls-key": "secret/website/proxy.key",
"website.tls-cert": "secret/website/proxy.cert"
}
}
结果字典示例
{
"website": {
"host": "http://acme.com",
"site-name": "great products",
"tls-key": "/var/acme/acme.com.key",
"tls-cert": "/var/acme/acme.com.crt",
"db_user": "customer",
"db_pwd": "customer-password"
},
"vault_files": {
"website.tls-key": "secret/website/proxy.key",
"website.tls-cert": "secret/website/proxy.cert"
}
}
vault_secrets 使用
vault_secrets
条目必须有一个 config key
和一个 secret path
。config_key
是要添加或更新的配置项的点分隔路径。secret_path
是秘密在 Vault 中的路径。例如
{
"website": {},
"vault_secrets": {
"website.db_user": "secret/mysql/customer"
}
}
在 vault_secrets
中,website.db_user
是 config_key
,而 secret/mysql/customer
是 secret_path
。在 Vault 的 secret_path
中使用的键将是 db_user
。
默认情况下,config key
的最后一个部分将被用作 Vault 中秘密的键。然而,您可以在 secret_path
上添加一个带有点分隔符的唯一键。以下是一个例子
{
"website": {},
"vault_secrets": {
"website.db_user": "secret/mysql/customer.user"
}
}
此示例从 mysql/customer
秘密中获取名为 user
的值,并将其映射到 website
部分的 db_user
键。这允许在不同的配置中从相同的秘密中提取内容,而不必强制所有 config_key
名称都相同。例如,如果 cron 作业也需要从 mysql/customer.user
获取 user
值,但其配置将其命名为 user
,那么您可能会得到一个看起来像这样的配置文件
{
"website": {},
"vault_secrets": {
"mailer_cron.user": "secret/mysql/customer.user"
}
}
Key-Value Store V2 限制:您必须在挂载点后包含 data
,例如,使用 V2 时,secret/mysql/customer
应为 secret/data/mysql/customer
。
vault_files 使用
注意 在可能的情况下,请优先将秘密作为字符串处理,并在内存中使用它们。只有当为需要将秘密作为文件提供的应用程序配置时才使用此模式(例如 TLS 密钥文件)。
注意 与 vault_secrets
不同,vault_files
部分保留在 vault_anyconfig 返回的字典中,以便在将最终配置写入文件(例如 CLI)时保留映射。
警告! vault_files
功能假定它正在以应用程序用户身份运行,并且必须具有对文件和要存储文件的位置的适当权限。
警告! vault_files
将愉快地覆盖您的文件,并且不保留备份。
警告! 如果文件位置更改,它将不会删除!负责任地使用。
使用 vault_files
部分有两种主要方式。第一种是直接指定文件位置和秘密作为路径。例如
{
"vault_files": {
"/var/acme/acme.com.crt": "secret/website/proxy.key"
}
}
第二种方法是引用配置中的键。这避免了在配置的多个部分中重复文件路径。
{
"website": {
"tls-key": "/etc/web/acme.com.key",
"tls-cert": "/etc/web/acme.com.crt",
},
"vault_files": {
"website.tls-key": "secret/website/proxy.key",
"website.tls-cert": "secret/website/proxy.cert"
}
}
默认情况下,secret_path
在Vault密钥中使用file
作为键。但是,secret_path
可以使用与vault_secrets
中相同的点表示法来指定键,例如:secret/acme/secret-key.key
警告! 当从路径中分隔键时,secret_path
字符串只能使用点(.
)。额外的点将导致vault_anyconfig抛出错误。
Key-Value Store V2限制:在使用V2时,必须在挂载点后包含data
,例如,secret/website/proxy
在使用V2时应为secret/data/website/proxy
。
配置文件指南
尽管可以将所有三个文件合并为一个文件,但建议将vault_creds
和vault_config
部分分离到自己的文件中,并对其使用限制性权限,例如400
,因为访问Vault所需的机密必须存在于这些文件中。
使用
初始化
VaultAnyconfig可以通过三种方式(针对两种不同模式)进行初始化:
- 从一个Vault配置文件中(请参阅文件和格式说明)
- 通过指定初始化HVAC客户端时使用的参数。
- 不提供任何参数(或一个包含空
vault_config
部分的配置文件),在这种情况下,它处于透传模式,其中不会从Vault加载机密。
与Vault进行身份验证
您可以通过提供文件作为说明中的说明来使用auto_auth
,或者您可以直接使用HVAC客户端中的认证方法。如果设置了透传模式,auto_auth
将始终返回true,但HVAC客户端方法将失败,因此建议尽可能使用auto_auth
。
插入密钥加载/保存文件
只需按需调用load
、loads
、dump
或dumps
方法。调用方式与直接调用anyconfig方法相同。
变更日志
0.0.1-dev (2019-04-05)
- 首次发布在PyPI上。
项目详情
vault-anyconfig-0.3.1.tar.gz的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | bd98b86195288dfe3fc07490e5ff44c0ab0206957ebfd8c554fd38807651019d |
|
MD5 | 17b003cf389a5c1b49da5958a2fa6936 |
|
BLAKE2b-256 | e977d318276cc16989d60f58e8166ea6c142833863e8f53e1d570721117f469b |