VPC를 통해 AZ별로 서브넷 마스크를 나누어 VLan을 구성할 수 있다.
인터넷 게이트웨이에 공개할 대역을 선택해 외부에서 접근 가능한 서비스와 내부에서 통신할 서비스들을 분리시켜 보안을 향상시킬 수 있다.
VPC 설정
AWS의 VPC 서비스로 이동하면 기본으로 설정된 VPC를 확인할 수 있다.
우리는 VPC중 사용할 VPC를 선택할 수 있으므로 범위가 겹치더라도 문제가 생기지 않는다.
VPC 생성
사용할 VPC의 대역 CIDR 를 설정한다
생성이 완료되면 우리가 설정한 정보를 확인할 수 있다.
우리가 만든 VPC를 선택 후 작업을 클릭해 VPC 설정 편집을 한다.
아래와 같이 DNS 설정을 모두 체크해준다.
서브넷 설정
서브넷 생성
VPC를 우리가 원하는 서브넷마스크로 사용 범위를 나누어주기 위해 서브넷을 생성해주어야 한다.
좌측 메뉴에서 서브넷을 선택해 생성을 해준다.
생성할 때 우리가 선택한 대역의 VPC를 선택해준다.
서브넷 이름은 팀 단위로 선언해서 작성하면 된다.
가용 영역을 선택해 준뒤, VPC 기준으로 서브넷을 나누어 준다.
예를들어 팀에서 VPC를 172.16.0.0/24 로 설정했고, 서브넷을 4개로 나누고 싶다면
- 172.16.0.0/26
- 172.16.0.64/26
- 172.16.0.128/26
- 172.16.0.192/26
이 되는 것이다. 동일한 방식으로 서브넷을 4개 생성해준다.
생성을 완료하면 내가 생성한 4개의 서브넷과 해당 서브넷들이 우리가 만든 VPC와 연결되어 있음을 확인할 수있다.
동일하게 우리가 생성한 서브넷을 선택한 후 작업을 들어가서 퍼블릭 IPv4 자동 할당 옵션을 선택해준다.
AWS에서 기본적으로 제공하는 VPC와 서브넷에서는 해당 옵션이 true로 설정돼있다.
인터넷 게이트웨이 설정
인터넷 게이트웨이 생성
이제 우리가 만든 VPC를 인터넷 게이트웨이에 붙여주자.
먼저 우리가 사용할 인터넷 게이트웨이를 만들어준다.
이름을 팀 단위로 선언해 설정해주고 생성한다.
VPC 할당
생성 후 설정 값을 보면 VPC가 할당이 안된 것을 확인할 수 있다.
우리가 만든 인터넷 게이트웨이에서 작업 드롭박스를 클릭해서 VPC를 붙여주자.
라우팅 테이블 설정
라우팅 테이블 생성
마지막으로 라우팅 테이블에 우리가 만든 서브넷들을 명시적으로 연결시켜주어야 한다.
우리 VPC를 핸들링 할 라우팅 테이블을 생성해주자.
사용할 이름과 우리가 생성했던 VPC를 선택해주자.
생성이 완료되면 우리가 만든 VPC가 붙은 것을 확인할 수 있다.
인터넷 게이트웨이 설정
우리가 만든 라우팅 테이블을 선택 후 라우팅 편집을 해준다.
외부에서 접근해야하기 때문에 0.0.0.0/0 을 오픈시켜주었고 우리가 만든 인터넷 게이트웨이를 붙여주었다.
특정 IP로만 접근할 수 있도록 하려면 해당 IP를 설정해주어야 한다.
이 상태에서는 외부에서 접근한 트래픽이 우리가 만든 인터넷게이트웨이를 지나서 우리의 VPC로 연결된다.
설정을 완료하면 인터넷 게이트웨이가 라우팅 테이블에 붙은 것을 확인할 수 있다.
명시적 서브넷 설정
이후 우리가 분리했던 서브넷을 어떻게 핸들링할지 선언해주어야 한다.
우리가 만든 라우팅 테이블에서 서브넷 탭에 들어가 편집을 진행한다.
외부에 노출 시킬 ( 인터넷 게이트웨이와 연결시킬 ) 서브넷을 선택해준다.
여기서 보안성이 올라가는 것인데 외부에 노출시킬 서브넷에 우리 서비스의 AWS API Gateway나 Spring Cloud Gateway를 붙여주어 외부에서는 해당 서브넷으로만 우리 서비스에 접근하고, 우리 서비스 내부적으로만 트래픽을 공유할 수 있도록 하는 것이다.
명시적 / 비명시적 서브넷
- 인터넷에서 접근 가능한 자원이 필요할 때: 예를 들어, 웹 서버를 호스팅하거나 인터넷에서 직접 다운로드가 필요한 경우에는 인터넷 게이트웨이에 해당 자원이 있는 서브넷을 연결한다.
- 인스턴스가 인터넷에 접근해야 할 때: 패키지 업데이트, 소프트웨어 설치, 웹 서비스 API 호출 등을 수행해야 하는 경우에 인터넷 게이트웨이를 통해 연결한다.
그러나 모든 서브넷이 인터넷에 직접 연결되어야 하는 것은 아니다. 보안이 중요한 애플리케이션, 중요한 데이터를 처리하는 서버 등은 인터넷과 직접 연결되지 않는 것이 좋을 수 있다.
DB나 S3같은 경우는 인터넷이없어도 연결이 가능하기 때문에 보안상 인터넷연결을 안하고 사용게 구성하는게 좋다