✨ SSH Tunneling현재 RDS가 Private Subnet에 위치하기 때문에 VPC 외부에서 직접 엑세스 하는 것이 불가능하다. 하지만 관리자는 테스트를 위해 접근해야 할 상황이 빈번하게 일어나는데, 이는 SSH 터널링을 통해서 해결할 수 있다.
SSH 터널링은 SSH 클라이언트에서 SSH 서버로의 연결을 통해 터널을 생성하고, 해당 터널을 통해 데이터를 전송하는 기법이다. SSH 터널을 통해 전송되는 데이터는 암호화 되어 전송되기 때문에 안전성을 어느정도 보장할 수 있다.
여기서 SSH 클라이언트의 구성은 Host, User, Key Pair로 이루어져 있다.
Public Subnet에 위치한 EC2 인스턴스로 요청을 보내면, 3306 포트로 포워딩 시켜서 RDS 인스턴스로 도달하게 만드는 것이다. 이 때 EC2 인스턴스의 인바운드 규칙에 SSH 포트에 해당하는 22번을 열어둬야 요청이 허용된다.
✨ SSH Tunneling 구성
1. EC2 보안 그룹 설정 및 키 페어 생성
EC2 보안 그룹 설정 시 인바운드 규칙을 다음과 같이 설정한다. 이렇게 함으로써 EC2 인스턴스는 SSH 클라이언트의 요청을 허용할 수 있다.
EC2 인스턴스에 접근하기 위한 키 페어를 생성해준다.
2. EC2 인스턴스 생성
위에서 생성한 키페어를 지정해준다.
1, RDS 인스턴스가 존재하는 VPC 내의 Public Subnet에 EC2 인스턴스가 위치할 수 있도록 VPC와 서브넷을 설정해준다.
2. 퍼블릭 IP 자동 할당은 활성화를 시켜준다. 추후 SSH 클라이언트 요청 시 Host 정보로 활용될 것이다.
3. 보안 그룹은 위에서 설정한 보안 그룹으로 지정해준다.
3. RDS 보안 그룹 수정
외부에서 접근 시 SSH Tunneling을 통해서 들어오는 요청만 허용할 수 있도록 보안 그룹의 인바운드 규칙을 편집해준다.
✨ 데이터베이스 툴에서 접속하기
1. IntelliJ DB Connection
데이터베이스 연결을 위한 정보를 입력해준다.
1. Host는 EC2 인스턴스 생성 후 할당된 퍼블릭 IP 주소를 입력해준다.
2. User는 리눅스 기준 ec2-user을 입력해준다.
3. Auth type을 Key Pair로 변경해주고 Key file에 키 페어 생성시 발급 되었던 .pem 파일을 불러와준다.
이후 우측 하단에 있는 Test Connection 버튼을 클릭하면 연결 성공에 해당하는 메시지를 확인할 수 있다.
2. MySQL Workbench DB Connection