You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apache Drill从Hashicorp Vault获取存储凭证失败求助

解决Apache Drill从Hashicorp Vault获取凭证的问题

1. 先修复配置中的笔误

你的Drill存储配置里,propertyNames的password映射了错误的Vault密钥名:

"propertyNames": {
  "username": "usernameSecret",
  "password": "usernamePassword" // 这里写错了,Vault里的密码密钥是passwordSecret
}

修正为:

"propertyNames": {
  "username": "usernameSecret",
  "password": "passwordSecret"
}

这是导致日志提示“没有匹配配置属性名的凭证”的直接原因之一。

2. 适配Vault KV引擎版本

场景A:继续使用KV V1引擎

Drill依赖的vault-java-driver 5.1.0默认按KV V2的路径规则处理(自动在secretPath后追加/data),而KV V1的API路径不需要这个后缀。你需要:

  • 确保Drill的Vault客户端配置强制使用KV V1模式(若Drill支持配置engineVersion,设置为1)
  • 保持secretPath为kv/pg_gen,避免路径被错误追加/data

场景B:切换到KV V2引擎

KV V2的响应是嵌套的data.data结构,但当前版本的Drill VaultCredentialsProvider只会解析第一层data,导致无法读取到实际密钥。有两种解决方式:

方式1:修改Drill代码适配嵌套结构

修改VaultCredentialsProvider类的密钥提取逻辑,从第二层data中读取密钥:

// 原逻辑(仅读取第一层data)
Map<String, Object> secretData = response.getData();

// 修改后(读取嵌套的第二层data)
Map<String, Object> outerData = response.getData();
Map<String, Object> secretData = (Map<String, Object>) outerData.get("data");

重新编译Drill或替换对应插件JAR包即可生效。

方式2:调整secretPath路径

将Drill配置中的secretPath改为KV V2的完整数据路径:

"secretPath": "kv/data/pg_gen"

注意需确认Drill不会再额外追加/data后缀,否则会导致请求路径错误。

验证步骤

  1. 修正配置后重启Drill服务
  2. 查看DEBUG日志,确认Vault请求路径正确、响应数据解析正常
  3. 测试数据库连接,验证凭证是否成功获取

内容的提问来源于stack exchange,提问作者kichma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 06:50:28