使用python从企业保险库获取秘密

时间:2020-06-27 05:43:38

标签: python hashicorp-vault

我正在尝试从企业库中获取机密(用户ID /密码)。手动尝试读取用户ID和密码时,我先通过okta登录到Vault,然后选择一个名称空间,然后在该名称空间中输入正确的路径即可获取机密信息。

我想以编程方式执行此操作,但是我不知道从哪里开始。我找到了一些“ HVAC”软件包,这些文件对于保管库登录很有用。

这里有人可以发布登录金库然后从金库中获取秘密的方法吗?考虑将在AWS ec2计算机上运行的应用程序。该应用程序可以访问AWS sts服务和AWS Cognito。

我正在使用以下代码,并从ec2实例中运行它:

import logging
import requests
from requests.exceptions import RequestException
import hvac
logger = logging.getLogger(__name__)
EC2_METADATA_URL_BASE = 'http://169.254.169.254'
def load_aws_ec2_role_iam_credentials(role_name, metadata_url_base=EC2_METADATA_URL_BASE):
    
    metadata_pkcs7_url = '{base}/latest/meta-data/iam/security-credentials/{role}'.format(
        base=metadata_url_base,
        role=role_name,
    )
    logger.debug("load_aws_ec2_role_iam_credentials connecting to %s" % metadata_pkcs7_url)
    response = requests.get(url=metadata_pkcs7_url)
    response.raise_for_status()
    security_credentials = response.json()
    return security_credentials
credentials = load_aws_ec2_role_iam_credentials('my_ec2_role')

a = credentials['AccessKeyId']
b = credentials['SecretAccessKey']
c = credentials['Token']
client = hvac.Client(
        url='http://vault.mycompany.net/ui/vault/secrets?namespace=namespace1',
        token = c
        )
print(client.is_authenticated())

list_response = client.secrets.kv.v2.list_secrets(
        path='path'
)
print(list_response['data'])

我收到响应“ true”,然后出现此错误 收到此错误:

Traceback (most recent call last):
  File "3.py", line 44, in <module>
    print(list_response['data'])
TypeError: 'Response' object is not subscriptable

。谁能告诉我我在做什么错?如果在我的企业保管库中有一个名为“ namespace1”的命名空间,它将是URL。

0 个答案:

没有答案