我想使用代理注入器注入整个目录。
首先,我想知道这是否可能。
我会解释我自己:
我有一个秘密目录:/secret/dev/app/和app下面,我有aws/some_secrets,db/some_secrets等等.
是否可以在没有完全秘密名称的情况下注入应用程序目录?
发布于 2022-05-08 00:51:13
我想说的是,看看代理模板。
如果您看一看本教程的步骤7
{{ with secret "secret/data/customers/acme" }}
Organization: {{ .Data.data.organization }}
ID: {{ .Data.data.customer_id }}
Contact: {{ .Data.data.contact_email }}
{{ end }}您可以简单地用脚本模板这个模板文件,然后运行代理。但是生成动态模板文件的脚本需要做一些繁重的工作.
列出KV v2 basepath下的所有秘密(如果引擎挂载路径中没有/字符):
#!/usr/bin/env bash
listall() {
kv2opt="/metadata"
if [ "${1}" = "-kv2" ]; then
kv2opt="/metadata"
shift
elif [ "${1}" = "-kv1" ]; then
kv2opt=""
shift
fi
sarg=$(printf '%s' "${1}" | sed -E 's~/*$~~g' | sed -E 's~^/*~~g')
engine=$(printf '%s' "${sarg}" | cut -d/ -f1 )
if [ "$(printf '%s' "${sarg}" | cut -d/ -f2)" = "metadata" ]; then
vpath=$(printf '%s' "${sarg}" | sed -E "s~^${engine}/metadata/?~~g" )
else
vpath=$(printf '%s' "${sarg}" | sed -E "s~^${engine}/?~~g" )
fi
curl -s -H "X-Vault-Request: true" -H "X-Vault-Token: ${VAULT_TOKEN}" --request LIST \
"${VAULT_ADDR}/v1/${engine}${kv2opt}/${vpath}" | jq -rc '.data.keys[]' | while IFS= read -r li; do
if [ "${li: -1}" != "/" ]; then
printf "%s/%s\n" "${sarg}" "${li}"
else
listall "${sarg}/${li}"
fi
done
}
listall -kv2 "secret/dev/app" | while IFS= read -r path; do
cat << EOF >> template.tpl
{{ with secret "${path}" }}
${path}: {{ .Data.data }}
{{ end }}
EOF
done然后,...and可以使用模板过程通过Vault代理运行生成的template.tpl文件。但是,如果必须在模板完成后由机器读取,那么这是非常无用的,所以您可能需要让一个新的循环读取每个秘密,以确定每个秘密上的键是什么。然后做一些高级格式化。然而,你的问题的结构方式,这在技术上回答了它,你可以找出如何做剩下的(或重组你的问题,或提出一个新的问题)。
https://stackoverflow.com/questions/71897695
复制相似问题