VPC(Virtual Private Cloud)
VPC는 사용자가 정의하는 aws 계정 사용자 전용 가상의 네트워크입니다. 사용자는 자기가 원하는대로 IP 주소 범위 선택, 서브넷 생성, 라우팅 테이블 및 네트워크 게이트웨이 구성 등 가상 네트워크 환경을 구성해 VPC를 생성할 수 있습니다. 즉, AWS용 나만의 개인 네트워크 망 데이터센터 라고 이해하면 됩니다.
🏷️ 배경
예전에는, 위와 같이 VPC 이전 EC2-클래식 네트워크는 여러 사용자의 인스턴스들이 거미줄처럼 얽혀있어 복잡도가 높았습다. 또한 아래와 같은 문제점이 생기게 되었습니다.
- 클라우드에서 어떻게 네트워크를 분리할 것인가?
- 어떻게 애플리케이션 중 일부는 인터넷을 통해 퍼블릭하게 연결하고, 일부는 프라이빗하게 연결할 것인가?
- 동일한 IP 범위를 클라우드로 확장하는 방법이 있는가?
- EC2 인스턴스를 생성하면 32비트 랜덤 IP 주소 체계와 비슷하게 유지할 수 있는 방법이 있는가?
그래서 Amazon VPC가 도입하여 위와 같이 인스턴스가 VPC에 속함으로써 문제점을 해결하게 되면서 네트워크를 구분할 수 있고 VPC 별로 필요한 설정을 통해 인스턴스에 네트워크 설정을 적용할 수 있게 되었습니다. 그리고 사용자는 직접 VPC를 생성해서 사용할 수도 있고 계정을 생성시 region별로 디폴트로 생성되는 VPC를 사용할 수도 있습니다.
🏷️ 구성요소
✅ 서브넷(Subnet)
서브넷(Subnet)은 하나의 네트워크가 분할되어 나눠진 작은 네트워크입니다. 각 서브넷에는 IP 주소 범위가 할당되며 네트워크 트래픽 제어를 위한 자체 정책이 있을 수 있습니다. 이를 통해 VPC를 웹 서버 또는 데이터베이스 서버 호스팅과 같은 특정 목적을 가진 개별 섹션으로 나눌 수 있습니다.
VPC 안에서는 여러 개의 서브넷을 생성할 수 있는데 각각의 서브넷은 하나의 가용 영역(Available Zone, AZ) 안에 존재해야 하며, 여러 영역으로 확장할 수 없습니다. 별도의 가용 영역에서 AWS 리소스를 시작하면 단일 가용 영역의 장애로부터 애플리케이션을 보호할 수 있습니다.
퍼블릭 서브넷(Public Subnet)
외부와 자유로운 통신이 가능하고, 외부 인터넷 구간과 직접적으로 통신을 할 수 있는 공공 네트워크입니다.
프라이빗 서브넷(Private Subnet)
외부에서 직접 접근할 수 없고, NAT 게이트웨이를 이용하면 내부에서 외부로의 단방향 통신만 가능합니다.
✅ 라우팅 테이블(Routing Table)과 라우터(Router)
라우팅 테이블에는 서브넷 또는 게이트웨이의 네트워크 트래픽이 전송되는 위치를 결정하는 라우팅이라는 규칙 세트가 포함되어 있습니다. VPC의 각 서브넷은 라우팅 테이블과 연결되어야 합니다. 별도로 사용자가 설정하지 않으면, VPC의 기본 라우팅 테이블과 연결됩니다. 라우팅 테이블을 수정하고, 사용자 지정 라우팅 테이블을 생성하고, 이를 서브넷과 연결하여 트래픽 흐름을 더욱 정확하게 제어할 수 있습니다.
✅ 인터넷 게이트웨이 및 NAT 게이트웨이
인터넷 게이트웨이는 VPC와 인터넷 간에 통신이 가능하도록 해주는 관문이라고 할 수 있습니다. 반면 NAT (Network Address Translation, 네트워크 주소 변환) 게이트웨이는 NAT 서비스로 프라이빗 서브넷의 인스턴스가 인터넷이나 다른 AWS 서비스에 액세스할 수 있도록 허용하고, 인터넷이 해당 인스턴스와의 연결을 시작하는 것을 방지합니다.
이렇게 하면 VPC의 프라이빗 서브넷에 있는 인스턴스에 대한 안전한 아웃바운드 연결이 가능합니다.
✅ 네트워크 액세스 제어 목록(NACL)과 보안 그룹
네트워크 액세스 제어 목록(Network Access Control List, NACL)과 보안 그룹은 VPC 내에서 네트워크 보안의 중추입니다.
NACL은 서브넷 수준에서 특정 인바운드 또는 아웃바운드 트래픽을 허용하거나 거부합니다. NACL 규칙은 트래픽이 서브넷 내에서 라우팅 될 때가 아니라 서브넷에 들어오고 나갈 때 평가됩니다. 즉 허용되는 인바운드 트래픽에 대한 응답은 아웃바운드 트래픽에 대한 규칙을 따르고 그 반대의 경우에도 마찬가지입니다.
반대로 보안 그룹은 개별 리소스 수준에서 작동합니다. 인스턴스에 대한 인바운드 및 아웃바운드 트래픽을 제어하며 포트 및 프로토콜을 기반으로 허용할 수 있는 트래픽을 지정할 수 습니다. 각 보안 그룹에는 인바운드 트래픽과 아웃바운드 트래픽에 대한 별개의 규칙 집합을 추가합니다.
🏷️ 장점
✅ 개인정보 보호 및 보안
네트워크 인프라를 격리함으로써 VPC는 데이터가 퍼블릭 클라우드의 다른 데이터와 분리되도록 합니다. 보안 그룹 및 네트워크 액세스 제어 목록과 같은 기능을 사용하면 인바운드 및 아웃바운드 트래픽을 제어할 수 있어 애플리케이션을 더욱 안전하게 보호할 수 있습니다.
✅ 맞춤형 네트워크 구성
VPC를 사용하면 비즈니스 요구 사항에 맞게 네트워크 구성을 자유롭게 사용자 정의할 수 있습니다. IP 주소 범위를 선택하고, 서브넷을 생성하고, 경로 테이블 및 네트워크 게이트웨이를 구성할 수 있습니다.
✅ 제어된 트래픽 흐름
VPC는 리소스에 대한 제어된 액세스를 허용합니다. 라우팅 테이블, 인터넷 게이트웨이 및 가상 사설망(VPN) 연결을 사용하여 네트워크 내의 데이터 흐름을 지시하고 관리할 수 있습니다.
✅ 확장된 IT 인프라
보안 VPN 연결을 통해 온프레미스 리소스를 클라우드 인프라에 연결하여 자체 데이터 센터의 확장으로 만들 수 있습니다. 이렇게 하면 데이터 전송이 더 원활해지고 두 환경의 이점을 모두 활용할 수 있습니다.
✅ 다중 연결 옵션
VPC는 온프레미스와의 프라이빗 연결, 사무실 또는 로컬 네트워크와의 직접 연결 옵션, 인터넷을 통한 VPN 연결을 비롯한 여러 연결 옵션을 제공합니다.
📖 Reference
'코딩 공부 > Cloud' 카테고리의 다른 글
[AWS] EBS(Elastic Block Storage) (0) | 2024.04.24 |
---|---|
[AWS] AWS 구조 (1) | 2024.04.22 |
[AWS] ELB(Elastic Load Balancer) (0) | 2024.04.20 |
[AWS] S3(Simple Storage Service) (0) | 2024.04.19 |
[AWS] RDS(Relational Database Service) (0) | 2024.04.19 |