Обновите сертификаты Amazon RDS SSL / TLS - Elastic Beanstalk

14

AWS недавно объявила о необходимости:

Обновите сертификаты Amazon RDS SSL / TLS до 31 октября 2019 года.

У меня есть приложение Rails, размещенное с классическим балансировщиком нагрузки Elastic Beanstalk, которое подключается к Postgres DB с помощью RDS.

Согласно Amazon, необходимо выполнить следующие действия:

  1. Загрузите новый сертификат SSL / TLS из раздела Использование SSL / TLS для шифрования соединения с экземпляром БД.
  2. Обновите приложения базы данных, чтобы использовать новый сертификат SSL / TLS.
  3. Измените экземпляр DB, чтобы изменить CA от rds-ca-2015 до rds-ca-2019.

( https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL-certificate-rotation.html )

Поскольку мои балансировщики нагрузки настроены следующим образом (подключение к моим экземплярам EC2 через HTTP-порт 80 (не SSL), значит ли это, что мне не нужно выполнять шаги 1 и 2? И только следовать шагу 3?

LoadBalancerListeners

Или мне нужно загрузить обновленные сертификаты и вручную установить / добавить их в мои экземпляры балансировщика нагрузки или EC? Не уверен, как это сделать.

stwr667
источник
1
что ты должен был сделать в конце? Мне не ясно, каким было окончательное решение.
Weber
3
@weber, главное, что мне нужно было определить, будет ли экземпляр EC2 за балансировщиком нагрузки Elastic Beanstalk с привязанным соединением RDS автоматически доверять обновленному сертификату 2019 или нет. Я не был уверен, нужно ли мне доверять им вручную с помощью SSH или, например, с помощью .ebextensions. В конце концов , после тестирования, я мог бы подтвердить , что они так и автоматически доверять новое подключение RDS. Если экземпляр RDS DB был отделен от среды EB, как описано здесь https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/AWSHowTo.RDS.html, то я не уверен в результате.
stwr667

Ответы:

8

Шаг 1 и 2 требуется только в том случае, если соединение вашего приложения с MySQL зашифровано TLS .

Не изменяйте настройки LB TLS, это может нарушить работу вашего приложения, LB TLS - это нечто другое, где RDS TLS - это нечто другое.

Если ваше приложение просто создает простое соединение, вы можете выполнить непосредственно шаг 3.

Измените экземпляр DB, чтобы изменить CA от rds-ca-2015 до rds-ca-2019.

Обычно для БД, БД должна быть в частной подсети, и она не должна быть доступна из общего доступа, TLS полезен, когда ваше соединение с БД и Бэкэнд находится в Интернете, а не в VPC.

С незашифрованным соединением между клиентом MySQL и сервером, кто-то, имеющий доступ к сети, может наблюдать весь ваш трафик и проверять данные, отправляемые или получаемые между клиентом и сервером.

Adiii
источник
Спасибо @Adiii. Ты уверен? Здесь docs.aws.amazon.com/AmazonRDS/latest/UserGuide/… описывает, как ваше соединение с БД использует SSL. Когда я eb sshподключаюсь к своему серверу, подключаюсь к БД через psqlи запускаю select ssl_is_used(), он возвращает true! Мой экземпляр RDS привязан к моей среде EB, как описано здесь docs.aws.amazon.com/elasticbeanstalk/latest/dg/… . Поскольку EB автоматически подключается к RDS, я обеспокоен тем, что изменение CA нарушит сгенерированное соединение.
stwr667
В общем, я говорю, это зависит от приложения, как оно создает соединение, но от кода, предложенного по ссылке, это соединение. var mysql = require('mysql'); var connection = mysql.createConnection({ host : process.env.RDS_HOSTNAME, user : process.env.RDS_USERNAME, password : process.env.RDS_PASSWORD, port : process.env.RDS_PORT }); connection.connect(function(err) { if (err) { console.error('Database connection failed: ' + err.stack); return; } console.log('Connected to database.'); }); connection.end();
Adiii
2
Спасибо @Adii. Кстати, я использую Postgres, а не MySQL. Хорошая новость в том, что я сделал снимок и только что попробовал шаг 3 только сейчас. Все по-прежнему работает, как ожидалось. Даже при повторном подключении к БД с сервера приложений он по-прежнему сообщает, что использует SSL, поэтому я предполагаю, что ElasticBeanstalk автоматически обрабатывает доверие к сертификату, когда экземпляр RDS привязан к среде EB. Еще раз спасибо.
stwr667
Так как же создать соединение? Указал ли SSL в строке подключения?
Adiii
У меня есть приложение Rails, поэтому определяется информация о соединении, в database.ymlкоторой он обращается к переменным ENV, например RDS_DB_NAME, RDS_USERNAMEи т. Д. Он не указывает, требуется ли там SSL (даже если это возможно). Хотя я думаю , что по умолчанию на EB должно быть что - то вроде allow, preferили require, сконфигурированный с помощью переменной окружения или что - то. cf: postgresql.org/docs/current/… . Это определенно не один из трех других, потому disableчто он отключил бы SSL, и другие verifyопции потерпели неудачу, когда я протестировал их на CLI.
stwr667
2

Существует гораздо более простой ответ на вопрос:

Вам не нужно ничего устанавливать в вашей среде Beanstalk, если вы обновляете сертификат CA, используемый RDS, прикрепленным к нему. https://stackoverflow.com/a/59742149/7051819

Просто следуйте пункту 3 и игнорируйте 1 и 2.

(Да, я написал этот ответ сам).

Rbbn
источник
3
я думаю, что за ответ «скачок» проголосовали, потому что большинство производственных сред НЕ используют RDS в пределах эластичного бобового стебля. использование RDS из эластичного бобового стебля потенциально опасно, потому что если вы прервете свой экземпляр эластичного бобового стебля, ваша база данных также прекратит работу, что не годится для целей хранения данных. Таким образом, в целом люди спрашивают об эластичной среде бобовых стеблей, где экземпляр RDS является отдельным.
Jakeatwork