You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Hashicorp Vault OSS使用Python hvac库无法登录但Curl可正常登录的问题求助

Hashicorp Vault OSS使用Python hvac库无法登录但Curl可正常登录的问题求助

各位大佬好!我最近碰到个挠头的问题:用Python的hvac库连接自己的Hashicorp Vault开源版(OSS)实例时,一直登录失败,但用curl命令却能毫无问题地完成登录,实在找不到症结所在,来这儿求帮忙啦!

先交代下我的环境和配置:

  • Vault版本:纯开源版(OSS),完全没用到Enterprise功能
  • 依赖库:用的是最新稳定版的Python hvac库
  • Vault地址:https://vault-oss.eu.gcp.mydomain.net
  • AppRole挂载点:mountpoint

下面是我的Python代码(UUID都是示例用的随机值,实际用的是和curl里完全一致的有效ID):

VAULT_ADDR="https://vault-oss.eu.gcp.mydomain.net"
VAULT_MOUNT_POINT="mountpoint"
VAULT_ROLE_ID="355398f3-76c4-49f6-ac10-c27888b15933" 
VAULT_SECRET_ID="f84cac3d-e34c-4d12-a241-7d0fff706abb" 

# 初始化hvac客户端
client = hvac.Client(
    url=VAULT_ADDR,
)

# 尝试用AppRole方式登录
try:
    login_response = client.auth.approle.login(
        role_id=VAULT_ROLE_ID,
        secret_id=VAULT_SECRET_ID,
        mount_point=VAULT_MOUNT_POINT
    )
    print("登录成功!当前token:", client.token)
except Exception as e:
    print(f"登录失败,错误提示:{str(e)}")

而对应的curl命令却能正常返回登录响应,拿到有效的token:

curl --request POST \
  --data '{"role_id": "355398f3-76c4-49f6-ac10-c27888b15933", "secret_id": "f84cac3d-e34c-4d12-a241-7d0fff706abb"}' \
  https://vault-oss.eu.gcp.mydomain.net/v1/auth/mountpoint/login

我已经排查过的点:

  • 反复核对了VAULT_ADDRVAULT_ROLE_IDVAULT_SECRET_IDVAULT_MOUNT_POINT这些参数,和curl里用的完全一致,连大小写都没差
  • 用Python的requests库测试过Vault的健康检查接口GET /v1/sys/health,能正常返回状态,说明网络是通的
  • 本地没开代理,curl和Python脚本用的是同一个网络环境
  • 尝试过关闭hvac的证书验证(初始化client时加verify=False),结果还是登录失败

有没有大佬遇到过类似的情况?或者能帮我看看我的hvac代码哪里写得不对?或者hvac库在处理Vault OSS的AppRole登录时有什么容易忽略的细节吗?麻烦各位指点一下,谢谢啦!

火山引擎 最新活动