Virtual Private Cloud
이번 장에서는 SAA를 준비하며 Virtual Private Cloud의 약자인 VPC에 대해서 알아보도록 한다.
VPC Components Diagrams
- 아래는 VPC 컴포넌트들의 다이어그램이다.
IPv4 CIDR 이해
- 클래스가 없는(Classless) 도메인 간의 라우팅 - IP 주소 할당 방법이다.
- Security Groups 규칙 및 AWS 네트워킹에서 일반적으로 사용된다.
- IP 주소 범위를 정의하는 데 도움이 된다.
- WW.XX.YY.ZZ/32 => 하나의 IP다.
- 0.0.0.0/0 => 모든 IP다.
- 192.168.0.0/26 => 192.168.0.0 ~ 192.168.0.63 총 64개의 IP 주소를 가진다.
- CIDR는 두 가지 구성 요소로 이루어져 있다.
- Base IP
- 범위(XX.XX.XX.XX)에 포함된 IP를 나타낸다.
- 예를 들어, 10.0.0.0, 192.168.0.0 등..
- Subnet Mask
- IP에서 변경할 수 있는 비트 수를 정의한다.
- 예를 들어, /0, /24, /32
- 두 가지 형태를 취할 수 있다.
- /8 <-> 255.0.0.0
- /16 <-> 255.255.0.0
- /24 <-> 255.255.255.0
- /32 <-> 255.255.255.255
Subnet Maks의 이해
- 서브넷 마스크는 기본적으로 기본 IP의 일부가 기본 IP로부터 추가적인 다음 값을 가져올 수 있도록 한다.
- 아래는 여러가지 예시이다.
- 192.168.0.0/24 = 192.168.0.0 ~ 192.168.0.255 (256개의 IP)
- 192.168.0.0/16 = 192.168.0.0 ~ 192.168.255.255 (65,536개의 IP)
- 134.56.78.123/32 = 132.56.78.123 (1개의 IP)
- 0.0.0.0/0 = 모든 IP
Public vs Private IP (IPv4)
- The IANA(Internet Assgined Numbers Authority)는 개인(LAN) 및 공용(Internet) 주소의 사용을 위해 IPv4 주소의 특정 블록을 설정하였다.
- 개인(Private) IP는 특정 값만 허용할 수 있다.
- 10.0.0.0 ~ 10.255.255.255 (10.0.0.0/8): 거대한 네트워크에 사용된다.
- 172.16.0.0 ~ 172.31.255.255 (172.16.0.0/12): AWS의 기본 VPC 범위다.
- 192.168.0.0 ~ 192.168.255.255 (192.168.0.0/16): 홈 네트워크에서 사용된다.
- 위에서 나열한 IP 주소를 제외하고는 모든 주소가 Public으로 공개된다.
기본 VPC
- 모든 새로운 AWS 계정에는 기본 VPC가 있다.
- 서브넷이 지정되지 않은 경우, 새로운 EC2 인스턴스가 기본 VPC로 시작된다.
- 기본 VPC에는 인터넷 연결이 있으며 내부의 모든 EC2 인스턴스에는 공용(Public) IPv4 주소가 있다.
- Public 및 Private IPv4 DNS 이름도 있다.
VPC in AWS (IPv4)
- VPC는 Virtual Private Cloud의 약자다.
- AWS Region에 여러 개의 VPC를 보유할 수 있으며 최대 5개까지 사용할 수 있다. 필요한 경우 요청을 통해 증설할 수 있다.
- VPC당 최대 CIDR은 각 CIDR에 대해서 5다.
- 최소 크기는 /28로 총 16개의 IP를 가진다.
- 최대 크기는 /16으로 총 65,536개의 IP를 가진다.
- VPC는 비공개이므로 Private IPv4 범위만 허용된다.
- 10.0.0.0 ~ 10.255.255.255 (10.0.0.0/8)
- 172.16.0.0 ~ 172.31.255.255 (172.16.0.0/12)
- 192.168.0.0 ~ 192.168.255.255 (192.168.0.0/16)
- VPC CIDR는 다른 네트워크(예: 기업)와 중복되지 않아야 한다.
- 기본적으로 새로운 AWS 계정을 생성하면 아래와 같이 Region에 기본 VPC가 생성된다.
- 기본 VPC에 필요에 따라 Public 서브넷과 Private 서브넷을 추가할 수 있다.
Subnet (IPv4)
- AWS는 각 서브넷에 5개의 IP 주소(처음 4개 & 마지막 1개)를 예약한다.
- 5개의 IP주소는 사용할 수 없으며 EC2 인스턴스에 할당할 수 없다.
- 예를 들어, CIDR 블록이 10.0.0.0/24인 경우, 예약된 IP 주소는 아래와 같다.
- 10.0.0.0 - Network Address
- 10.0.0.1 - VPC 라우터 용으로 AWS에 예약
- 10.0.0.2 - AWS에서 제공한 DNS에 매핑하기 위해 AWS에서 예약
- 10.0.0.3 - 추후 사용을 위해 AWS에서 예약
- 10.0.0.255 - Network Broadcast Address. AWS는 VPC에서 브로드캐스트를 지원하지 않으므로 해당 주소는 예약되어 있다.
- 만약 EC2 인스턴스에 대해 29개의 IP 주소가 필요한 경우:
- /27 크기의 서브넷을 선택할 수 없다. (32개의 IP 주소, 32 - 5 = 27 < 29)
- /26 크기의 서브넷을 선택해야 한다. (64개의 IP 주소, 64 - 5 = 59 > 29)
Internet Gateway (IGW)
- VPC의 리소스(예: EC2 인스턴스)가 인터넷에 연결되도록 허용한다.
- 수평적으로 확장되며 가용성이 높고 중복성이 있다.
- VPC와 별도로 생성해야 한다.
- 하나의 VPC는 하나의 IGW에만 연결할 수 있고 그 반대도 가능하다.
- "Internet Gateway" 자체에서 인터넷 액세스를 허용하지 않는다.
- 경로 테이블(Route Table)도 편집해야 한다.
- "Internet Gateway"가 추가된 형태는 아래와 같다.
- 위에서 살펴본 것처럼 "Internet Gateway" 자체로는 인터넷 액세스를 허용하지 않는다.
- 인터넷 액세스를 할 수 있도록 경로 테이블(Route Table)을 추가한 형태는 아래와 같다.
Bastion Hosts
- "Bastion Host"를 사용하여 Private EC2 인스턴스에 SSH를 적용할 수 있다.
- "Bastion"은 다른 모든 Private 서브넷에 연결된 Public 서브넷에 있다.
- "Bastion Host Security Group"은 포트 22의 인터넷에서 제한된 CIDR(예: 회사의 Public CIDR)에서 인바운드를 허용해야 한다.
- EC2 인스턴스의 Security Group은 "Bastion Host"의 Security Group 또는 Bastion Host의 Private IP를 허용해야 한다.
NAT Instance
- 이전 버전의 서비스지만 아직 시험에 출시되고 있다.
- "NAT"는 "Network Address Translation"의 약자다.
- Private 서브넷의 EC2 인스턴스가 인터넷에 연결되도록 허용한다.
- Public 서브넷에서 실행해야 한다.
- EC2 인스턴스 설정을 사용하지 않는다. "Source/Destination"
- 반드시 Elastic IP가 연결되어 있어야 한다.
- Private 서브넷에서 NAT 인스턴스로 트래픽을 라우팅하려면 Route Table을 구성해야 한다.
- NAT 인스턴스가 추가된 형태는 아래와 같다.
- 미리 구성된 Amazon Linux API를 사용할 수 있다.
- 2020년 12월31일에 Standard 지원을 종료하였다.
- 기본적으로 고가용성/복원성이 지원되지 않는다.
- 다중 AZ + 복원력이 있는 사용자 데이터 스크립트에서 ASG를 작성해야 한다.
- 인터넷 트래픽 대역폭은 EC2 인스턴스 유형에 따라 다르다.
- 반드시 Security Group과 Rule을 관리해야 한다.
- Inbound
- 개인 서브넷에서 오는 HTTP/HTTPS 트래픽을 허용해야 한다.
- 홈 네트워크에서 SSH를 허용한다.(Internet Gateway를 통해 액세스 제공)
- Outbound
- 인터넷에 HTTP/HTTPS 트래픽을 허용한다.
- Inbound
NAT Gateway
- AWS에서 관리하는 NAT, 높은 대역폭, 고가용성(HA)을 지원하며 관리할 필요가 없다.
- 사용량 및 대역폭에 대해 시간당 지불한다.
- NATGW는 특정 AZ에 생성되며, Elastic IP를 사용한다.
- 동일한 서브넷의 EC2 인스턴스에서 사용할 수 없으며, 다른 서브넷에서만 사용할 수 있다.
- IGW가 필요하다. (Private Subnet => NATGW => IGW)
- 5Gbps 대역폭을 제공하며 최대 45Gbps까지 자동 확장 가능하다.
- 관리할 Security Group이 없다.
- 기본 VPC에 "NAT Instance" 대신 "NAT Gateway"가 추가된 모습은 아래와 같다.
- 단일 AZ 영역 내에서 탄력적인 "NAT Gateway"를 설정할 수 있다.
- 내결함성(fault-tolerance)을 위해 여러 AZ에 여러 "NAT Gateway"를 만들 수 있다.
- AZ가 다운되면 NAT가 필요 없기 때문에 AZ 간 failover가 필요하지 않다.
NAT Gateway vs NAT Instance
- "NAT Gateway"와 "NAT Instance"의 차이는 아래의 이미지와 같다.
Network Access Control List (NACL)
- NACL은 서브넷을 오가는 트래픽을 제어하는 방화벽과 같다.
- 서브넷당 하나의 NACL이 할당되며, 새로운 서브넷에는 기본 NACL이 할당된다.
- NACL 규칙은 아래와 같이 정의한다.
- 규칙에는 숫자(1~32766)가 있으며, 우선 순위가 높고 숫자가 작다.
- 첫 번째 규칙 일치가 결정을 주도한다.
- 예를 들어, "100 ALLOW 10.0.0.10/32"과 "200 DENY 10.0.0.10/32"라는 설정이 있을 때, 100은 200보다 우선되므로 IP 주소가 허용된다.
- 마지막 규칙은 별표(
*
)이며 규칙이 일치하지 않는 경우 요청을 거부한다. - AWS에서는 규칙을 100개씩 증분하여 추가할 것을 권장한다.
- 새로 생성된 NACL은 모든 것을 거부한다.
- NACL은 서브넷 수준에서 특정 IP 주소를 차단하는 훌륭한 방법이다.
- Security Group과 비교하여 살펴보았을 때, Security Group 이전에 NACL에서 먼저 필터링되는 것을 확인할 수 있다.
- Security Group과 NACL의 정확한 차이점은 아래의 표를 참고하면 된다.
- NACL이 추가된 형태는 아래와 같다.
- 기본 NACL의 경우 연관된 서브넷으로 인바운드/아웃바운드되는 모든 것을 허용한다.
- 기본 NACL을 수정하지 않고, 새로운 NACL을 생성한다.
임시(Ephemeral) Ports
- 두 엔드포인트가 연결을 설정하려면 포트를 사용해야 한다.
- 클라이언트가 정의된 포트에 연결하면 사용 후 임시 포트에서 응답이 필요하다.
- 서로 다른 운영체제는 서로 다른 포트 범위를 사용한다.
- IANA & MS Windows 10 -> 49152 ~ 65535
- Many Linux Kernels -> 32768 ~ 60999
- NACL에 임시(Ephemeral) 포트가 적용된 형태는 아래와 같다.
- 아래의 이미지와 같이 각 대상 서브넷의 CIDR에 대한 NACL 규칙을 생성할 수 있다.
- "Emphemeral Ports"에 대한 자세한 내용은 여기에서 확인하도록 한다.
VPC Peering
- AWS의 네트워크를 사용하여 두 개의 VPC를 Privately 연결할 수 있다.
- 동일한 네트워크에 있는 것처럼 행동하게 한다.
- 단, 두 VPC의 CIDR 영역이 중복되면 안된다.
- VPC Peering은 다른 연결로 전파되지 않는다. 서로 통신해야 하는 각 VPC에 대해 설정해야 한다.
- EC2 인스턴스가 서로 통신할 수 있도록 하려면 각 VPC의 서브넷에서 "Route Table"을 업데이트해야 한다.
- 서로 다른 AWS 계정/지역의 VPC간에 VPC 피어링 연결을 생성할 수 있다.
- Peering될 VPC의 "Security Group"을 참조할 수 있다. (서로 다른 계정 - 동일 지역)
- VPC Peering이 추가된 형태는 아래와 같다.
VPC Endpoints (AWS PrivateLink에 의해 제공)
- 모든 AWS 서비스는 공개되어 있다.(Public URL)
- "VPC Endpoint"를 사용하면 Public 인터넷을 사용하지 않고 전용 네트워크를 사용하여 AWS 서비스에 연결할 수 있다.
- 충분하게 수평적으로 확장이 가능하다.
- "VPC Endpoint"를 통해 IGW, NATGW를 통해 AWS 서비스에 액세스할 필요가 없어진다.
- 아래와 같은 문제가 발생할 수 있다.
- VPC에서 DNS 설정을 결정한다.
- Route Table을 확인해야 한다.
- Interface Endpoints (powered by PrivateLink)
- ENI(private IP address)를 진입점으로 브로비저닝한다. (보안 그룹을 연결해야 한다.)
- 대부분의 AWS 서비스를 지원한다.
- 시간당 요금 + 처리된 GB당 요금을 지불한다.
- Gateway Endpoints:
- 게이트웨이를 프로비저닝하고 "Route Table"에서 대상으로 사용해야 한다. (보안 그룹을 사용하지 않음)
- S3 및 DynamoDB를 모두 지원한다.
- 무료로 사용할 수 있다.
- 시험에서 게이트웨이 유형을 선호할 가능성이 높다.
- 게이트웨이 유형의 경우 비용이 무료이며, 인터페이스 유형의 경우 비용이 발생한다.
- 인터페이스 Endpoint는 On-Premise(Site to Site VPN 또는 Direct Connect), 다른 VPC 또는 다른 Region에서 액세스할 때 사용하는 것이 좋다.
- DynamoDB는 AWS Public 서비스다.
- Option1: Public Internet을 통해서 액세스한다.
- "Lambda"는 VPC에 있으므로 Public 서브넷 및 "Internet Gateway"에 "NAT Gateway"가 필요하다.
- Option2 (권장): Private VPC 네트워크에서 액세스
- DynamoDB용 VPC Gateway Endpoint를 배포한다.
- Route Table을 변경한다.
- VPC Endpoint를 추가한 형태는 아래와 같다.
VPC Flow Logs
- 인터페이스로 들어가는 IP 트래픽에 대한 정보를 캡처한다.
- VPC Flow Logs
- Subnet Flow Logs
- ENI(Elastic Network Interface) Flow Logs
- 연결 문제를 모니터링하고 해결하는 데 도움이 된다.
- Flow Logs 데이터는 S3, CloudWatch Logs 및 Kinesis Data Firehose로 이동할 수 있다.
- ELB, RDS, ElastiCache, Redshift, WorkSpaces, NATGW, Transit Gateway등 AWS 관리 인터페이스어세도 네트워크 정보를 캡처한다.
- VPC Flow Flogs가 추가된 형태는 아래와 같다.
VPC Flow Logs Syntax
- srcaddr * dstaddr: 문제가 있는 IP를 식별하는 데 도움이 된다.
- srcport * dstport: 문제가 있는 포트를 식별하는 데 도움이 된다.
- Action: Security Group / NACL로 인한 요청 성공 또는 실패
- 사용 패턴이나 악의적인 행동에 대한 분석으로 사용될 수 있다.
- S3의 "Athena" 또는 "CloudWatch Log Insights"를 사용하여 "VPC Flow Logs"를 쿼리할 수 있다.
- "VPC Flow Logs"에 대한 자세한 내용은 여기를 참고한다.
- Security Group / NACL에 의해 발생한 오류를 해결하는 방법을 살펴본다.
- 아래의 이미지에서 Inbound는 NACL 또는 Security Group에 의해 차단되며, Outbound는 NACL에 의해 차단된다.
- 아래의 이미지에서 Outbound는 NACL 또는 Security Group에 의해 차단되며, Inbound는 NACL에 의해 차단된다.
- 아래는 많이 사용되는 "VPC Flow Logs" 아키텍처다.
AWS Site-to-Site VPN
- Virtual Private Gateway(VGW)
- VPN 집중 장치이며, AWS에서 VPN 연결을 위해 사용된다.
- VGW가 생성되어 사이트 간 VPN 연결을 생성할 VPC에 연결된다.
- Autonomous System Number(ASN) 사용자 지정 가능성이 있다.
- Customer Gateway(CGW)
- VPN 연결의 고객 측에 있는 소프트웨어 응용프로그램 또는 물리적 장치다.
- 자세한 내용은 여기를 참고한다.
Site-to-Site VPN Connections
- Customer Gateway Device (On-premises)
- Customer Gateway 장치의 공용 인터넷 라우팅 가능 IP 주소
- NAT 순회(NAT-T)를 사용하도록 설정된 NAT 장치 뒤에 있는 경우, NAT 장치의 Public IP를 사용한다.
- 서브넷과 연결된 "Route Table"에서 가상 개인 게이트웨이에 대한 경로 전파에 사용된다.
- On-premises에서 EC2 인스턴스를 ping해야 하는 경우 Security Group의 인바운드에 ICMP 프로토콜을 추가해야 한다.
AWS VPN CloudHub
- 여러 VPN 연결이 있는 경우 여러 사이트 간에 안전한 통신을 제공한다.
- 서로 다른 위치(Region) 간의 기본 또는 보조 네트워크 연결을 위한 저비용
hub-and-spoke
모델을 제공한다.(VPN만 해당) - VPN 연결이라 공용 인터넷을 사용해야 한다.
- 설정하기 위해서 동일한 VGW에서 여러 VPN 연결을 연결하고 동적 라우팅을 설정하고 "Route Table"을 구성해야 한다.
Direct Connect(DX)
- 원격 네트워크에서 VPC로 전용 프라이빗 연결을 제공한다.
- Data Center 및 AWS Direct Connect 위치 간에 전용 연결을 설정해야 한다.
- VPC에 가상 개인 게이트웨이를 설정해야 한다.
- 동일한 연결에서 Public 리소스(S3) 및 Private(EC2) 액세스를 할 수 있다.
- 아래와 같은 사용 사례가 있다.
- 대역폭 처리량 향상 - 대용량 데이터 세트와 함께 작동하여 비용을 절감할 수 있다.
- 보다 일관된 네트워크 환경 - 실시간 데이터 피드를 사용하는 애플리케이션
- 하이브리드 환경 - On-premise + Cloud 환경
- IPv4와 IPv6 모두 지원한다.
Direct Connect Gateway
- 여러 Region(동일한 계정)에서 하나 이상의 VPC에 직접 연결을 설정하려면 "Direct Connect Gateway"를 사용해야 한다.
Connection 유형
- 전용(Dedicated) 연결: 1Gbps, 10Gbps 및 100Gbps 용량을 가지고 있다.
- 고객 전용 물리적 이더넷 포트를 제공한다.
- 먼저 AWS에 요청한 후 "AWS Direct Connect Partners"에서 완료한다.
- 호스트(Hosted) 연결: 50Mbps, 500Mbps, to 10Gbps까지 지원할 수 있다.
- 연결 요청은 "AWS Direct Connect Partners"를 통해 이루어진다.
- 필요에 따라 용량을 추가하거나 제거할 수 있다.
- 일부 "AWS Direct Connect Partners"에서 1, 2, 5, 10Gbps가 사용이 가능하다.
- 새로운 연결을 설정하는 데 리드 타임이 1개월 이상 걸리는 경우가 많다.
암호화
- 전송 중인 데이터는 암호화되지 않았지만 Private 통신이다.
- AWS Direct Connect + VPN을 통해 IPsec 암호화된 Private 연결을 제공한다.
- 보안 수준을 높이기에는 좋지만 구현은 조금 더 복잡해진다.
복원력(Resiliency)
- 여러 Location에서 하나의 연결을 사용한다.
- 하나 이상의 Location에 있는 개별 장치에서 종료되는 별도의 연결을 통해 복원력을 극대화할 수 있다.
- "Direct Connect"에 실패할 경우 백업 "Direct Connect"(비용이 많이 발생) 또는 "Site-to-Site" VPN 연결을 설정할 수 있다.
- 네트워크 토폴로지가 아래의 이미지와 같이 복잡해질 수 있다.
Transit Gateway
- 수천 대의 VPC와 On-Premise, "hub-and-spoke"(star) 연결 간의 과도한 피어링 기능을 제공한다.
- 지역별 리소스, 지역 간 작업이 가능하다.
- RAM(Resource Access Manager)을 사용하여 계정 간 공유가 가능하다.
- 여러 Region에 걸쳐 "Transit Gateway"를 피어(peer)할 수 있다.
- Route Table: VPC가 다른 VPC와 대화할 수 있는 제한
- "Direct Connect Gateway", VPN 연결과 함께 작동한다.
- IP Multicast를 지원한다.(다른 AWS 서비스에서는 지원되지 않음)
Site-to-Site VPN ECMP
- ECMP: "Equal-cost multi-path" routing
- 여러 최적 경로를 통해 패킷을 포워딩할 수 있도록 하는 라우팅 전략이다.
- 여러 개의 사이트 간 VPN 연결을 생성하여 AWS에 대한 연결 대역폭을 확장한다.
- ECMP를 사용하여 늘어난 처리량을 확인하면 아래와 같다.
- 여러 계정 간 직접 연결을 아래의 이미지와 같이 공유할 수 있다.
- "AWS Resource Access Manager"를 사용하여 "Transit Gateway"를 다른 계정과 공유할 수 있다.
VPC Traffic Mirroring
- VPC에서 네트워크 트래픽을 캡처하고 검사할 수 있다.
- 관리하는 보안 어플라이언스로 트래픽을 라우팅할 수 있다.
- ENI로부터 트래픽을 캡쳐하고, ENI 또는 네트워크 로드 밸런서로 보낸다.
- 모든 패킷 캡처 또는 관심 있는 패킷을 캡처한다.
- Source와 Target은 동일한 VPC에 있을 수도, 다른 VPC에 있을 수도 있다.
- 컨텐츠 검사, 위협 모니터링, 문제 해결 등에 사용된다.
IPv6
- 43억 개의 주소를 제공하도록 설계된 IPv4는 곧 모두 고갈될 예정이다.
- IPv6는 IPv4의 후속 제품이다.
- IPv6는 고유 IP 주소인 3.4 * 10^38 개를 제공하도록 설계되었다.
- 모든 IPv6 주소는 Public 및 인터넷 라우팅이 가능하며, Private을 위한 범위는 없다.
x.x.x.x.x.x.x.x
형태를 가지며 x는 16진수이고 범위는 0000~ffff이다.- 아래는 IPv6 예시이다.
- 2001:db8:3333:4444:5555:6666:7777:8888
- 2001:db8:3333:4444:cccc:dddd:eeee:ffff
- :: -> 모든 8개의 세그먼트가 0이다.
- 2001:db8:: -> 마지막 6개의 세그먼트가 0이다.
- ::1234:5678 -> 처음 6개의 세그먼트가 0이다.
- 2001:db8::1234:5678 -> 중간 4개의 세그먼트가 0이다.
- VPC 및 서브넷에 대해 IPv4를 사용하지 않도록 설정할 수 없다.
- IPv6(Public IP)를 이중 스택 모드로 작동하도록 설정할 수 있다.
- EC2 인스턴스에는 최소 Private Internal IPv4와 Public IPv6가 할당된다.
- Internet Gateway를 통해 IPv4 또는 IPv6를 사용하여 인터넷으로 통신할 수 있다.
- VPC 및 서브넷에 대해 IPv4를 사용하지 않도록 설정할 수 없으므로 서브넷에서 EC2 인스턴스를 시작할 수 없는 경우가 있다.
- IPv6를 획득할 수 없어서 발생하는 문제가 아니다.
- 서브넷에서 사용 가능한 IPv4가 없기 때문이다.
- 이러한 문제를 해결하기 위해 서브넷에 새로운 IPv4 CIDR을 생성할 수 있다.
송신 전용(egress-only) Internet Gateway
- IPv6에만 사용된다. (NAT Gateway와 유사하지만 IPv6를 위한 것)
- 인터넷이 인스턴스에 IPv6 연결을 시작하지 못하도록 하면서 IPv6을 통한 VPC 아웃바운드 연결의 인스턴스를 허용한다.
- Route Table을 반드시 업데이트해야 한다.
- IPv6의 라우팅 방식은 아래의 이미지와 같다.
VPC 요약
- CIDR: IP 범위
- VPC(Virtual Private Cloud): IPv4 & IPv6 CIDR 목록을 정의한다.
- Subnets: AZ에 연결되어 CIDR을 정의한다.
- Internet Gateway: VPC 수준에서 IPv4 및 IPv6 인터넷 액세스를 제공한다.
- Route Tables: 서브넷에서 IGW, VPC Peering 연결, VPC Endpoints로 경로를 추가하려면 편집이 필요하다.
- Bastion Host: Private 서브넷의 EC2 인스턴스에 SSH 접속이 필요할 때, Public 서브넷에 설치하고 경유하도록 설정한다.
- NAT Instances: Private 서브넷의 EC2 인스턴스에 인터넷 액세스를 허용한다. Public 서브넷에 설정해야 하며, Source/Destination 확인 플래그를 비활성화한다.
- NAT Gateway: AWS에서 관리하는 NAT Gateway를 통해 Private EC2 인스턴스(IPv4만 해당)에 대한 확장 가능한 인터넷 액세스를 제공한다.
- Private DNS + Route 53: DNS확인 + DNS 호스트 이름(VPC) 활성화
- NACL: Stateless, 서브넷의 인바운드, 아웃바운드 규칙, 임시(Ephemeral) 포트
- Security Group: Stateful, EC2 인스턴스 레벨에서 작동한다.
- Reachability Analyzer: AWS 리소스간 네트워크 연결 테스트를 수행한다.
- VPC Peering: 중복되지 않는 CIDR, 비일시적인 CIDR로 두 대의 VPC를 연결한다.
- VPC Endpoint: VPC내에서 AWS 서비스(S3, DynamoDB, Cloud Formation, SSM)에 대한 Private 액세스를 제공한다.
- VPC Flow Logs: VPC/서브넷/ENI 레벨에서 트래픽을 수락 및 거부할 수 있도록 설정할 수 있으며 공격을 식별하고 Athena 또는 CloudWatch Log Insight를 사용하여 분석할 수 있다.
- Site-to-Site VPN: 고객 데이터센터의 Gateway, VPC에 가상 사설 게이트웨이, Public 인터넷을 통한 사이트 간 VPN 설정이다.
- AWS VPN CloudHub: 사이트를 연결하는 "hub-and-spoke" VPN 모델이다.
- Direct Connect: VPC에 Virtual Private Gateway를 설정하고 AWS Direct Connect Location에 직접 개인 연결을 설정한다.
- Direct Connect Gateway: 다양한 AWS 지역에 있는 많은 VPC에 Direct Connect를 설정한다.
- AWS PrivateLink/VPC Endpoint:
- 서비스 VPC에서 고객 VPC로 서비스를 Private하게 연결한다.
- VPC Peering, Public Internet, NAT Gateway, Route Table이 필요없다.
- Network Load Balancer & ENI와 함께 사용해야 한다.
- ClassicLink: EC2와 Classic EC2 인스턴스를 VPC에 Privately 연결한다.
- Transit Gateway: VPC, VPN 및 DX를 위한 Peering 연결
- Traffic Mirroring: 추가 분석을 위해 ENI에서 네트워크 트래픽을 복사한다.
- Egress-only Internet Gateway: NAT Gateway와 유사하지만 IPv6와 함께 작동한다.
네트워크 비용
- GB당 AWS의 네트워킹 비용이다.
- 비용 절감과 네트워크 성능 향상을 위해서 Public IP 대신 Private IP를 사용하는 것이 좋다.
- 고가용성(HA) 비용으로 동일한 AZ를 사용하여 비용을 절감할 수 있다.
- 송신(egress) 트래픽: 아웃바운드 트래픽이다.(AWS에서 외부로)
- 수신(ingress) 트래픽: 인바운드 트래픽이다. (외부에서 AWS로, 일반적으로 무료)
- 비용을 최소화하기 위해 AWS 내에서 인터넷 트래픽을 최대한 유지해야 한다.
- 동일한 AWS Region에 위치한 Direct Connect Location을 사용하면 송신 네트워크에 대한 비용이 절감된다.
S3 데이터 전송 가격(미국 기준)
- S3 Ingress: 무료
- S3 to Internet: GB당 $0.09
- S3 Transfer Acceleration:
- 전송 시간 단축(50 ~ 500% 향상)
- 데이터 전송 가격에 추가 비용: GB당 +0.04~0.08
- S3 to CloudFront: GB당 $0.00
- CloudFront to Internet: GB당 $0.085
- 캐싱 기능(낮은 대기 시간)
- S3 Request 관련 비용 절감(CloudFront의 경우 7배 저렴)
- S3 Cross Region Replication: GB당 $0.02
NAT Gateway vs Gateway VPC Endpoint
- NAT Gateway와 Gateway VPC Endpoint의 가격차이는 아래의 이미지와 같다.
AWS Network Firewall
- Amazon VPC 전체를 보호한다.
- Layer 3에서 Layer 7으로 보호한다.
- 어느 방향이든 검사할 수 있다.
- VPC to VPC 트래픽
- 인터넷으로 아웃바운드 트래픽
- 인터넷에서 인바운드 트래픽
- Direct Connect와 Site-to-Site VPN 양방향
- 직접 연결 및 사이트간 VPN 연결/발신
- 내부적으로 AWS Network Firewall은 "AWS Gateway Load Balancer"를 사용한다.
- 규칙은 "AWS Firewall Manager"가 여러 VPC에 적용하기 위해 여러 계정에 걸쳐 중앙 집중식으로 관리할 수 있다.
- 세밀한 제어 장치를 지원한다.
- 1,000개의 규칙을 지원한다.
- IP & Port: IP 10,000개 필터링
- 프로토콜: 예를 들어, 아웃바운드 통신을 위한 SMB 프로토콜을 차단한다.
- Stateful 도메인 목록 규칙 그룹:
*.mycorp.com
또는 타사 소프트웨어 레포(repo)에 대한 아웃바운드 트래픽만 허용한다. - 정규식을 이용한 일반 패턴을 매칭한다.
- 트래픽 필터링: 규칙과 일치하는 트래픽에 대해서 허용하거나 삭제 또는 경고할 수 있다.
- 침입 방지 기능을 통해 네트워크 위협으로부터 보호하는 능동적 흐름을 검사한다.
- 규칙 일치 로그를 Amazon S3, CloudWatch 로그, Kinesis Data Firehose로 전송한다.
참고한 자료
'Infrastructure > Certificate' 카테고리의 다른 글
[SAA] Extra Solution Architecture Discussion (0) | 2023.10.07 |
---|---|
[SAA] Disaster Recovery & Migration (0) | 2023.10.07 |
[SAA] Security & Encryption (0) | 2023.10.04 |
[SAA] Advanced Identity (0) | 2023.10.04 |
[SAA] Monitoring & Audit & Performance (0) | 2023.10.04 |