Amazon RDS SSL / TLS 인증서 업데이트-Elastic Beanstalk


14

AWS는 최근 다음과 같은 필요성을 발표했습니다.

2019 년 10 월 31 일까지 Amazon RDS SSL / TLS 인증서 업데이트

RDS를 사용하여 Postgres DB에 연결하는 클래식 Elastic Beanstalk로드 밸런서로 호스팅되는 Rails 애플리케이션이 있습니다.

아마존에 따라 필요한 단계는 다음과 같습니다.

  1. SSL / TLS를 사용하여 DB 인스턴스에 대한 연결 암호화에서 새 SSL / TLS 인증서를 다운로드하십시오.
  2. 새 SSL / TLS 인증서를 사용하도록 데이터베이스 애플리케이션을 업데이트하십시오.
  3. CA를 rds-ca-2015에서 rds-ca-2019로 변경하도록 DB 인스턴스를 수정하십시오.

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

로드 밸런서가 이와 같이 설정되었으므로 (SSL이 아닌 HTTP 포트 80을 통해 EC2 인스턴스에 연결) 1 단계와 2 단계를 따를 필요가없고 3 단계 만 따를 필요가 있습니까?

LoadBalancerListeners

또는 업데이트 된 인증서를 다운로드하여로드 밸런서 또는 EC 인스턴스에 수동으로 설치 / 추가해야합니까? 어떻게 해야할지 모르겠습니다.


1
결국 무엇을해야 했습니까? 최종 솔루션이 무엇인지 명확하지 않습니다.
weber

3
@weber, 내가 결정해야 할 주요 사항은 RDS 연결이 연결된 Elastic Beanstalk로드 밸런서 뒤에있는 EC2 인스턴스가 업그레이드 된 2019 인증서를 자동으로 신뢰하는지 여부입니다. SSH를 통해 수동으로 신뢰 해야하는지 또는 예를 들어을 사용하여 수동으로 신뢰 해야하는지 확실하지 않았습니다 .ebextensions. 그것을 테스트 후 결국, 나는 그들이 확인 할 수 않았다 자동으로 새 RDS 연결을 신뢰합니다. 여기 https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/AWSHowTo.RDS.html에 설명 된대로 RDS DB 인스턴스가 EB 환경에서 분리 된 경우 결과가 확실하지 않습니다.
stwr667

답변:


8

1 단계와 2 단계 는 MySQL과 의 애플리케이션 연결이 TLS 암호화 인 경우에만 필요합니다 .

LB TLS 설정을 변경하지 않으면 응용 프로그램이 중단 될 수 있습니다. LB TLS 는 다른 것으로 RDS TLS 는 다른 것입니다.

응용 프로그램이 일반 연결을 만드는 경우 3 단계를 직접 수행해도 안전합니다.

CA를 rds-ca-2015에서 rds-ca-2019로 변경하도록 DB 인스턴스를 수정하십시오.

일반적으로 DB 연습은 DB가 프라이빗 서브넷에 있어야하며 퍼블릭에서 액세스 할 수 없어야합니다. 데이터베이스와 백엔드 연결이 VPC가 아닌 인터넷에있을 때 TLS가 유용합니다.

MySQL 클라이언트와 서버 사이의 암호화되지 않은 연결을 통해 네트워크에 액세스 할 수있는 누군가가 모든 트래픽을 감시하고 클라이언트와 서버간에 송수신되는 데이터를 검사 할 수 있습니다.


감사합니다 @Adiii. 확실해? 여기 docs.aws.amazon.com/AmazonRDS/latest/UserGuide/… DB 연결이 SSL을 사용하는지 확인하는 방법을 설명합니다. 내가 언제 eb ssh내 서버에,를 통해 DB에 거기에서 연결 psql한 다음 실행 select ssl_is_used(), 그건 사실 반환! 내 RDS 인스턴스는 docs.aws.amazon.com/elasticbeanstalk/latest/dg/…에 설명 된대로 내 EB 환경에 연결되어 있습니다 . 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. 참고로 MySQL이 아닌 Postgres를 사용하고 있습니다. 좋은 소식은 스냅 샷을 찍어 3 단계를 시도했다는 것입니다. 모든 것이 여전히 예상대로 작동합니다. 애플리케이션 서버에서 DB에 다시 연결할 때도 여전히 SSL을 사용하고 있다고보고하므로 RDS 인스턴스가 EB 환경에 연결될 때 ElasticBeanstalk가 인증서의 신뢰를 자동으로 처리한다고 가정합니다. 다시 감사합니다.
stwr667

그렇다면 어떻게 연결을 만들 수 있습니까? 연결 문자열에 SSL을 지정 했습니까?
Adiii

연결 정보에 정의되어 있으므로 내가 레일 응용 프로그램이 database.yml같은 ENV 변수에게 호출하는 RDS_DB_NAME, RDS_USERNAME등이 (심지어는 할 수 있지만) SSL이 필요하도록 지정하지 않습니다. 내 생각이지만 EB의 기본 설정은 같은 것을해야한다 allow, prefer또는 require, 환경 변수 또는 무언가를 통해 구성. CF : postgresql.org/docs/current/... . disableSSL을 끄고 verifyCLI에서 테스트 할 때 다른 옵션이 실패 했기 때문에 다른 3 가지 중 하나가 아닙니다 .
stwr667

2

질문에 대한 답변이 훨씬 쉽습니다.

연결된 RDS에서 사용하는 CA 인증서를 업그레이드하는 경우 Beanstalk 환경에 아무것도 설치할 필요가 없습니다. https://stackoverflow.com/a/59742149/7051819

포인트 3을 따르고 1과 2를 무시하십시오.

(예, 나는 그 답을 직접 썼습니다).


3
나는 대부분의 프로덕션 환경이 탄력있는 콩 줄기 내에서 RDS를 사용하지 않기 때문에 점프 답변이 다운 투표 된 것으로 생각합니다. 탄력적 Beantalk 인스턴스에서 RDS를 사용하면 탄력적 Beantalk 인스턴스를 종료하면 데이터베이스도 종료되므로 데이터 보존 목적에 적합하지 않기 때문에 위험 할 수 있습니다. 따라서 일반적으로 사람들은 RDS 인스턴스가 분리 된 탄력적 인 Beantalk 환경에 대해 묻고 있습니다.
jakeatwork
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.