Amazon EC2 인스턴스를 배스천 호스트로 사용하여 로컬 시스템에서 프라이빗 Amazon RDS DB 인스턴스에 연결하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2022년 3월 29일

Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스를 배스천(점프) 호스트로 사용하여 로컬 시스템에서 프라이빗 Amazon Relational Database Service(Amazon RDS) DB 인스턴스에 연결하려면 어떻게 해야 합니까?

간략한 설명

EC2 인스턴스를 점프 서버로 사용하여 로컬 시스템에서 프라이빗 RDS DB 인스턴스에 연결하려면 다음 단계를 따르세요.

  1. EC2 인스턴스를 시작 및 구성하고 하고 인스턴스의 네트워크 설정을 구성합니다.
  2. RDS DB 인스턴스의 보안 그룹을 구성합니다.
  3. 로컬 시스템에서 RDS DB 인스턴스에 연결합니다.

중요:프라이빗 Amazon RDS 또는 Amazon Aurora DB 인스턴스에 연결하려면 VPN 또는 AWS Direct Connect를 사용하는 것이 가장 좋습니다. VPN 또는 Direct Connect를 사용할 수 없는 경우 배스천 호스트를 사용하세요. 다음 예제 구성은 보안 그룹을 사용하여 액세스를 제한합니다. 그러나 연결을 보다 안전하게 하기 위해 서브넷의 네트워크 액세스 제어 목록(네트워크 ACL)을 제한할 수도 있습니다. 0.0.0.0/0 대신 더 작은 범위를 사용하도록 인터넷 게이트웨이의 라우팅 범위를 제한할 수도 있습니다. 예를 들어 인터넷 게이트웨이를 추가할 때 필요한 CIDR 범위만 대상의 라우팅 테이블에 추가할 수 있습니다. 자세한 정보는 라우팅 옵션 예제를 참조하세요.

해결 방법

다음 예제 구성은 Amazon Virtual Private Cloud(Amazon VPC)에 있는 Amazon RDS for MySQL 인스턴스에 대한 것입니다. 인스턴스에는 EC2 인스턴스에 대해 설정된 보안 그룹이 있습니다.

EC2 인스턴스 시작 및 구성

  1. Amazon EC2 콘솔을 열고 [Launch instance(인스턴스 시작)]를 선택합니다.
  2. Amazon Machine Image(AMI)를 선택합니다.
  3. 인스턴스 유형을 선택한 후 [Next: Configure Instance Details(다음: 인스턴스 세부 정보 구성)]를 선택합니다.
  4. [Network(네트워크)]에서 RDS DB 인스턴스가 사용하는 VPC를 선택합니다.
  5. [Subnet(서브넷)]에서 라우팅 테이블에 인터넷 게이트웨이가 있는 서브넷을 선택합니다. 인터넷 게이트웨이가 아직 없는 경우 EC2 인스턴스를 생성한 후 서브넷에 추가할 수 있습니다.
  6. [Next: Add Storage(다음: 스토리지 추가)]를 선택하고 필요에 따라 스토리지를 수정합니다.
  7. [Next: Add Tags(다음: 태그 추가)]를 선택하고 필요에 따라 태그를 추가합니다.
  8. [Next: Configure Security Group(다음: 보안 그룹 구성)]을 선택하고 [Add Rule(규칙 추가)]을 선택한 후 다음을 입력합니다.
    Type(유형): 사용자 지정 TCP 규칙
    [Protocol(프로토콜)]: TCP
    포트 범위: 22
    [Source(소스)]: 로컬 시스템의 IP 주소를 입력합니다. 기본적으로 소스 IP 주소는 모두에게 개방되어 있습니다. 하지만 로컬 퍼블릭 IP 주소에 대해서만 허용하도록 액세스를 제한할 수 있습니다.
  9. [Review and Launch(검토 및 시작)]를 선택합니다.
  10. [Launch(시작)]를 선택합니다.

