【问题标题】:AWS Secret Manager best PracticeAWS Secret Manager 最佳实践
【发布时间】:2020-03-31 01:50:30
【问题描述】:

我有一个 spring boot dockerize 应用程序在 fargate 集群中运行。这是使用 aurora DB 的应用程序。 我想将数据库密码和 API 密钥存储在 AWS Secret Manager 中。我的想法是从应用程序创建一个 API 并从秘密管理器中获取秘密。但是架构师说这不是最好的方法。

还有什么其他更好的方法可以实现这一目标?

【问题讨论】:

  • 这是一个很好的方法,你应该可以问你的架构师为什么他/她认为这不是最好的方法。

标签: amazon-web-services spring-boot docker aws-secrets-manager


【解决方案1】:

ECS 提供了使用 Secrets Manager 为集群指定敏感数据的教程:https://docs.aws.amazon.com/AmazonECS/latest/userguide/specifying-sensitive-data-tutorial.html

至于数据库凭证,如果您的应用程序是用 Java 编写的,那么为您的应用程序提供轮换安全凭证的最佳方式是使用 AWS 提供的 JDBC 客户端库:https://github.com/aws/aws-secretsmanager-jdbc。然后,您可以安全地为您的数据库凭据设置轮换,因为该库会自动从 Secrets Manager 中提取并在身份验证失败时重试连接。

【讨论】:

  • Secrets manager 是存储 API 密钥的正确位置,但对于数据库凭据,根本不需要设置密码。请改用 IAM 身份验证。
【解决方案2】:

您需要使用IAM Database authentication。为您的 Fargate 任务分配一个 IAM 角色,并有权访问您的 Aurora 集群,瞧!无需密码。

【讨论】:

    【解决方案3】:

    您是否考虑过让您的代码直接调用 Secrets Manager API?我不建议在已经存在 API 的情况下构建 API,这也可用于处理轮换凭据。

    起点:AWS Java SDK Documentation

    【讨论】:

      猜你喜欢
      • 2020-12-25
      • 2016-01-29
      • 2020-08-16
      • 2015-02-05
      • 2017-11-16
      • 2015-08-03
      • 2020-07-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多