Оновіть сертифікати Amazon RDS SSL / TLS - еластична підставка


14

AWS нещодавно оголосила про необхідність:

Оновіть сертифікати Amazon RDS SSL / TLS до 31 жовтня 2019 року

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

Необхідні кроки згідно Amazon:

  1. Завантажте новий сертифікат SSL / TLS з використанням SSL / TLS для шифрування з'єднання з екземпляром БД.
  2. Оновіть додатки бази даних, щоб використовувати новий сертифікат SSL / TLS.
  3. Змініть екземпляр БД, щоб змінити ЦС з 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

Або мені потрібно завантажити оновлені сертифікати та встановити / додати їх до моїх екземплярів Load balancer або EC вручну? Не знаєте, як це зробити.


1
що ти мав зробити в підсумку? я не ясно, що було остаточне рішення.
Weber

3
@weber, головне, що мені потрібно було визначити, це, чи випадки EC2 за балансиром навантаження Elastic Beanstalk із прив’язаним RDS-зв’язком автоматично довіряють оновленому сертифікату 2019 року чи ні. Я не був впевнений, чи потрібно мені вручну довіряти їм через SSH'ing, або, наприклад, використовувати .ebextensions. Зрештою , після тестування, я міг би підтвердити , що вони так і автоматично довіряти нове підключення RDS. Якщо екземпляр DB RDS був від'єднаний від середовища 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.

Змініть екземпляр БД, щоб змінити ЦС з rds-ca-2015 на rds-ca-2019.

Зазвичай практика для БД повинна бути в приватній підмережі, і вона не повинна бути доступною для загальнодоступних, TLS є корисною, коли ваше з'єднання База даних та Backend знаходиться в Інтернеті, а не в VPC.

При незашифрованому з'єднанні між клієнтом MySQL та сервером, хтось із доступом до мережі, може спостерігати весь ваш трафік та перевіряти дані, що надсилаються чи отримуються між клієнтом та сервером.


Дякую @Adiii. Ти впевнений? Тут docs.aws.amazon.com/AmazonRDS/latest/UserGuide/… в ньому описано, як перевірити, чи для вашого підключення до DB використовується SSL. Коли я eb sshдо свого сервера, підключіться звідти до БД через psql, а потім запустіть select ssl_is_used(), він поверне справжнє! Мій екземпляр RDS пов'язаний з моїм середовищем EB, як описано тут docs.aws.amazon.com/elasticbeanstalk/latest/dg/… . Оскільки EB автоматично підключено до RDS, я переживаю, виходячи з вищесказаного, що зміна СА порушить створене з'єднання.
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 Fyi, я використовую Postgres, а не MySQL. Хороша новина - я зробив знімок і просто зараз спробував крок 3. Все ще працює як очікувалося. Навіть при повторному підключенні до БД з сервера додатків він все ще повідомляє, що він використовує SSL, тому я припускаю, що ElasticBeanstalk автоматично обробляє довіру сертифіката, коли екземпляр RDS прив’язаний до середовища EB. Знову дякую.
stwr667

Так як у вас створити з'єднання? Чи вказав SSL у рядку з'єднання?
Adiii

У мене є програма Rails, тому визначається інформація про з'єднання, в database.ymlякій викликує такі змінні ENV RDS_DB_NAME, RDS_USERNAMEі т. Д. У ньому не вказано вимагати SSL там (навіть якщо це могло). Хоча я думаю , що за замовчуванням на EB має бути що - щось на зразок allow, preferабо require, конфігурований з допомогою змінної оточення або що - то. порівняй: postgresql.org/docs/current / ... . Це, безумовно, не один з інших 3, тому disableщо вимкне SSL, а інші verifyпараметри не вдалося, коли я тестував їх на CLI.
stwr667

2

На питання набагато простіше відповісти:

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

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

(Так, я сама написала цю відповідь).


3
Я думаю, що відповідь про стрибок є заниженою, тому що більшість виробничих середовищ НЕ використовують RDS в межах еластичної підставки. використання RDS зсередини еластичного стовбура потенційно небезпечно, оскільки якщо ви скасуєте свій еластичний екземпляр, то ваша база даних також припиняється, що не корисно для збереження даних. Тож загалом люди задаються питанням про еластичні середовища, де екземпляр RDS є окремим.
jakeatwork
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.