RDS DB 인스턴스의 보안 그룹 구성

  1. Amazon RDS 콘솔을 열고 탐색 창에서 [데이터베이스(Database)]를 선택합니다.
  2. RDS DB 인스턴스의 이름을 선택합니다. 또는 RDS DB 인스턴스를 생성합니다(아직 없는 경우).
  3. [연결 및 보안(Connectivity & security)] 탭을 선택합니다.
  4. [Security(보안)] 섹션에서 [VPC Security Groups(VPC 보안 그룹)] 아래의 링크를 선택합니다.
  5. 보안 그룹을 선택하고 [Actions(작업)]를 선택한 다음 [Edit inbound rules(인바운드 규칙 편집)]를 선택합니다.
  6. [Choose Add(규칙 추가)]를 선택하고 다음을 입력합니다.
    Type(유형): 사용자 지정 TCP 규칙
    [Protocol(프로토콜)]: TCP
    [Port Range(포트 범위)]: RDS DB 인스턴스의 포트를 입력합니다.
    [Source(소스)]: EC2 인스턴스의 프라이빗 IP 주소를 입력합니다.
  7. [Save(저장)]를 선택합니다.

보안 그룹에 대한 이 구성은 EC2 인스턴스의 프라이빗 IP 주소에서 수신되는 트래픽을 허용합니다. EC2 인스턴스와 RDS DB 인스턴스가 동일한 VPC를 사용하는 경우 RDS DB 인스턴스의 라이팅 테이블을 수정할 필요가 없습니다. VPC가 다른 경우 VPC 피어링 연결을 생성하여 해당 VPC 간의 연결을 허용합니다.

로컬 시스템에서 RDS DB 인스턴스에 연결

사용하는 클라이언트에 따라 RDS DB 인스턴스에 연결하는 단계가 다릅니다. 자세한 내용은 Amazon RDS DB 인스턴스에 연결을 참조하세요. MySQL을 사용하는 경우 SSL을 사용하여 클라이언트 애플리케이션과 Amazon RDS 간의 연결을 암호화하는 것이 모범 사례입니다.

다음 예제에서는 MySQL Workbench 클라이언트를 사용하여 배스천 호스트에 연결합니다.

  1. 새 연결을 시작하고 [Connection Method(연결 방법)]에서 [Standard TCP/IP over SSH(표준 TCP/IP over SSH)]를 선택합니다.
  2. EC2 인스턴스의 SSH 설정에 대한 다음 세부 정보를 입력합니다.
    [SSH Hostname(SSH 호스트 이름)]: EC2 인스턴스의 퍼블릭 DNS 이름을 입력합니다.
    [SSH Username(SSH 사용자 이름)]: EC2 인스턴스의 사용자 이름을 입력합니다. 예를 들어 "ec2-user"는 EC2 Linux 시스템의 사용자 이름입니다.
    [SSH Key File(SSH 키 파일)]: EC2 인스턴스를 생성할 때 사용한 프라이빗 키를 선택합니다.
  3. MySQL 인스턴스 설정에 대한 다음 세부 정보를 입력합니다.
    [MySQL 호스트 이름]: RDS DB 인스턴스 엔드포인트를 입력합니다.
    [MySQL 서버 포트]: 3306(또는 사용하는 사용자 지정 포트)을 입력합니다.
    [Username(사용자 이름)]: RDS DB 인스턴스의 마스터 사용자 이름을 입력합니다.
    [Password(암호)]: RDS DB 인스턴스의 마스터 암호를 입력합니다.
  4. [Test Connection(테스트 연결)]:을 선택합니다.
  5. 연결이 성공하면 연결 이름을 입력하고 연결을 저장합니다.

SSH 터널을 사용하여 로컬 MySQL 클라이언트에서 프라이빗 RDS 인스턴스로 연결하려면 다음 명령을 참조하세요.

리눅스 또는 macOS:

다음 명령을 실행합니다.

ssh -N -L 3336:127.0.0.1:3306 [user]@[server_ip]

mysql -u MYSQL_USER -p -h 127.0.0.1

참고: 사용자, server_ipmysql_user를 자신의 정보로 바꿉니다.

Windows PowerShell:

ssh -i "<filename>.pem" <user_name>@<EC2_Endpoint> -L <Port_number>:<RDS_Endpoint>:<Port_number> -N

참고: 파일 이름사용자 이름을 사용자 정보로 바꿉니다. EC2_Endpoint, port_number, RDS_EdnpointPort_number를 RDS 인스턴스에 대한 정보로 바꿉니다.