文件管理 – 用于文件存储的Hashicorp Vault?

我期待保存大量相当大的文档,从1M到可能多个数量级.我知道Hashicorp的Vault非常适合密钥和较小的值.我很乐意从中获得“玻璃破碎”功能和关键滚动功能.

有没有人用大秘密对Vault进行任何基准测试?我假设我不会遇到保险库中的秘密数量问题?

最佳答案 性能完全取决于您使用的存储后端.如果您使用精细粒度访问控制的秘密回购,那么您可能不需要HA,因此文件存储后端会很好,您可以使用SSD来获得良好的性能.

我建议不要使用Transit后端来加密和存储文件,原因如下:

1.)如果您只使用KV,从1个存储后端迁移到另一个(如文件存储到HA后端)相对容易/直接,当您使用Vault的高级功能时,并不总是容易/可能. (后端之间的BTW迁移是我在Vault 1.0中注意到的一个相对较新的功能)

2.)您可以列出存储在KV商店中的所有机密,并且您有版本控制.如果你选择Transit,你必须自己编写代码.

3.)Transit不是为那个而设计的,错误的工具,KV就是你正在寻找的.

如果要在Vault中存储大文件:
不要单独使用Consul(或者你最多只能使用0.5mb)
应该可以从:

storage "file" { path = "C:/Vault" }

然后在需要HA时转换到S3 / Azure Blob Consul

ha_backend "consul" {...}
storage "s3" {...} 

(我建议你做一个PoC来确认你可以过渡.)

注意:
在实践中,我发现我永远不会存储大于0.375mb的秘密,所以Consul本身就很好.这是一个更简单的设置,你可以做实时快照的时间点.此外,如果您发现将来需要空间,则可以迁移存储后端.

此外,由于以下不便/开销原因,您仍应避免使用大文件:
Vault是一个键值存储,它使用以下语法:

vault kv put secret/KEY key=value
vault kv put secret/dev config.json=base64'dstring

如果要存储二进制文件或多行字符串,则需要使用它来将其转换为1行字符串,并将其存储为值.好吧,如果你最终得到一个300mb的文件,你必须制作一个400mb base64编码的字符串. (因为base64编码增加了一致的33%开销)

如果您真的想以可扩展的方式执行此操作:
我认为这样做的理想方法是在Vault中存储对称加密/解密密钥加密文件位置.
使用Consul作为Vault后端.
使用S3作为文件存储.

如果我打算这样做的话,我会在Kubernetes 2-3上的Kubernetes 2-3服务器上托管Consul Minio / Rook / Ceph(Self Hosted S3),或者在带有Vault SCONE Secure Enclaves的英特尔SGX机顶盒上获得最高安全性(加密ram)以防止Specter / Meltdown / 0天根访问内存转储漏洞利用.并将对称加密的文件存储在DIY S3上,并将解密密钥文件位置引用到Vault中,然后将一些中间件用于抽象出来. (我只建议自托管S3,因此您可以将多云100%基础设施作为代码,但是可以根据您的要求混合和匹配部分设计.)

点赞