본문 바로가기
DevOps/DevOps

[AWS] public & private subnet 분리로 서버 운영하기

by sebinChu 2024. 4. 7.

개요

AWS 서비스를 조금 더 보안성 있게 운영하고자 한다면, 한 VPC 내의 subnet을 분리하여 사용하는 방법이 있다.

이번 프로젝트는 앞으로 동아리에서 쭉 사용할 서비스이므로 처음부터 보안에 유의하여 설계를 해야겠다 다짐했다!!

 

 

그래서 이 포스팅을 통해 어떤 과정을 겪었는지 정리해보려 한다.

AWS에서 자체적으로 해주는 것이 많아서 생각보다 많이 간단했다.

 


VPC 만들기

AWS 계정을 생성하고 나면 기본 VPC는 존재한다. 별도의 퍼스널 서브넷 세팅을 위해 새로 VPC를 생성하자.

 

생성할 리소스 옵션 중 VPC만/VPC 등 두 가지가 있는데, private subnet에 RDS를 두려면 반드시 후자를 선택해야 한다. RDS 생성 시에도 RDS subnet을 세팅하게 되는데 이때 subnet은 두 개 이상의 리전에 대한 VPC에만 설정할 수 있기 때문이다.

 

 

가용영역 세팅하기

 

 

가용영역은 서비스를 호스팅할 지역의 2a, 2b로 설정한다.

서브넷 CIDR 블록은 private subnet은 RDS만 둘 예정이므로 25로 비교적 작은 값으로 세팅하였다.

 

이후, NAT 게이트웨이와 VPC 엔드포인트는 일단 없음으로 설정하고 다음 세팅으로 미루도록 한다.

 

 

 

생성 후 VPC 리소스맵을 통해 확인

세부정보 탭 옆 리소스맵

 

각각의 리전 가용영역에 public/private 서브넷이 세팅된 것을 확인할 수 있다.

 

  • 특히 public 라우팅 테이블은 두 개의 public 서버와 한 번에 연결되어 있다.
  • 또한 외부와의 통신을 위해 Igw(Internet gateway)와 잘 연동되어있음을 확인할 수 있다.
  • private 라우팅 테이블은 개별 서브넷에 할당되어 있으며 Igw와는 당연히 연결이 되어있지 않다.

 


인터넷 게이트웨이란?

VPC와 인터넷 간 통신을 가능하게 하는 통로다. 이 인터넷 게이트웨이를 VPC에 연결하여 퍼블릭 서브넷으로 연결해주면 해당 서브넷이 퍼블릭 역할을 할 수 있다. 

 

위처럼 VPC 등 세팅을 한꺼번에 하게되면, AWS에서 자동으로 이를 생성하고, 등록해준다. 

 

 

실제로 따로 Internet Gateway를 설정하고 등록하려면 아래와 같이 게이트웨이와 VPC를 연동해주면 된다.

해당 프로젝트에 사용되지 않는 별도의 IGW

 

 


 

보안그룹 세팅

보안 그룹은 특정 VPC에 대한 규칙이므로 처음에 반드시 보안 사항을 적용할 VPC를 선택해주어야 함을 유의하자.

인바운드 public 규칙

외부에서 VPC - public subnet 내부의 EC2로 접근 가능한 프로토콜을 세팅한다.

즉, 인바운드에 대한 규칙을 설정한다. public 서버에 대한 보안 그룹이므로, 모든 트래픽(Ipv4: 0.0.0.0/0, Ipv6: ::/0)을 허용한다.

 

유형만 선택하면 프로토콜과 포트를 결정해주어서 정말 편했다..

 

*아웃바운드는 apt-get 등 패키지 설치를 위해 http, https만 허용하였다.

 

 

인바운드 private 규칙

이번에는 내부망에서 관리자가 EC2를 통해 RDS로 접근할 수 있는 보안 규칙을 생성한다.

 

DB 접근 전용 SG이므로, 위와 같은 명명 규칙과 설명을 추가한다.

 

 

 

 

이때는 public 설정과 달리 트래픽 범위를 제한해야 한다.

일단 유형/프로토콜/포트범위는 사용할 MySQL로 제한하고, 소스 범위는 위에서 정의한 public SG로 할당한다!

 

 

이렇게 제한함으로써 private한 구축이 가능하게 되는 것이다.

 

세팅 완료

 

 

 


GCP를 쓰다가 AWS로 프로젝트에 도전해보았는데 훨씬 자동화도 잘 되어있고 편리하다는 것을 많이 느꼈다!

이번 과정을 통해 기반을 다져두었으니,  다음 포스팅에서는 RDS와 EC2 등 세팅을 진행해보도록 하자.

 

 

 

댓글