我的HashiCorp Vault实例在CentOS7上正常运行。我启用了AppRole身份验证,创建了策略和角色,启用了秘密引擎并为客户端应用程序创建了秘密。
我可以使用root CLI检索机密数据,但是我不知道如何使用curl使用应用程序角色从HTTP API获取机密数据。我尝试了几种端点组合,但均未成功。检索客户端令牌是可行的,但我本身无法获取秘密数据。
我想知道API端点是否正确,或者是否在进行其他设置。
身份验证方法
vault auth enable approle
政策
# File: my_app /etc/vault/my_app.hcl
path "kv/data/foo/*" {
capabilities = ["read", "list"]
}
# Command line
vault policy write my_app /etc/vault/my_app.hcl
角色
vault write auth/approle/role/my_app policies="my_app"
秘密创建
vault kv put kv/data/foo/user@domain.tld password=1234
API调用令牌请求
curl --request POST --data '{"role_id": "xxxxxxxxxxxxxxxxx", "secret_id": "xxxxxxxxxxxxxxxxxxxx"}' http://127.0.0.1:8200/v1/auth/approle/login | jq
结果:令牌已正确检索
用于秘密数据请求的API调用
export VAULT_CLIENT_TOKEN=XXXXXXX
curl --header "X-Vault-Token: $VAULT_CLIENT_TOKEN" --request GET "http://127.0.0.1:8200/v1/kv/data/foo/user@domain.tld"
结果:未检索到任何秘密数据 输出:
{“错误”:[]}
CLI调用秘密数据
vault kv get -field=password kv/data/foo/user@domain.tld
输出:
1234
全局设置
vault secrets list
Path Type Accessor Description
---- ---- -------- -----------
cubbyhole/ cubbyhole cubbyhole_xxxxxxxx per-token private secret storage
identity/ identity identity_xxxxxxxx identity store
kv/ kv kv_xxxxxxxx n/a
sys/ system system_xxxxxxxx system endpoints used for control, policy and debugging