Published on

동일 VPC 내부 통신으로만 RDS 접근하기

Authors
  • avatar
    Name
    ywj9811
    Twitter

VPC가 무엇일까

EC2와 RDS, S3등 AWS의 각 서비스는 기본적으로 VPC를 이용한 Private한 네트워크 환경을 보장 받는다.

VPC란 논리적으로 격리된 가상 네트워크를 의미하는 것으로 Virtual Private Cloud의 약자이다.

Untitled

이런식으로 VPC를 적용하게 되면 VPC별로 네트워크를 구성할 수 있고, 각각의 VPC에 따라 다르게 네트워크 설정을 줄 수 있다. 또한 각각의 VPC는 독립된 네트워크처럼 동작하게 되는 것이다.

서브넷

그리고 VPC 내부에 서브넷을 구축하여 VPC를 다시 한번 쪼갤 수 있다.

Untitled

이러한 서브넷은 private와 public으로 나뉘는데, 말 그대로 외부에서 접근이 가능한가, 불가능한가 이다.

그렇다면 이제 이 서브넷을 private와 public으로 설정하여 외부에서 접근 가능하게 하거나, 외부에서는 접근할 수 없고 같은 VPC 내부에서만 접근할 수 있도록 설정해줄 수 있다.

물론 서브넷, 라우터, 라우팅 테이블 등등 네트워크 전공시간에 공부할 수 있는 내용이지만 깊게 들어가면 이 페이지를 모두 작성해도 모자른 내용이고 사실 기억이 잘 안나기 때문에 이 부분은 이런식으로 있을 수 있구나 하는 식으로 넘어가도록 하자.

실제로 구축하기

Untitled

위와 같은 방식으로 구축을 하려고 한다.

이전에 살펴본 내용을 함께 보면 VPC를 생성하고 동일 VPC 내부에 EC2와 RDS를 넣어 외부 Client는 EC2에만 접근할 수 있고, VPC 내부에 있는 EC2만 RDS에 접근할 수 있도록 하려는 것이다.

즉, EC2에서 보안그룹 설정을 하고 그 방화벽을 통과하여 접근을 해서 EC2를 거쳐야만 RDS에 접근을 할 수 있도록 하는 것이다.

(AWS에서 물론 기본으로 default VPC를 만들어 놓긴 한다)

VPC 구축

(이미 만들어서 사진과 함께 처음부터 보여주기 어렵다…)

VPC에서 생성을 누른 후 이름 정하고 AZ 최소 2개를 선택한 후 진행하면 된다.

(기본과 비슷하지만 해당 사용할 VPC를 만든다고 생각하면 된다)

보안 그룹 세팅

VPC내부의 EC2에 누가 접근할 수 있는지를 지정하기 위해서 세팅을 해야한다.

VPC 콘솔 좌측에서 보안그룹을 선택 후 생성을 하자.

Untitled

이렇게 이름을 선택 후 VPC를 이전에 만든 VPC로 선택하면 해당 VPC에 대한 보안그룹이 하나 생성되는 것이다.

그리고 인바운드 규칙 추가를 해야 하는데, SSH, HTTP, HTTPS 와 같이 외부에서 접근하기 위한 포트 설정을 해주면 된다.

이제 마찬가지로 RDS에 누가 접근할 수 있는지를 지정하기 위한 세팅을 해줘야 한다.

마찬가지로 보안그룹 생성을 해야 한다.

Untitled

이때 위에서 생성한 보안그룹을 넣어주게 되면 해당 보안그룹을 통해서 들어온 트래픽만 3306 포트를 통해 받아준다는 뜻이 되는 것이다.

서브넷 그룹 생성

(사진 퍼옴 출처 : https://velog.io/@janeljs/AWS-7)

Untitled

이와 같이 서브넷 그룹을 만들어준다.

RDS 생성

이전에 RDS 생성하던 방식과 유사하게 진행하면 된다.

다만, VPC를 이전에 생성한 VPC로 선택하고 서브넷 그룹 또한 위에서 생성한 서브넷 그룹으로 생성한다.

그리고 public access를 아니요로 선택한 후 보안 그룹을 위에서 만든 DB용 보안 그룹을 할당하면 된다.


결과 및 정리

이렇게 RDS를 생성하고 나면, 로컬에서 접근하려 하면 접근이 안될 것이다.

왜냐하면 EC2의 보안 그룹을 통과하여 접근된 트래픽만 허용하기 때문이다.

이제 EC2에 접근한 후 RDS에 접근을 해보자.

Untitled

이렇게 EC2에서 mysql -u {username} -p port 3306 --host {endpoint} 를 통해 접근 후 비밀번호를 넣어주면 들어갈 수 있다.

정리해보자면, RDS와 EC2를 같은 VPC에서 구축하고 RDS에 대해 접근할 수 있는 권한은 EC2의 보안그룹을 통과한 VPC 내부로만 설정하면 RDS는 EC2를 통해서만 접근할 수 있게 되는 것이다.