【发布时间】:2020-11-09 11:16:51
【问题描述】:
我正在尝试使用 hvac lib 从保险库中读取一个秘密。 我使用令牌成功验证。 我的代码:
import hvac
import os
f = open('/var/run/secrets/kubernetes.io/serviceaccount/token')
jwt = f.read()
client = hvac.Client(url='https://vault.domain.com', verify='/etc/ssl/certs/ca-certificates.crt')
client.auth_kubernetes("namespace1", jwt)
print(client.is_authenticated())
效果不错:
True
但如果我添加阅读秘密的部分:
response = client.kv.v1.read_secret(path='path/admin_pass')
我得到 403 禁止
raise exceptions.Forbidden(message, errors=errors, method=method, url=url)
hvac.exceptions.Forbidden: 1 error occurred:
* permission denied
, on get https://vault.domain.com/v1/secret/path/admin_pass
我想知道为什么,因为这条路径被赋予了权限
path "path/admin_pass" {
capabilities = ["read","list"]
}
hvac 使用的 url 与 vault 的 webUI 中使用的 url 有点不同,这有点奇怪:
网页界面:
https://vault.domain.com/ui/vault/path/show/admin_pass
Python 暖通空调:
https://vault.domain.com/v1/secret/path/admin_pass
有什么想法吗?
【问题讨论】:
标签: python-3.x hashicorp-vault