我需要存储用户提供给我的非常敏感的机密信息(用于向第三方API进行身份验证的用户名+密码+证书)。
我最初考虑的是AWS Secrets Manager,它非常昂贵,恕我直言,主要用于基础架构机密(数据库密码,API密钥等),而不是客户提供的机密。现在,我决定使用AWS KMS(以及使用信封加密将加密的机密存储在数据库(AWS RDS)中)和Hashicorp Vault之间。
从我的阅读中得出的结论是,Vault KV主要用于基础架构机密,而Vault Transit可能与AWS KMS相当(例如,更好地用于客户提供的机密)。
由于我正在构建一个非常小的应用程序,因此,如果我决定使用Vault KV,则根本不需要数据库。但是我不确定Vault KV是否合适。
我应该知道Vault KV是否存在某些限制或可能存在问题(针对该用例)?
谢谢
答案 0 :(得分:0)
AWS KMS 实际上只是管理主主密钥。参数存储将在幕后使用 KMS 来管理其加密密钥。如果您在 AWS 中部署 Vault,您可能也会使用 KMS 来解封并作为主密钥。您可能不想直接使用 KMS(因为其他解决方案为您提供了每个机密/路径策略、机密版本控制、审核日志,以及 KMS 不会直接为您提供的所有您可能想要/需要的功能)
Vault 键值机密引擎让您可以存储机密,而 Vault 管理加密、审核日志、访问(如果您使用 KV v2,还有版本)
传输机密引擎可以被视为“加密即服务”:
就像很多事情一样:这取决于。这取决于你的标准。我确实喜欢两者,但对于不同的用例,让我列出我在两者之间看到的主要差异,希望它能给你足够的背景来做出选择:
管理与否? :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 似乎非常合理,除非您的容量非常大。