HashiCorp Vault Python hvac阅读

时间:2019-03-06 19:10:22

标签: python-3.x hashicorp-vault

我想用python从豆荚中读取我的秘密。

我尝试一下:

import os
import hvac
f = open('/var/run/secrets/kubernetes.io/serviceaccount/token')
jwt = f.read()
client = hvac.Client()
client = hvac.Client(url='https://vault.mydomain.internal')
client.auth_kubernetes("default", jwt)
print(client.read('secret/pippo/pluto'))

我确定秘密/河马/冥王星存在。

我确定我已经正确认证

但是我总是收到“无”的答案。

我在哪里可以解决这个问题?

非常感谢

3 个答案:

答案 0 :(得分:1)

如果您从保险柜中读取KV值,则需要安装点和路径。 示例:

            vault_client.secrets.kv.v1.read_secret(
                path=path,
                mount_point=mount_point
            )

答案 1 :(得分:1)

正如@shawn 上面提到的,下面的命令也适用于我

import hvac
vault_url = 'https://<vault url>:8200/'
vault_token = '<vault token>'
ca_path = '/run/secrets/kubernetes.io/serviceaccount/ca.crt'  
secret_path = '<secret path in vault>'

client = hvac.Client(url=vault_url,token=vault_token,verify= ca_path)
client.is_authenticated()

read_secret_result = client.read(secret_path)
print(read_secret_result)
print(read_secret_result['data']['username'])
print(read_secret_result['data']['password'])

注意:ca_path 是 pod 存储 k8s CA 的地方,通常应该在“/run/secrets/kubernetes.io/serviceaccount/ca.crt”下找到

答案 2 :(得分:0)

我已经尝试了您在k8s Python3容器中提供的方法,我可以成功获取 Vault 秘密数据。

您需要在hvac.Client中指定正确的vault token参数并禁用client.auth_kubernetes方法。

试一下,并记住您的代码应在k8s Python容器而不是主机中运行。

import hvac

f = open('/var/run/secrets/kubernetes.io/serviceaccount/token')
jwt = f.read()
print("jwt:", jwt)
f.close()
client = hvac.Client(url='http://vault:8200', token='your_vault_token')
# res = client.auth_kubernetes("envelope-creator", jwt)
res = client.is_authenticated()
print("res:", res)
hvac_secrets_data_k8s = client.read('secret/data/compliance')
print("hvac_secrets_data_k8s:", hvac_secrets_data_k8s)

以下是结果:

92:qfedu shawn$ docker exec -it 202a119367a4 bash
airflow@airflow-858d8c6fcf-bgmwn:~$ ls
airflow-webserver.pid  airflow.cfg  config  dags  logs  test_valut_in_webserver.py  unittests.cfg  webserver_config.py
airflow@airflow-858d8c6fcf-bgmwn:~$ python test_valut_in_webserver.py
jwt: eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia
res: True
hvac_secrets_data_k8s: {'request_id': '80caf0cb-8c12-12d2-6517-530eecebd1e0', 'lease_id': '', 'renewable': False, 'lease_duration': 0, 'data': {'data': {'s3AccessKey': 'XXXX', 's3AccessKeyId': 'XXXX', 'sftpPassword': 'XXXX', 'sftpUser': 'XXXX'}, 'metadata': {'created_time': '2020-02-07T14:04:26.7986128Z', 'deletion_time': '', 'destroyed': False, 'version': 4}}, 'wrap_info': None, 'warnings': None, 'auth': None}