从 Vault CLI 读取机密

Reading secrets from Vault CLI

我正在尝试使用 CLI 使用以下命令从 Vault 中读取机密:

JWT=$(cat /var/run/secrets/kubernetes.io/serviceaccount/token)
vault write auth/kubernetes/login role="${K8S_ROLE_IDENTIFIER}" jwt="${JWT}"

调用 vault write 时,我得到以下信息:

'Error writing data to auth/kubernetes/login: Error making API request.\n'
'URL: PUT https://...:8200/v1/auth/kubernetes/login\n'
'Code: 400. Errors:\n'
'* missing client token\n'

令牌确实存在。我能够 echo JWT 但我仍然收到缺少客户端令牌的错误。

有什么想法吗?

谢谢!

在这种情况下,抛出的错误消息不是指 JSON Web 令牌。错误消息指的是缺少 Vault 客户端身份验证。这种认证,无论采用何种方式,最终都会涉及到生成绑定令牌进行认证。

要补救此错误,您需要使用令牌或其他方法验证您的 Vault 客户端。此身份验证还需要一个附加策略,该策略将授权启用 Kubernetes 身份验证引擎,否则下一个错误将与授权相关。

解决方法如下:

VAULT_TOKEN=$(vault write -format="json" \
  auth/"${VAULT_PATH}"/login \
  role="${K8S_ROLE_IDENTIFIER}" \
  jwt="${JWT}" \
  | jq -r '.auth["client_token"]')