首页 > 解决方案 > AWS System Manager Parameter Store vs Secrets Manager vs Lambda 中的环境变化,何时使用哪个

问题描述

遇到了一些我有些困惑的具体用例:

  1. 大量免费的公共 API 密钥。使用带有加密的 lambda 环境变量,其他开发人员/管理员仍然可以直接在 lambds 控制台中公开他们的明文值。应该改用 Parameter Store 吗?
  2. 第三方平台的登录凭据。我假设 Secrets Manager 是唯一的选择?
  3. 数据库连接字符串。秘密经理?以 0.40 美元/秘密/月的价格,该账单将增加数百个数据库,用于简单地存储凭据。

标签: amazon-web-servicesenvironment-variablesaws-secrets-manager

解决方案


对于存储任何凭证,您有三个 AWS 托管选择:

Lambda 环境变量

这些将通过 Lambda 服务直接传递到 Lambda 函数中。您可以通过 IAM 控制其他人对 KMS 的权限来阻止其他人访问字符串值。这将提供所有选项中的最佳性能(代码运行时中没有额外的查找)。

通过使用此选项,请注意以下陷阱:

  • 如果您对 Lambda 函数使用版本控制,则值是固定的,您需要部署新版本的 Lambda 函数来进行更改。
  • 值附加到单个 Lambda 函数,如果键被多个使用,您将需要单独传递给每个函数。

Systems Manager 参数存储

使用此选项,您将使用 SDK 检索您想要的任何键/值。它既可以存储纯文本值,也可以存储加密字符串(SecureString类型)。它提供了基本功能,但如果这就是您所需要的,那么它会很好用。存储这些值不需要任何成本,但价格是$0.05 per 10,000 Parameter Store API interactions. 与环境变量不同,您可以在多个 Lambda 函数中使用该值。

通过使用此选项,您需要注意以下事项:

  • 每次检索值都会对性能造成影响,以减少全局上下文中的函数调用,以便在调用之间重用它。
  • 每个键/值都需要一个单独的参数。对于数据库,这意味着要么创建单独的参数,要么将整个凭证集存储为 JSON 对象并在检索后解码。

秘密经理

使用此选项,服务中内置了很多管理功能,秘密可以包含字符串或单行 JSON 对象。SDK 将处理这些值的检索,但您必须意识到,就像 SSM 一样,您会受到性能影响,因此您需要查看与参数存储类似的解决方案。与 SSM 参数存储相比,秘密管理器的最大优势在于它与其他 AWS 服务的集成,允许秘密轮换等功能。

但是,如果您不需要 Secrets Manager 的功能,您所支付的费用可能超过您实际需要的费用,这是三者中最昂贵的选择。


推荐阅读