我无法弄清楚如何在hashicorp保险库中存储文件.我们用于PoC的用例是在特定路径上存储SSL证书,然后通过HTTP API下载它.
我尝试使用kv秘密引擎,这似乎是最合适的.
所以 Vault 的默认产品没有这个功能,但是有一个桌面 GUI 程序以用户友好的方式添加了这个功能。
https://github.com/adobe/cryptr
我在使用时确实遇到了一些困惑:
如果您有 KVv2,HC Web UI 和 Cryptr 桌面 GUI 将使用不同的约定。
编写 Vault 策略时,您将使用 /KVv2/data/path/
使用 Cryptr 时,您将使用 /KVv2/data/path/
使用 HC WebUI 时,您将使用 /kvv2/path/
事实:您可以利用 base64 编码将原始二进制文件存储在任何 KV 存储中。
因此,您也可以使用该技术存储在 Hashicorp Vault 中。
因此,base64 编码是一个可逆函数,它允许您将任何二进制文件转换为 1 行字符串,然后将生成的 1 行字符串转换回任何二进制文件。并且由于您可以在任何 KV 存储中存储 1 行字符串,因此您可以在任何 KV 存储中存储任意二进制文件!:) (*)
这是一些代码来执行您的要求:
CMD:\> vault server -dev
WindowsSubsystemForLinuxBash:/mnt/c# curl -L https://releases.hashicorp.com/vault/1.0.2/vault_1.0.2_linux_amd64.zip > vault.zip
Bash# apt-get update
Bash# apt-get install unzip
Bash# unzip vault.zip -d /bin
Bash# chmod +x /bin/vault
Bash# export VAULT_ADDR=http://127.0.0.1:8200
Bash# vault login s.aO8ustaAV4Ot1OxzBe94vi3J
Bash# cat excelfile.xlsx | md5sum
fb6b4eaa2be1c8c410645a5f0819539e -
Bash# cat excelfile.xlsx | base64 | base64 --decode > x.xlsx
Bash# cat x.xlsx | md5sum
fb6b4eaa2be1c8c410645a5f0819539e -
Bash:/mnt/c# cat excelfile.xlsx | base64 | vault kv put secret/excelfile.xlsx base64dfile=-
(=- means assign value from standard in, which in this case is the piped output of the cat file command)
Chrome: localhost:8200
(login with dev root token, and you'll see the value is characters in a 1 line string)
Bash# rm excelfile.xlsx
Bash# vault kv get -field=base64dfile secret/excelfile.xlsx | tr -d '\n' | base64 --decode > excelfile.xlsx
(or)
Bash# vault kv get -field=base64dfile secret/excelfile.xlsx | sed 's/\r//' | base64 --decode > excelfile.xlsx
Bash# cat excelfile.xlsx | md5sum
fb6b4eaa2be1c8c410645a5f0819539e -
Run Code Online (Sandbox Code Playgroud)
(*注意 Vault 和其他 KV 存储通常有文件大小限制,带有 Consul 后端的 Vault 的秘密文件大小限制约为 375kb,因为 base64 编码会使文件大小膨胀 4/3,使大小达到 500kb,而 Consul 有一个键值对限制为 0.5mb ish。)
(注意,因为证书文件有足够的空间,因为证书文件可以是 ~8KB/如果它大于 375kb,它可能不是秘密。)
让我们说你需要存储更大的秘密:
(如Kubernetes etcd快照)
由于 Vault 是 1.0,因此内置了迁移存储后端的功能,因此您可以从“Consul 存储后端”切换到“带有 Consul 的 AWS S3 存储混合存储后端”(在多服务器设置中仍需要使用 Consul 来实现 HA 一致性锁定) " 有一个更大的限制。选择不同的存储后端会给你一个更大的 KV 大小限制。注意 Vault 可能会强加一个合理的限制,比如 10mb。因为即使你有一个支持 1TB 键值大小的 Vault 后端,你肯定会想要在 Vault 中存储大文件时要三思,因为 base64 进程会增加计算开销,并使文件膨胀 4/3 倍,因此一旦 base64'd,300mb 的文件将占用 400mb 的空间。(据说它可以使因为为了一致性,一致性有利于自动化和可维护性,以及计算/存储资源。)
如果我需要支持大机密,
我将如何使用 Vault:我将编写一个包装 Python 脚本来从 Vault 获取和获取机密,并且我有 3 个场景、2 个保留关键字和以下命名约定/逻辑:
似乎您可以指定一个包含数据的文件,以将其存储为 HashiCorp 保险库中的键值。
您可以使用
vault write <path> -value=@file将 的内容写入file路径中指定的键。
所以如果你想存储 a 的内容,crt你可以这样做:
vault write secret/ssl-certs/prod-1 -value=@ssl-cert.crt
要记住的一件事是,您不是在保存文件,而是在保存文件的内容。
| 归档时间: |
|
| 查看次数: |
2304 次 |
| 最近记录: |