Hashicorp Vault-您应该在kv中存储客户提供的秘密吗?

时间:2020-04-18 08:58:57

标签: hashicorp-vault

我需要存储用户提供给我的非常敏感的机密信息(用于向第三方API进行身份验证的用户名+密码+证书)。

我最初考虑的是AWS Secrets Manager,它非常昂贵,恕我直言,主要用于基础架构机密(数据库密码,API密钥等),而不是客户提供的机密。现在,我决定使用AWS KMS(以及使用信封加密将加密的机密存储在数据库(AWS RDS)中)和Hashicorp Vault之间。

从我的阅读中得出的结论是,Vault KV主要用于基础架构机密,而Vault Transit可能与AWS KMS相当(例如,更好地用于客户提供的机密)。

由于我正在构建一个非常小的应用程序,因此,如果我决定使用Vault KV,则根本不需要数据库。但是我不确定Vault KV是否合适。

我应该知道Vault KV是否存在某些限制或可能存在问题(针对该用例)?

谢谢

2 个答案:

答案 0 :(得分:0)

关于KMS

AWS KMS 实际上只是管理主主密钥。参数存储将在幕后使用 KMS 来管理其加密密钥。如果您在 AWS 中部署 Vault,您可能也会使用 KMS 来解封并作为主密钥。您可能不想直接使用 KMS(因为其他解决方案为您提供了每个机密/路径策略、机密版本控制、审核日志,以及 KMS 不会直接为您提供的所有您可能想要/需要的功能)

Vault KV 机密引擎与 Vault 传输机密引擎

Vault 键值机密引擎让您可以存储机密,而 Vault 管理加密、审核日志、访问(如果您使用 KV v2,还有版本)

传输机密引擎可以被视为“加密即服务”:

  • 你调用它来创建一个密钥环(把它想象成一个数据加密密钥,内置了轮换机制,因此是密钥环。)
  • 然后您可以使用密钥环引用来加密一些东西,并获取一些加密的密文,您可以将其存储在数据库或文件中。或者你也可以反过来,用密钥环引用和一些密文调用它,然后要求它解密并取回数据(假设你有正确的策略)
  • 或者,如果您要加密/解密的数据“很大”(取决于您的用例),您可以使用它来获取可用于本地加密/解密数据的数据密钥。 (您获得密钥,对其进行加密或解密,但您不必处理加密密钥的安全性:Vault 会为您管理,因此您只需从内存中清除它,并在下次从 Vault 取回它)

您应该使用 Vault 还是 AWS SSM Parameter Store?

就像很多事情一样:这取决于。这取决于你的标准。我确实喜欢两者,但对于不同的用例,让我列出我在两者之间看到的主要差异,希望它能给你足够的背景来做出选择:

  • 管理与否? :AWS SSM Parameter Store 是完全托管的,而且价格便宜,因此这是您不必考虑的负担。如果 Parameter Store 满足您的需求,那就去吧,它会给您一些宝贵的时间来处理其他事情。

  • 访问管理:Vault 带有许多身份验证选项,并且易于推理策略。如果 IAM 策略足以涵盖您的所有用例以授予对这些机密的最小访问权限,那么 Parameter Store 是一个不错的选择。否则 Vault 会为您提供保障。

  • 不要忘记 Vault 提供了许多其他秘密/加密工具。它们可能会使您的项目受益(或不会,但请检查此内容)

我的经验法则是:如果 AWS IAM 足够了,并且除了简单的秘密存储之外您没有任何其他需求,SSM Parameter Store 听起来是个好主意。
如果您有其他加密需求,或其他一些身份验证/策略要求会使在 IAM 上构建更具挑战性< Vault 将大放异彩。
如果您有很多秘密需要存储/加密/解密,那么 Vault 的传输秘密引擎可以加密/解密数据,并且您可以使用常规 DB 来存储这些加密的 blob。

答案 1 :(得分:0)

很好奇您为什么要避免使用 AWS SSM。如果您有大量数据需要加密和存储,但只是出于好奇,可能会有点限制。

如果您想避免 Secrets Manager 的成本,那么加密的 RDS 数据库似乎并没有给您带来太多好处。

AWS Secrets Manager 似乎非常合理,除非您的容量非常大。