[NCP] 프라이빗 서브넷에 DB 설치 접속

Moondy·2022년 7월 3일

DB는 보통 BackEnd 서버들만 접속하면 되기 때문에 보안상 외부 접속이 안되는 Private Subnet에 생성한다. 하지만 개발 목적으로 외부 접속(DB 툴에서 DB에 접속하는 경우)을 할 때 우회해서 접속해야하는 일이 생긴다. Naver Cloud Platform의 공식 문서에서는 VPN을 사용하라고 나와있지만, 무슨 이유인지 네이버에서 제공하는 VPN 클라이언트를 다운받을 수 없었다 (NCP 측에서 피드백이 와서 다시 확인해보니 다운로드가 가능했다 🙂 이미 VPN을 삭제해서 사용할 수는 없지만... - 220807 업데이트)

그래서 PortForwarding을 이용해서 우회하는 방법을 택했다.

1. DB 생성

  • DB를 private subnet에 생성했기 때문에 외부(DataGrip 등)에서 바로 접속할 수 없다

  • ACG: cloud-mongodb-6sjw5

  • DB 접속 User 만들기

    • dayoung이라는 계정을 만들었다. (admin db로 하면 admin 권한을 준다)

2. 서버 생성 (devstagram-master)

  • DB와 같은 Vnet 안에 있지만, public subnet에 존재하는 서버를 생성한다
  • 이 서버는 외부(터미널 등)에서 접속할 수 있다.
  • 접속방법은 관리자 비밀번호 확인 탭에서 확인하자

3. ACG 설정

  • devstagram-master 서버에서 DB에 접속하려면 보안 때문에 실패한다
  • DB 서버의 설정을 보면 ACG: cloud-mongodb-6sjw5 이렇게 되어있다.
  • ACG: cloud-mongodb-6sjw5 를 열어서 Inbound 규칙에 devstagram-master의 private ip와 DB 접속 포트인 17017를 추가

4. 로컬에서 devstagram-master에 접속이 잘 되는지 확인하기

# ssh -i [인증키] [username]@[외부ip]
ssh -i devstagram-master.pem moondysmell@175.45.192.198

## 접속 잘되는것 확인하면 우선 나가자
exit
  • 비밀번호를 모르겠다면 서버관리 및 설정 > 관리자 비밀번호 확인에서 확인

5. 로컬 PortForwarding 해놓고 DB 접속 툴에서 접속하기

  • 내 로컬 터미널에서 다음과 같이 실행하여 localhost:17071과 devstagram-master 서버 내 as6dm.vpc.mg.naverncp.com:17017과 연결
# ssh -L [내 로컬 port]:[db의 private 도메인]:[db 접속할 port] -i [인증키] [devstagram-master 접속
ssh -L 17017:as6dm.vpc.mg.naverncp.com:17017 -i devstagram-master.pem moondysmell@175.45.192.198
  • DataGrip과 같은 DB 접속 툴에서 접속

    • localhost:17017로 접속하면 접속이 된다
      • user와 password는 DB 생성때 만든 접속 계정을 쓰면 된다
      • ⭐️만약 Database(Collection/Table의 집합)을 새로 만들게 되면 DB User도 새로 생성해주고, DB 접속 툴에서 database도 수정해줘야한다⭐️

[BONUS] config 파일로 쉽게 Port Forwarding 하기

  • DB에 접속하려면 매번 아래와 같이 길게 커멘드 명령어를 써야한다
ssh -L 17017:as6dm.vpc.mg.naverncp.com:17017 -i devstagram-master.pem moondysmell@175.45.192.198

👆 명령어 한줄로 접속해보자

  • config 설정하기 (mac OS 기준)
    • vi ~/.ssh/config 한 후 다음과 같이 작성

      Host devstagram
      	Hostname 175.45.192.198 #devstagram-master의 publicIp
      	User moondysmell #username
      	IdentityFile ~/keys/devstagram-master.pem #pem 파일 위치
      	LocalForward 17017 as6dm.vpc.mg.naverncp.com:17017 #LocalForward [로컬 Port] [DB의 private도메인]:[DB Port]
  • 접속하기
    • 명령어 한줄이면 접속이 된다

      ssh devstagram
profile
LLM Application을 개발중인 BackEnd 개발자

0개의 댓글