Hashicorp Vault Agent Injector:使用“agent-inject-command”注释进行 Base64 解码秘密

Jam*_*nus 2 hashicorp-vault

我\xe2\x80\x99m 将base64编码的信任库文件注入到我的容器中,然后使用\xe2\x80\x98agent-inject-command\xe2\x80\x99注释尝试解码秘密并将其写入文件。这是我的 k8s 清单的片段:

\n
vault.hashicorp.com/agent-inject-secret-truststore-jks: "secret/directory/truststore_jks"\nvault.hashicorp.com/agent-inject-file-truststore-jks: b64.truststore.jks\nvault.hashicorp.com/secret-volume-path-truststore-jks: /home\nvault.hashicorp.com/agent-inject-command-truststore-jks-truststore-jks: /bin/bash -c "base64 -d /home/b64.truststore.jks > /home/truststore.jks"\n
Run Code Online (Sandbox Code Playgroud)\n

结果是编码版本被注入到文件中,但命令没有成功运行,因此容器中不存在解码版本。

\n

我已经能够base64 -d使用此方法(以及其他一些命令)单独运行该命令,但问题仅在重定向或链接命令时出现。

\n

任何关于正确方法或达到相同目标的替代方法的见解将不胜感激。

\n

Jam*_*nus 5

找到了使用Vault Agent Templates 的替代方法,特别base64Decode是其Consul 模板引擎中的功能。

用于注入解码后的秘密的相关配置如下:

vault.hashicorp.com/agent-inject-secret-truststore-jks: "secret/path/to/secret/truststore_jks"
vault.hashicorp.com/agent-inject-file-truststore-jks: truststore.jks
vault.hashicorp.com/secret-volume-path-truststore-jks: /home
vault.hashicorp.com/agent-inject-template-truststore-jks: |
  {{- with secret "secret/path/to/secret" -}}
  {{ base64Decode .Data.data.truststore_jks }}
  {{-  end }}
Run Code Online (Sandbox Code Playgroud)