amazon-web-services - 从java连接到AWS RDS而不暴露密码

标签 amazon-web-services spring-data-jpa amazon-rds aws-sdk-java-2.0

我能够像任何其他数据库连接一样成功连接到 RDS。 我使用 spring jpa 数据(存储库)对 postgres 数据库进行 CRUD 操作。 目前我在属性文件中提供数据库 url 和凭据

spring:
  datasource:
    url: jdbc:postgresql://<rds-endpoint>:5432/<dbschema>
    username: <dbuser>
    password: <dbpassword>

但是,在连接到生产或预生产时,这不是一个选项。 这里的最佳实践是什么。 AWS 是否提供任何内置机制来从端点读取这些详细信息,例如访问 S3 的情况?

我的目的不是泄露密码。

最佳答案

您可以使用多种选项:

  1. 使用最近发布的 IAM access to Postgres RDS
  2. 使用 Systems Manager Parameter Store 存储密码
  3. 使用 Secrets Manager 存储密码并自动轮换凭据

对于 2 和 3,使用 PropertyPlaceholderConfiguration 和 AWSSimpleSystemsManagement 客户端(GetParameter 请求)在 Spring 中启动应用程序时查找密码。 SystemsManager can proxy requests SecretsManager 以在代码中保留单个接口(interface)来访问参数。

IAM 凭证更加安全,因为:

  1. 如果使用 EC2 实例配置文件,则对数据库的访问将使用短期临时凭证。
  2. 如果不在 EC2 上,您可以生成短期身份验证 token 。
  3. 密码不会存储在您的配置中。
  4. 如果您有一个单独的数据库团队,他们可以独立于应用程序用户来管理访问权限。
  5. 可以通过 IAM 删除访问权限

关于amazon-web-services - 从java连接到AWS RDS而不暴露密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52709303/

相关文章:

amazon-web-services - 带有 Redis 的 AWS Elastic Beanstalk EC2 - 无法连接 - Django_Redis

amazon-web-services - AWS Lambda 计划任务

amazon-web-services - 如何使用 Swagger 在 API 网关上全局设置 API key 安全性

Java 处理 Spring Data 原生查询中的 NPE 投影

java - Spring Data代码执行模拟

django - 如何使用 Django 进行 RDS IAM 身份验证?

mysql - (MySQL) 复制有 bin-log 吗?

amazon-web-services - Elasticache - 配置和节点端点之间有什么区别?

java - 使用 QuerydslJpaPredicateExecutor 替换已弃用的 QuerydslJpaRepository 失败

MySql localhost 与 Amazon RDS 实例