Vault从入门到精通系列之四:使用python代码连接Vault服务器,存储密码、读取密码
一、创建Vault客户端
初始化一个新的 Vault 客户端,该客户端将对其所有请求使用基于令牌的身份验证:
import hvac
import sys
client = hvac.Client(
url='http://127.0.0.1:8200',
token='hvs.BvXow4DjJ8VntB57DjQnd2hY',
)
二、存储密码
秘密是我们不应该存储在我们的代码或配置文件中的敏感数据,例如 API 密钥和密码。相反,我们希望在 Vault 中存储这样的值。
我们将使用刚刚初始化的 Vault 客户端向 Vault 写入密码,如下所示:
create_response = client.secrets.kv.v2.create_or_update_secret(
path='my-secret-password',
secret=dict(password='Hashi123'),
)
print('Secret written successfully.')
三、写入密码的完整代码
import hvac
import sys
client = hvac.Client(
url='http://127.0.0.1:8200',
token='hvs.BvXow4DjJ8VntB57DjQnd2hY',
)
create_response = client.secrets.kv.v2.create_or_update_secret(
path='my-secret-password',
secret=dict(password='Hashi123'),
)
print('Secret written successfully.')
四、命令行查看密码
执行代码后,命令行查看密码
新起一个终端,使用根令牌
export VAULT_ADDR='http://127.0.0.1:8200'
export VAULT_TOKEN="hvs.BvXow4DjJ8VntB57DjQnd2hY"
查看my-secret-password密码
vault kv get -mount=secret my-secret-password
========= Secret Path =========
secret/data/my-secret-password
======= Metadata =======
Key Value
--- -----
created_time 2023-06-19T06:38:47.440087Z
custom_metadata <nil>
deletion_time n/a
destroyed false
version 1
====== Data ======
Key Value
--- -----
password Hashi123
五、使用代码查看密码
read_response = client.secrets.kv.read_secret_version(path='my-secret-password')
password = read_response['data']['data']['password']
print(password)
if password != 'Hashi123':
sys.exit('unexpected password')
print('Access granted!')
执行代码,输出如下所示:
Hashi123
Access granted!