[RDS] EC2 인스턴스 SSH 터널링을 통한 AWS RDS 접속(DBeaver 사용)

  • 이번 포스트에서는 RDS 로 생성한 DB에 EC2 인스턴스 를 이용한 SSH 터널링 방식 으로 접근하는 방법을 설명합니다.

1. 왜 EC2 터널링으로 RDS에 접속하는가?

보안 강화

  • RDS는 서비스의 중요한 정보를 저장하고 있어 직접 public 접근을 허용하는 것은 보안에 취약할 수 있습니다.(무결성 훼손 위험)
  • EC2 인스턴스를 통해 SSH 터널링으로 접근하게 하면, 특정 EC2 인스턴스에만 RDS 접근을 허용할 수 있어 더 안전합니다.
  • 이를 위해 RDS와 EC2 인스턴스가 같은 VPC에 있어야 하며, EC2 인스턴스는 퍼블릭 서브넷에 연결되어 있어야 합니다.

2. 구현 단계

  • RDS 및 EC2 인스턴스 생성을 완료한 후 다음 설정을 진행합니다.
  • RDS와 EC2는 동일한 VPC 안에 존재해야 합니다.
  • EC2 인스턴스는 퍼블릭 서브넷 에 연결되어있어야 SSH 연결이 가능합니다.

1). EC2 인스턴스 보안 그룹 설정

인바운드 규칙

  • SSH 연결을 위해 인바운드 규칙에 포트 22를 열어야 합니다.
  • 보안을 위해 본인의 IP 주소만 허용하도록 설정합니다.

아웃바운드 규칙

  • RDS 연결을 위해 3306 포트를 열어줍니다.
  • 대상은 RDS 보안그룹을 지정합니다.

2). RDS 보안그룹 인바운드 설정

  • EC2 인스턴스 연결을 위해 3306 포트를 열어줍니다.
  • 접근 대상을 EC2 보안 그룹으로 지정합니다

3). DBeaver를 통한 SSH 터널링 설정

SSH 탭 설정
  • HOST/IP : EC2 인스턴스의 퍼블릭 DNS 을 입력해줍니다. 포트는 22번을 지정합니다.(SSH)
  • User Name : EC2 인스턴스의 유저이름을 입력합니다. 우분투로 생성하면 ubuntu 로 생성됩니다.
  • Private Key : EC2 인스턴스 생성시 사용한 key를 업로드합니다(.pem 파일)
  • Test tuneel configuration : 설정완료후 클릭하여 테스트합니다. 테스트 실패시 위의 항목들을 재검토합니다.

4). DBeaver에서 DB 연결 설정

Main 탭 설정

Server Host : RDS의 엔드포인트를 적습니다.

Database : 접속할 DB를 입력합니다.

Username,Password : RDS 생성시 설정한 사용자이름과 비밀번호 값을 입력합니다.

Test Connection : 설정완료후 클릭하여 테스트합니다. 테스트 실패시 위의 항목들을 재검토합니다.

5). DB 연결

  • 모든 설정이 완료되었으면 완료 버튼을 누릅니다.
  • 연결이 잘되었는지 확인합니다.


결론

  • 이 방법을 통해 RDS에 대한 안전한 접근을 설정할 수 있습니다.
  • EC2 인스턴스를 통한 SSH 터널링 방식은 접근자를 제한하여 무결성 훼손을 방지하고, RDS와 같은 중요 데이터베이스에 대해 안전한 관리 할 수 있습니다.