Подключение к AWS RDS из Java без предоставления пароля

Я успешно смог подключиться к RDS, как и любое другое соединение с базой данных. Я использую данные Spring jpa (хранилище) для выполнения операции CRUD на postgres db. В настоящее время я предоставляю URL базы данных и учетные данные в файле свойств

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

Однако это не вариант при подключении к производству или подготовке производства. Какова лучшая практика здесь. Предоставляет ли AWS какой-либо встроенный механизм для чтения этих данных с конечной точки, как в случае доступа к S3?

Мое намерение не раскрывать пароль.

2 ответа

Решение

Вам доступно несколько вариантов:

  1. Используйте недавно анонсированный доступ IAM к Postgres RDS
  2. Используйте System Manager Parameter Store для хранения пароля
  3. Используйте Secrets Manager для хранения пароля и автоматического поворота учетных данных

Для 2 и 3 найдите пароль при запуске приложения в Spring с помощью PropertyPlaceholderConfiguration и клиента AWSSimpleSystemsManagement (запрос GetParameter). SystemsManager может прокси-запросы к SecretsManager, чтобы сохранить единый интерфейс в вашем коде для доступа к параметрам.

Учетные данные IAM более безопасны в этом:

  1. При использовании профилей экземпляров EC2 для доступа к базе данных используются кратковременные временные учетные данные.
  2. Если не на EC2, вы можете сгенерировать токены аутентификации.
  3. Пароль не сохраняется в вашей конфигурации.
  4. Если у вас есть отдельная команда баз данных, они могут управлять доступом независимо от пользователя приложения.
  5. Удаление доступа может быть сделано через IAM

Я нашел еще один общий вариант - использование AWS Secret Manager ( ссылка на документацию)

Конкретным решением RDS является подключение к экземпляру БД с помощью AWS SDK с использованием IAMDBAuth

Другие вопросы по тегам