Zaktualizuj certyfikaty Amazon RDS SSL / TLS - Elastic Beanstalk


14

AWS niedawno ogłosiło potrzebę:

Zaktualizuj swoje certyfikaty Amazon RDS SSL / TLS do 31 października 2019 r

Mam aplikację Rails obsługiwaną przez klasyczny moduł równoważenia obciążenia Elastic Beanstalk, który łączy się z bazą danych Postgres za pomocą RDS.

Wymagane kroki według Amazon to:

  1. Pobierz nowy certyfikat SSL / TLS z Używanie SSL / TLS do szyfrowania połączenia z wystąpieniem bazy danych.
  2. Zaktualizuj aplikacje bazy danych, aby używały nowego certyfikatu SSL / TLS.
  3. Zmodyfikuj instancję DB, aby zmienić CA z rds-ca-2015 na rds-ca-2019.

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

Skoro mam tak skonfigurowane moduły równoważenia obciążenia (łączenie się z moimi instancjami EC2 przez port HTTP 80 (nie SSL), czy to oznacza, że ​​nie muszę wykonywać kroków 1 i 2? I tylko krok 3?

LoadBalancerListeners

Czy też muszę pobierać zaktualizowane certyfikaty i instalować / dodawać je ręcznie do modułu równoważenia obciążenia lub instancji EC? Nie jestem pewien, jak to zrobić.


1
co musiałeś w końcu zrobić? nie jestem pewien, jakie było ostateczne rozwiązanie.
— weber

3
@weber, najważniejszą rzeczą, którą musiałem ustalić, było to, czy instancje EC2 za modułem równoważenia obciążenia Elastic Beanstalk z powiązanym połączeniem RDS automatycznie zaufałyby zaktualizowanemu certyfikatowi 2019, czy nie. Nie byłem pewien, czy będę musiał ręcznie im zaufać poprzez SSH, czy np .ebextensions. Za pomocą . W końcu po przetestowaniu go, mogę potwierdzić, że nie automatycznie ufa nowe połączenie RDS. Jeśli instancja RDS DB została odłączona od środowiska EB, jak opisano tutaj https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/AWSHowTo.RDS.html, nie jestem pewien wyniku.
— stwr667,

Odpowiedzi:


8

Kroki 1 i 2 są wymagane tylko, jeśli połączenie aplikacji z MySQL jest szyfrowane TLS .

Nie zmieniaj ustawienia LB TLS , ponieważ może to spowodować uszkodzenie aplikacji, LB TLS to coś innego, a RDS TLS to coś innego.

Jeśli twoja aplikacja tworzy zwykłe połączenie, możesz wykonać bezpośrednio krok 3.

Zmodyfikuj instancję DB, aby zmienić CA z rds-ca-2015 na rds-ca-2019.

Zazwyczaj ćwiczysz dla DB, DB powinien znajdować się w prywatnej podsieci i nie powinien być dostępny publicznie, TLS jest pomocny, gdy twoje połączenie z bazą danych i zapleczem jest w Internecie, a nie w VPC.

Dzięki niezaszyfrowanemu połączeniu między klientem MySQL a serwerem osoba z dostępem do sieci może obserwować cały ruch i sprawdzać dane wysyłane lub odbierane między klientem a serwerem.


Dzięki @Adiii. Jesteś pewny? Tutaj docs.aws.amazon.com/AmazonRDS/latest/UserGuide/… opisuje, jak sprawdzić, czy twoje połączenie DB używa SSL. Gdy połączę się eb sshz moim serwerem, stamtąd połączę się z bazą danych za pośrednictwem psql, a następnie uruchomię select ssl_is_used(), to zwraca wartość true! Moja instancja RDS jest powiązana z moim środowiskiem EB, jak opisano tutaj docs.aws.amazon.com/elasticbeanstalk/latest/dg/… . Ponieważ EB jest automatycznie połączony z RDS, obawiam się na podstawie powyższego, że zmiana urzędu certyfikacji spowoduje przerwanie wygenerowanego połączenia.
— stwr667,

Mówię ogólnie, to zależy od aplikacji, jak tworzy połączenie, ale kod sugerowany przez połączenie to połączenie palinowe. 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
Dzięki @Adii. Fyi Używam Postgres, a nie MySQL. Dobra wiadomość jest taka, że ​​zrobiłem migawkę i właśnie wypróbowałem krok 3. Wszystko nadal działa zgodnie z oczekiwaniami. Nawet przy ponownym łączeniu się z bazą danych z serwera aplikacji nadal raportuje, że używa SSL, więc zakładam, że ElasticBeanstalk obsługuje zaufanie do certyfikatu automatycznie, gdy instancja RDS jest powiązana ze środowiskiem EB. Dzięki jeszcze raz.
— stwr667,

Jak więc utworzyć połączenie? Czy określono ciąg połączenia SSL?
— Adiii

Mam app Rails, więc info Połączenie zostało zdefiniowane w database.ymlktórym wzywa się do zmiennych takich jak ENV RDS_DB_NAME, RDS_USERNAMEitd. To nie określa wymaganie SSL tam (choć może). Chociaż myślę, że domyślnym ustawieniem na EB musi być coś podobnego allow, preferalbo require, konfigurowane za pomocą zmiennej środowiskowej czy coś. cf: postgresql.org/docs/current/… . Zdecydowanie nie jest to jedna z pozostałych 3 opcji, ponieważ disablespowodowałaby wyłączenie protokołu SSL, a inne verifyopcje zawiodły podczas testowania ich na interfejsie CLI.
— stwr667,

2

Odpowiedź na pytanie jest znacznie łatwiejsza:

Nie musisz instalować niczego w środowisku Beanstalk, jeśli uaktualnisz certyfikat CA używany przez dołączony do niego RDS. https://stackoverflow.com/a/59742149/7051819

Wystarczy postępować zgodnie z punktem 3 i zignorować 1 i 2.

(Tak, sam napisałem tę odpowiedź).


3
myślę, że odpowiedź na skok jest obniżona, ponieważ większość środowisk produkcyjnych NIE używa RDS w obrębie elastycznej łodygi fasoli. używanie RDS z poziomu elastycznej fasoli jest potencjalnie niebezpieczne, ponieważ jeśli zakończysz instancję elastycznej fasoli, baza danych również zostanie zakończona, co nie jest dobre do celów przechowywania danych. Ogólnie ludzie pytają o elastyczne środowisko łodyg fasoli, w którym instancja RDS jest osobna.
— jakeatwork
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.