hashicorp 保险库 - 无法使用 API 列出秘密,但可以使用 CLI 成功验证
hashicorp vault - unable to list a secret using the API but can successfully verify using CLI
我有一个处于开发模式的本地 Vault 服务器,因此我可以学习和理解如何使用 Vault。
在这个练习中,我的目标是 load/put 使用 API 将证书放入秘密引擎。我已经能够通过这个 curl 命令做到这一点:
curl --header "X-Vault-Token: $VAULT_TOKEN" \
--request POST \
--data @payload-cert.json \
http://127.0.0.1:8200/v1/kv-v1/prod/cert1/mysql
我可以通过 运行 CLI 命令验证此证书是否存在:
vault kv get kv-v1/prod/cert1/mysql
示例输出显示它在那里:
==== Data ====
Key Value
--- -----
cert -----BEGIN CERTIFICATE-----
MIICyjCCAbICCQDrpZYh8et7yTANBgkqhkiG9w0BAQsFADAnMQswCQYDVQQGEwJV
UzELMAkGA1UECAwCQ0ExCzAJBgNVBAcMAlNGMB4XDTE4MTExMjIwNDEwNVoXDTE4
MTIxMjIwNDEwNVowJzELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMQswCQYDVQQH
DAJTRjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJnIdgpml8+xk+Oj
1RGMCyJ1P15RiM6rdtszT+DFBg893Lqsjoyd5YgwELLz0Ux8nviG4L5OXOujEpAP
2cQBxTSLQjBELBZY9q0Qky3+2ewqV6lSfcXrcf/JuDJGR5K8HSqwNG35R3WGnZ+O
JhY0Dmx06IAs/FF8gP88zTQ8M7zuaThkF8MaF4sWPf6+texQwjzk4rewknGBFzar
9wFxVwNCyDD6ewIYPtgDxdJ1bwBVoX3KKKXm8GStl/Zva0aEtbSq/161J4VbTro2
dxArMPKzxjD6NLyF59UNs7vbzyfiw/Wq7BJzU7Kued5KdGt0bEiyWZYO+EvvxGmE
1pHfqysCAwEAATZNBgkqhkiG9w0BAQsFAAOCAQEAavj4CA+7XFVHbwYMbK3c9tN/
73hkMvkAZWix5bfmOo0cNRuCeJnRIX+o6DmusIc8eXJJJV/20+zoSvUwlsLDPXoN
+c41GfIiEUSaSdSBtETMy8oPga718nIwAvNgYiUHXnV3B0nLYBUpYSnsD00/6VXG
xZUIEVBd7Ib5aRwmK8U5drxoWaBoG5qdvH9iapwTrCcPsRjsLBq7Iza2oBORGlfF
CjqiW2+KJzwRiTQj70yceniGVHM+VSpFYCLJ0mXeyLfITy7joqxr4AGYz+EhpLuf
iDpYDNYlr0JDVQqogskWjrnWOh0YcIJKgVtiTh2HDM5TdQgeXg4wv5IqLok0Tw==
-----END CERTIFICATE-----
但是,我需要使用 API 来验证这一点。我怎么做?我正在使用这个命令:
curl -s --header "X-Vault-Token:$VAULT_TOKEN" --request LIST http://127.0.0.1:8200/v1/kv-v1/prod/cert1/mysql | jq
结果显示为空:
{
"errors": []
}
我刚刚使用 CLI 验证了它的存在。我的 curl 语句遗漏了什么或做错了什么?
当您需要尝试列出文件夹时,您正在尝试列出单个项目。如果您只是从 URL 中删除 mysql
,它应该会显示 mysql
项目:
curl -s --header "X-Vault-Token:$VAULT_TOKEN" --request LIST http://127.0.0.1:8200/v1/kv-v1/prod/cert1/ | jq
参见https://www.vaultproject.io/api-docs/secret/kv/kv-v1#list-secrets。
如果您想复制从 CLI 获得的响应,您需要使用 GET
请求:
curl -s --header "X-Vault-Token:$VAULT_TOKEN" --request GET http://127.0.0.1:8200/v1/kv-v1/prod/cert1/mysql | jq
我有一个处于开发模式的本地 Vault 服务器,因此我可以学习和理解如何使用 Vault。 在这个练习中,我的目标是 load/put 使用 API 将证书放入秘密引擎。我已经能够通过这个 curl 命令做到这一点:
curl --header "X-Vault-Token: $VAULT_TOKEN" \
--request POST \
--data @payload-cert.json \
http://127.0.0.1:8200/v1/kv-v1/prod/cert1/mysql
我可以通过 运行 CLI 命令验证此证书是否存在:
vault kv get kv-v1/prod/cert1/mysql
示例输出显示它在那里:
==== Data ====
Key Value
--- -----
cert -----BEGIN CERTIFICATE-----
MIICyjCCAbICCQDrpZYh8et7yTANBgkqhkiG9w0BAQsFADAnMQswCQYDVQQGEwJV
UzELMAkGA1UECAwCQ0ExCzAJBgNVBAcMAlNGMB4XDTE4MTExMjIwNDEwNVoXDTE4
MTIxMjIwNDEwNVowJzELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMQswCQYDVQQH
DAJTRjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJnIdgpml8+xk+Oj
1RGMCyJ1P15RiM6rdtszT+DFBg893Lqsjoyd5YgwELLz0Ux8nviG4L5OXOujEpAP
2cQBxTSLQjBELBZY9q0Qky3+2ewqV6lSfcXrcf/JuDJGR5K8HSqwNG35R3WGnZ+O
JhY0Dmx06IAs/FF8gP88zTQ8M7zuaThkF8MaF4sWPf6+texQwjzk4rewknGBFzar
9wFxVwNCyDD6ewIYPtgDxdJ1bwBVoX3KKKXm8GStl/Zva0aEtbSq/161J4VbTro2
dxArMPKzxjD6NLyF59UNs7vbzyfiw/Wq7BJzU7Kued5KdGt0bEiyWZYO+EvvxGmE
1pHfqysCAwEAATZNBgkqhkiG9w0BAQsFAAOCAQEAavj4CA+7XFVHbwYMbK3c9tN/
73hkMvkAZWix5bfmOo0cNRuCeJnRIX+o6DmusIc8eXJJJV/20+zoSvUwlsLDPXoN
+c41GfIiEUSaSdSBtETMy8oPga718nIwAvNgYiUHXnV3B0nLYBUpYSnsD00/6VXG
xZUIEVBd7Ib5aRwmK8U5drxoWaBoG5qdvH9iapwTrCcPsRjsLBq7Iza2oBORGlfF
CjqiW2+KJzwRiTQj70yceniGVHM+VSpFYCLJ0mXeyLfITy7joqxr4AGYz+EhpLuf
iDpYDNYlr0JDVQqogskWjrnWOh0YcIJKgVtiTh2HDM5TdQgeXg4wv5IqLok0Tw==
-----END CERTIFICATE-----
但是,我需要使用 API 来验证这一点。我怎么做?我正在使用这个命令:
curl -s --header "X-Vault-Token:$VAULT_TOKEN" --request LIST http://127.0.0.1:8200/v1/kv-v1/prod/cert1/mysql | jq
结果显示为空:
{
"errors": []
}
我刚刚使用 CLI 验证了它的存在。我的 curl 语句遗漏了什么或做错了什么?
当您需要尝试列出文件夹时,您正在尝试列出单个项目。如果您只是从 URL 中删除 mysql
,它应该会显示 mysql
项目:
curl -s --header "X-Vault-Token:$VAULT_TOKEN" --request LIST http://127.0.0.1:8200/v1/kv-v1/prod/cert1/ | jq
参见https://www.vaultproject.io/api-docs/secret/kv/kv-v1#list-secrets。
如果您想复制从 CLI 获得的响应,您需要使用 GET
请求:
curl -s --header "X-Vault-Token:$VAULT_TOKEN" --request GET http://127.0.0.1:8200/v1/kv-v1/prod/cert1/mysql | jq