从Java连接到AWS RDS而不暴露密码

时间:2018-10-08 20:00:31

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

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

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

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

我的意图不是公开密码。

2 个答案:

答案 0 :(得分:3)

您可以使用几种选择:

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

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

IAM凭证在以下方面更安全:

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

答案 1 :(得分:0)

我发现的另一个通用选项是使用AWS Secret Managerdoc link

RDS特定的解决方案是使用IAMDBAuth连接到DB Instance Using the AWS SDK

相关问题