Vault の入門から熟練度までのシリーズ 4: Python コードを使用して Vault サーバーに接続し、パスワードを保存し、パスワードを読み取ります
1. Vault クライアントを作成する
すべてのリクエストに対してトークンベースの認証を使用する新しい Vault クライアントを初期化します。
import hvac
import sys
client = hvac.Client(
url='http://127.0.0.1:8200',
token='hvs.BvXow4DjJ8VntB57DjQnd2hY',
)
2. パスワードを保存する
シークレットは、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.')
3. パスワードの完全なコードを書き込みます
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.')
4 番目に、パスワードを表示するコマンドライン
コードを実行した後、コマンドラインでパスワードを表示します。
新しいターミナルを起動し、ルート トークンを使用します
export VAULT_ADDR='http://127.0.0.1:8200'
export VAULT_TOKEN="hvs.BvXow4DjJ8VntB57DjQnd2hY"
私の秘密のパスワードのパスワードを表示する
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
5. コードを使用してパスワードを表示します
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!