본문 바로가기
Tech Story/AWS

[AWS] Amazon VPC(Amazon Virtual Private Cloud)

by 다온(都来) 2022. 11. 3.

Amazon VPC란?

Amazon Virtual Private Cloud의 줄임말로 논리적으로 격리되어 있는 계정 전용 가상 네트워크를 말합니다.이 VPC 내에서 EC2 인스턴스와 같은 AWS 리소스를 생성해서 사용할 수 있습니다. VPC는 리전 범위의 서비스이며 가용 영역에 걸쳐서 사용됩니다.

Amazon Virtual Private Cloud 아이콘
이미지 출처 : AWS

 

 

Amazon VPC 특징

VPC는 IP 주소의 범위 선택, 서브넷 생성, 라우팅 테이블 및 인터넷 게이트웨이 구성 등 가상 네트워킹 환경을 완벽하게 제어할 수 있습니다. 또한, 데이터센터를 보유한 경우 전용선 옵션인 Direct Connect 또는 VPN 연결을 통해서 하이브리드 아키텍처를 가져갈 수도 있습니다. VPC 하나에 서비스를 배치할 수도 있지만, 개발 및 테스트 환경, 운영과 또는 부서와 같이 용도를 나누어 사용 가능합니다. 기본적으로 VPC끼리는 서로 통신이 되지 않지만 추가적으로 VPC 피어링이나 Transit Gateway를 통해서 이를 연결할 수도 있습니다.VPC에서 위의 기능 뿐 아니라 보안 그룹 및 네트워크 ACL을 포함한 다중 보안 계층을 사용해 서비스에 대한 보안을 강화할 수도 있습니다.

서브넷이란?

리소스 그룹을 격리할 수 있는 VPC IP 주소 범위의 세그먼트 또는 파티션입니다. 서브넷은 인터넷 접근성을 정의합니다.

 

VPC는 논리적으로 격리 외 더 있는 가상 네트워크이며 Private IP 대역을 할당할 수 있습니다. 하지만, VPC만 만들었다고 해서 EC2 인스턴스와 같은 서비스를 바로 배치할 수는 없습니다. VPC는 서브넷을 생성하고 해당 서브넷에 EC2 인스턴스와 같은 서비스를 배치할 수 있습니다.

 

서브넷은 기본적으로 생성하면 외부와 통신할 수 없습니다. 이를 프라이빗 서브넷이라고 합니다. 하지만, 웹 서비스와 같은 경우 외부에서 접근 가능해야 하기 때문에 이를 위해 Private 서브넷을 퍼블릭 서브넷으로 만들 수 있습니다.

 

퍼블릭 서브넷이 되기 위한 4가지 조건

먼저, 인터넷 게이트웨이라고 불리는 서비스를 생성해서 VPC에 연결해야 하며 라우팅 테이블에서 해당 항목에 대한 트래픽 경로가 지정되어야 합니다.

 

첫 번째, VPC의 계층화된 네트워크 방어

VPC 내에서 계층화된 네트워크 방어를 통해 애플리케이션의 보안을 지킬 수 있습니다.

먼저, VPC의 라우팅 테이블을 사용해 네트워크 트래픽이 전달되는 위치를 제어할 수 있습니다.

트래픽에 대한 위치를 상세하게 제어할 수 있기 때문에 일종의 첫 번째 관문이 될 수 있습니다.

따라서, 악의적 공격자가 우리들의 서비스에 도달하기 위해 공격을 해도 라우팅 테이블에 해당 정보가 없으면 접근이 불가능합니다.

 

두 번째, 네트워크 ACL

네트워크 ACL은 1개 이상의 서브넷 내부와 외부의 트래픽을 제어하기 위한 방화벽 역할을 하는 VPC를 위한 선택적 보안 계층입니다. 규칙을 통해 SSH 접속과 같은 유형, 프로토콜, 포트 범위 및 소스 대상을 선정하고 이를 허용할지 거부할지 설정할 수 있습니다. 규칙은 여러 개 부여할 수 있으며 규칙 번호가 낮을수록 먼저 평가됩니다.

 

세 번째, 보안 그룹

보안 그룹이란 인스턴스에 대한 인바운드 및 아웃바운드 트래픽을 제어하는 가상 방화벽을 의미합니다.

보안 그룹은 서브넷 수준이 아니라 인스턴스를 보호하기 때문에 하나의 서브넷 안에 있는 여러 리소스를 서로 다른 보안 그룹세트에 할당할 수 있습니다.각 보안 그룹별로 인스턴스에 대한 인바운드 트래픽과 아웃바운드 트래픽을 별도로 제어하는 규칙을 정의하는 방식으로 생성합니다.

 

네 번째, 서드파티 솔루션 등

서드파티 솔루션은 직접 설치하는 보안 솔루션 또는 서비스입니다.

이렇게 라우팅 테이블부터 직접 설치하는 서드파티 보안 솔루션까지 여러 계층을 통해 보안을 강화하는 것이 매우 중요합니다.

인프라 구조화

계층적 보안에 대한 부분을 좀 더 명확하게 보자면, 먼저 외부에서 EC2 인스턴스에 접근하기 위해서는 인터넷 게이트웨이라는 서비스를 통해서 접근하게 됩니다. 인터넷 게이트웨이로 들어온 트래픽은 라우팅 테이블의 경로 정보를 가지고 이동하게 됩니다.

라우팅 테이블에서 적절한 정보를 주지 않으면 해당 트래픽은 EC2 인스턴스에 접근할 수 없습니다. 다음으로, 라우팅 테이블을 통해서 트래픽은 서브넷 앞단의 네트워크 ACL을 거치게 됩니다.

네트워크 ACL은 해외 여행할 때 만나게 되는 여권 심사관이 우리를 입국하기에 적합한지 심사하는 것처럼 우리가 정한 룰에 의해 허용된 트래픽인지 확인합니다. 허용된 트래픽은 다음으로 인스턴스 레벨의 가상 방화벽인 보안 그룹을 거치게 됩니다.

보안 그룹은 예를 들어 한 건물의 경비와 같다고 볼 수 있는데, 우리가 정한 룰에 의해 정상 트래픽인지 확인하고 출입을 허용하는 것입니다.위 경로를 거쳐서 EC2 인스턴스에 트래픽이 접근하게 되므로 이를 계층적 보안이라고 하며 라우팅 테이블, 네트워크 ACL, 보안 그룹 등의 설정을 정확하고 정밀하게 하는 것이 중요합니다.

댓글