AWS System Manager Parameter Store 与 Secrets Manager 与 Lambda 中的环境变化,何时使用哪个

fik*_*ika 4 environment-variables amazon-web-services aws-secrets-manager

遇到了一些我有点困惑的特定用例:

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

Chr*_*ams 6

对于存储任何凭证,您有三个 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 服务的集成,允许使用秘密轮换等功能。

但是,如果您不需要秘密管理器的功能,您可能会支付比实际需要更多的费用,这是三者中最昂贵的选择。