🖥 가상 프라이빗 클라우드(VPC)
퍼블릭 클라우드 vs 프라이빗 클라우드
🗂퍼블릭 클라우드
- 퍼블릭 클라우드는 공유 클라우드 인프라.
- 클라우드 벤더의 여러 고객은 데이터는 공유되지 않지만, 동일한 인프라에 액세스. ex) 레스토랑의 모든 사람이 동일한 주방에서 주문하지만, 다른 요리가 서빙되는 것과 같음.
- 퍼블릭 클라우드 서비스 공급자에는 AWS, Google Cloud Platform, Microsoft Azure ...
"다중 테넌트" 란?
클라우드 공급업체의 여러 고객이 동일한 컴퓨팅 리소스를 사용하고 있음을 의미.
클라우드 고객은 리소스를 공유하기는 하지만, 서로를 인식하지 못하며 데이터가 완전히 분리.
📂프라이빗 클라우드
- 단일 테넌트.
- 프라이빗 클라우드는 하나의 조직에 독점적으로 제공되는 클라우드 서비스.
- 가상 프라이빗 클라우드(VPC)는 퍼블릭 클라우드 내의 프라이빗 클라우드 다른 누구도 VPC 고객과 VPC를 공유하지 않음.
VPC가 퍼블릭 클라우드 내에서 어떻게 격리?
- 서브넷 : 네트워크 내의 모든 사람이 사용할 수 없도록 예약된 네트워크 내의 IP 주소 범위로, 기본적으로 개인 용도로 네트워크의 일부를 분할. VPC에서 서브넷은 공개적으로 볼 수 있는 일반적인 IP 주소와 달리 공개 인터넷을 통해 액세스할 수 없는 개인 IP 주소
- VLAN : LAN은 인터넷을 사용하지 않고 모두 서로 연결된 근거리 통신망 또는 컴퓨팅 장치 그룹. VLAN은 가상 LAN임. 서브넷과 마찬가지로 VLAN은 네트워크를 분할하는 방법
- VPN : 가상 사설망(VPN)은 암호화를 사용하여 공용 네트워크 위에 사설 네트워크를 만듬. VPN 트래픽은 라우터, 스위치 등 공개적으로 공유되는 인터넷 인프라를 통과하지만, 트래픽이 변환되어 누구에게도 표시되지 않음.
VPC에는 VPC 고객만 액세스할 수 있는 전용 서브넷과 VLAN이 있다!
-> 퍼블릭 클라우드 내의 다른 사람이 VPC 내의 컴퓨팅 리소스에 액세스하는 것을 방지! ex) 테이블에 "예약석" 표시
-> VPC 고객은 VPN을 통해 VPC에 연결 즉, VPC 안팎으로 전달되는 데이터가 다른 퍼블릭 클라우드 사용자에게 표시되지 않는것.
VPC 와 서브넷
VPC (Virtual Private Cloud)
- 논리적으로 격리된 사용자 전용 가상 네트워크.
- 복수의 AZ (Availibity Zone, 가용영역 ≒ 데이터센터) 걸친 형태
- 💡 AWS의 리소스들이 위치할 네트워크 망.
프로젝트에 사용되는 리소스 (EC2, RDS, S3 등등)이 물리적으로 하나의 데이터센터에만 위치해있다면 해당 센터에 문제가 생긴다면 서비스가 전체적으로 다운타임 발생!!!
👌 가상네트워크를 이용하여 물리적으로는 다른곳에 위치하지만 같은 사설망 IP 대역에 위치하게 만들어 리소스들끼리 통신할 수 있게 만들어주는 기술
서브넷 (subnet)
- VPC의 영역안에서 망을 더 쪼개는 행위
- 하지만 VPC와는 달리 지역적으로 나누기때문에 여러 AZ(가용영역)에 걸쳐있는것이 아닌 단일 AZ에 위치함.
- 대표적으로 보안과 네트워크의 브로드캐스트의 영역을 축소시켜서 통신 성능을 올리기 위함.
public 서브넷 , private 서브넷 나누기
Public Subnet
- 외부에서 접근이 가능한 네트워크영역
- 서브넷이 인터넷 게이트웨이로 향하는 라우팅이 있는 라우팅 테이블과 연결되는 경우 퍼블릭 서브넷이라 함.
- 인터넷 게이트웨이(igw)는 VPC의 구성요소로써 VPC와 인터넷간에 통신을 할 수 있게 만들어주는 역할
- 서브넷이 바라보는 라우팅테이블에 인터넷게이트웨이가 등록되어있는 것
- 해당 서브넷은 인터넷과 연결이 가능하므로 해당 서브넷에 위치한 리소스들은 공인IP를 가질 수 있음.
Private Subnet
- 외부에서 다이렉트로 접근이 불가능한 네트워크 영역
- 서브넷의 라우팅 테이블에 인터넷게이트웨이가 등록되어있지 않으므로 해당 서브넷에 위치한 리소스들은 외부와의 연결이 불가능
NAT (Network Address Translation)
- 프라이빗 서브넷에 DB가 있다고 가정하면, DB버전을 업그레이드하기위해서 인터넷 연결이 필요할 수 있음!
-> 이때 NAT 게이트웨이를 이용하여, 내부에서 외부로만 접근이 가능하게 만들어 줄 수 있는 것.
- 외부에서 NAT 게이트웨이를 이용하여 접속을 불가능!!❌
여기서 말하는 외부란, VPC영역이 다른것을 의미.
같은 VPC영역에 있으면 private IP로 접근이 가능!
NAT 게이트웨이 설정 방법
1. 퍼블릭 서브넷에 NAT 게이트웨이에 탄력적IP(EIP)를 할당하여 생성
2. 프라이빗 서브넷의 라우팅 테이블에 등록.
즉, 프라이빗 서브넷에서 라우팅 테이블을 보고 인터넷으로 나가는 규칙 (0.0.0.0)에 대해서는 NAT 게이트웨이를 타고 EIP(공인 IP)로 변환 후 igw를 통해 인터넷으로 나가는것입니다.
이렇게 불편해지는데 프라이빗 서브넷을 사용하는 이유는, 엄격하게 다뤄야할 리소스들을 안전하게 관리하기 위함.
앞서 예를든것처럼, DB를 프라이빗 서브넷에 위치시킨다던가, ELB(로드벨런싱)만 퍼블릭영역에 두고 실제 WAS는 프라이빗영역에 배치하여 보다 안전하게 관리할 수 있다~!
참고
https://dontbesatisfied.tistory.com/13