이번 가이드에서는 MySQL 등의 RDS 서비스에 안전하게 연결하기 위한 절차에 대해 설명합니다.
Xplenty는 데이터베이스에 액세스하는 방법으로 다음 세 가지 방법을 제공합니다.
- Direct connection
- SSH Tunnel
- Reverse SSH Tunnel
1. Direct connection
Direct Connect는 사용자와 암호를 사용하여 직접 연결하는 방법입니다.
SSL 옵션 정보에 대하여 :
Xplenty에서 연결할 때 SSL 인증서를 등록하지 않고도 어떻게 RDS연결에 SSL을 통해 액세스 할 수 있을까요? 그 이유는 AWS 사이트에 있는 루트 인증서를 Xplenty쪽에서 미리 보유하고 있기 때문입니다. 따라서 RDS에 접속하는 경우는 Connect using SSL의 체크만으로 간단하게 SSL을 사용한 RDS에 접속이 가능합니다.
2. SSH Tunnel
SSH Tunnel은 Bastion 호스트(인터넷과 같은 외부 네트워크에서 사설 네트워크에 대한 액세스를 제공하는 서버)를 통해 Xplenty를 데이터베이스 또는 파일 서버에 연결할 수 있습니다. 이 연결 유형은 데이터 웨어하우스에 인바운드 방화벽 규칙을 추가할 수 없거나 데이터 웨어하우스의 IP 주소가 인트라 넷에 있는 경우(외부 네트워크로 액세스가 안 되는 경우)에 사용됩니다.
1.Tunnel Host(Bastion 호스트)쪽의 준비
SSH 공개 키는 Xplenty의 커넥션 설정 화면에서 개별 커넥션 별로 생성됩니다. 이 공개 키는 SSH 터널 세션을 인증하는 데 사용되며, 복사 아이콘을 클릭하여 SSH 공개 키를 클립보드에 복사합니다.
다음은 Bastion 호스트쪽으로 가서 아래의 절차를 수행합니다.
-
xplenty라는 그룹을 만듭니다.
sudo groupadd xplenty
-
xplenty라는 사용자와 Home 디렉토리 작성
sudo useradd -m -g xplenty xplenty
-
사용자를 xplenty로 전환
sudo su - xplenty
-
.ssh 디렉토리를 만들고 권한을 변경
mkdir ~/.ssh && chmod 700 ~/.ssh
-
authorization_keys 파일을 만들고 권한을 변경
touch ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys
-
텍스트 편집기 등을 사용하여 클립보드의 공개 키를 authorized_keys에 추가
-
Xplenty의 IP 주소에서 제공하는 서버 호스트 및 포트에 대한 액세스를 허용하도록 설정
위의 작업이 완료되면 Xplenty의 커넥션 설정 화면에서 Test connection을 클릭하고 연결이 성공하면 Create connection을 클릭합니다.
2. 터널 보안에 관한 주의사항
기본적으로 SSH 액세스를 열면 Xplenty와 SSH 터널을 종료하는 데이터베이스 호스트 간의 방화벽을 교모히 회피하며 모든 포트에 대한 전송이 가능합니다. 보다 안전한 보안을 위해 포트 포워딩과 터널 서버에 대한 로그인을 제한 하십시오. 이를 위해서 계정의 공개 키에 대하여 ~/.ssh/authorized_keys 항목의 적절한 설정으로 제어할 수 있습니다.
예를 들어, 다음 설정 내용을 authorized_keys 파일의 SSH 키 앞에 추가할 수 있습니다. 이 설정 내용은 사용자 환경에 맞게 반드시 재설정하여 사용하도록 하십시요.
no-pty,no-X11-forwarding,permitopen="localhost:5432",permitopen="localhost:3306",command="/bin/echo Login Not Permitted"
3. 연결 정보를 입력하고 Create Connection을 클릭합니다.
3. Reverse SSH Tunnel(Unix의 경우)
주) Windows의 경우는 이곳(영어)을 참고하세요.
-
여기의 순서(영어)를 참고하여 EC2측(autossh를 움직이는 서버)에서 Private와 Public key를 생성해, public 키의 파일을 다운로드
- Xplenty 측 화면에서 SSH Key 메뉴에서 Public Key 저장주의 : 공개 키를 편집기에서 복사 한 경우 줄 바꿈이 포함되어 있다면 "Public key is invalid. It must begin with ..." 에러 메세지가 표시 될 수 있으므로 주의하십시오.
-
연결 정보를 입력하고 Create Connection을 클릭
-
아래의 Reverse Tunnel Connection Setup에 Xplenty쪽의 서버 정보가 표시되므로 아래와 같이 xxxxx의 포트 번호 부분을 메모
-
EC2 서버 측의 절차에 따라 SSH Server(autossh) 설치
절차는 여기(영어)의 "Reverse SSH Tunnel"의 절차 2를 참조하십시오.
SSH 통신 테스트 시의 주의: 위의 링크에 있는 절차 6의 명령은 각각 아래 표를 참고로 설정하십시오.
설정 위치 |
설 명 |
connection port |
위의 4단계에서 기록한 포트 번호를 설정합니다. (굵은 부분의 번호) |
my server |
RDS 혹은 Firewall 너머에 있는 (MySQL 등) 서버의 호스트명을 지정해 주세요. |
local port |
RDS 또는 Firewall을 넘는 (MySQL 등) 서버의 포트 번호를 지정하십시오. |
Xplenty server |
연결을 만들 때 Xplenty 화면에 표시되는 호스트 이름을 설정합니다. 예) 순서 4의 화면을 예로 한 경우 virginia-tunnel.xplenty.com을 설정합니다. |
private key file |
secret key 경로 예) ~/.ssh/id_rsa |
- 여기까지 절차가 완료되면 Xplenty 연결 화면에서 "Test connection" 버튼을 클릭하여 테스트 연결이 가능한지 확인