首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hashicorp Vault注入目录

Hashicorp Vault注入目录
EN

Stack Overflow用户
提问于 2022-04-16 21:44:40
回答 1查看 275关注 0票数 0

我想使用代理注入器注入整个目录。

首先,我想知道这是否可能。

我会解释我自己:

我有一个秘密目录:/secret/dev/app/app下面,我有aws/some_secretsdb/some_secrets等等.

是否可以在没有完全秘密名称的情况下注入应用程序目录?

EN

回答 1

Stack Overflow用户

发布于 2022-05-08 00:51:13

我想说的是,看看代理模板。

如果您看一看本教程的步骤7

代码语言:javascript
复制
{{ with secret "secret/data/customers/acme" }}
Organization: {{ .Data.data.organization }}
ID: {{ .Data.data.customer_id }}
Contact: {{ .Data.data.contact_email }}
{{ end }}

您可以简单地用脚本模板这个模板文件,然后运行代理。但是生成动态模板文件的脚本需要做一些繁重的工作.

列出KV v2 basepath下的所有秘密(如果引擎挂载路径中没有/字符):

代码语言:javascript
复制
#!/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文件。但是,如果必须在模板完成后由机器读取,那么这是非常无用的,所以您可能需要让一个新的循环读取每个秘密,以确定每个秘密上的键是什么。然后做一些高级格式化。然而,你的问题的结构方式,这在技术上回答了它,你可以找出如何做剩下的(或重组你的问题,或提出一个新的问题)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71897695

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档