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

Moondy·2022년 7월 3일
0

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
DevOps를 살짝 찍먹하는 BackEnd 개발자

0개의 댓글