[SAA-C03] VPC 기본 정리 & 기출문제
Amazon Virtual Private Cloud(Amazon VPC)란?
VPC는 AWS에서 제공하는 가상 네트워크 환경으로, 클라우드 리소스를 격리하고 안전하게 관리할 수 있는 공간입니다. VPC는 AWS 리전 내에 존재하며, 서브넷을 통해 더 세분화됩니다.
서브넷(Subnet)
VPC 내에서 IP 주소 범위를 분할하는 단위입니다. 각 서브넷은 특정한 IP 주소 범위를 가지며, 퍼블릭 서브넷과 프라이빗 서브넷으로 나눠집니다.
- 퍼블릭 서브넷: 인터넷과 연결되어, 인터넷 게이트웨이를 통해 외부와 통신할 수 있습니다.
- 프라이빗 서브넷: 인터넷과 연결되지 않으며, 주로 데이터베이스나 백엔드 서버 등 외부와의 연결이 필요 없는 리소스를 배치합니다.
VPC나 서브넷의 IP 주소를 보면 이런 10.0.0.0/16 숫자를 본 적이 있을 겁니다.
보통 이건 서브넷 마스크(subnet mask)를 표현하며 16이라는 숫자는 서브넷 마스크의 비트 길이를 말합니다.
IP 주소는 32비트로 구성됩니다. 10.0.0.0을 32비트로 나타내면 00001010.00000000.00000000.00000000과 같습니다. (10을 2진법으로 바꾸면 1010이므로.)
10.0.0.0/16에서 10.0.0.0의 첫 16비트는 네트워크를 나타내는 부분이고, 나머지 16비트는 호스트를 구별하는 부분입니다. 그럼 이 경우에는 10.0.0.0부터 10.0.255.255까지의 IP 주소 범위를 포함하는 서브넷입니다.
즉, 10.0.0.0과 10.0.255.255 사이의 65,536개의 IP 주소를 포함하는 네트워크를 정의합니다.
궁금하시면 자신의 IP 중 일부로 IP 주소를 검색해보면 됩니다. 그럼 자신의 IP가 포함된 지역 (ex. 대한민국 서울 어쩌구)이 나옵니다. 좀 더 단순하게 말하면.
대한민국 = 리전
서울 = VPC
어쩌구 = 서브넷
거기에 사는 사람들 = 인스턴스들
이런 식으로 이해하면 되겠습니다.
인터넷 게이트웨이(Internet Gateway, IGW)
퍼블릭 서브넷의 리소스들이 인터넷과 통신할 수 있도록 하는 역할을 합니다.
VPC와 인터넷을 연결해주는 어댑터입니다.
NAT 게이트웨이(NAT Gateway)
프라이빗 서브넷에 있는 리소스가 인터넷과 통신할 수 있도록 하는 서비스입니다. NAT 게이트웨이를 사용하면 프라이빗 서브넷에 있는 인스턴스들이 외부와 통신할 수 있습니다.
라우팅 테이블(Route Tables)
서브넷 간 트래픽을 제어하는 역할을 합니다. 라우팅 테이블을 통해 패킷이 어디로 가야 하는지 지정할 수 있습니다.
예를 들어, 퍼블릭 서브넷은 인터넷 게이트웨이를 통해 외부와 연결되고, 프라이빗 서브넷은 NAT 게이트웨이를 통해 인터넷과 연결됩니다.
보안 그룹(Security Group)
- 인스턴스 수준에서 적용됩니다. 즉, 보안 그룹은 EC2 인스턴스, RDS 인스턴스와 같은 개별 리소스에 할당됩니다.
- 보안 그룹은 상태 기반(stateful)으로 동작합니다. 즉, 인바운드(수신) 트래픽에 대한 규칙이 허용되면, 해당 트래픽에 대한 아웃바운드(송신) 응답이 자동으로 허용됩니다.
- 기본적으로 모든 인바운드 트래픽을 차단하고, 모든 아웃바운드 트래픽을 허용합니다. 하지만 인바운드 트래픽을 허용하려면 명시적으로 규칙을 설정해야 합니다.
- 하나 이상의 EC2 인스턴스와 연결될 수 있으며, 각 인스턴스에 대해 하나 이상의 보안 그룹을 적용할 수 있습니다.
네트워크 ACL(Network ACL)
- 서브넷 수준에서 적용됩니다. 즉, VPC 내의 특정 서브넷에 트래픽이 들어오고 나가는 것을 제어합니다.
- 네트워크 ACL은 비상태 기반(stateless)으로 동작합니다. 즉, 인바운드 트래픽이 허용되더라도 아웃바운드 응답을 별도로 허용해야 합니다.
- 기본적으로 모든 트래픽을 허용합니다. 하지만 필요한 경우, 명시적으로 규칙을 설정하여 특정 트래픽을 차단하거나 허용할 수 있습니다.
- 하나의 서브넷에 연결되며, 서브넷 내의 모든 리소스(예: EC2 인스턴스)에 영향을 미칩니다.
VPC Peering
두 개의 VPC 간에 트래픽을 직접적으로 교환할 수 있게 해주는 연결 방식입니다.
다른 AWS 계정이나 리전에 있는 VPC와 연결할 수 있습니다.
VPN 연결(VPN Connection)
온프레미스 네트워크와 AWS VPC 간에 안전한 연결을 제공합니다.
두 가지 주요 방식: Site-to-Site VPN과 Client VPN
VPC 엔드포인트(VPC Endpoint)
엔드포인트란?
네트워크 통신에서 일반적으로 통신의 끝점을 의미합니다. 즉, 두 시스템 간의 통신을 시작하거나 끝내는 지점으로, 네트워크 상에서 상호작용을 위한 접속 지점을 가리킨다고 할 수 있습니다.
예를 들어, 네트워크에서 서버나 클라이언트 장치들이 서로 데이터를 주고받는 경우, 각 장치가 엔드포인트 역할을 합니다.
다른 예로는, AWS에서 S3 서비스에 접근하기 위해 사용하는 특정 URL이 엔드포인트가 될 수 있습니다. 's3.amazonaws.com'과 같은 URL이 S3 서비스에 대한 엔드포인트가 됩니다.
AWS 서비스와의 트래픽을 인터넷을 거치지 않고 안전하게 연결할 수 있게 해주는 기능.
인터넷을 통해 AWS 서비스와 연결할 때 발생할 수 있는 지연이나 보안 문제를 피할 수 있습니다
엔드포인트를 사용하면 VPC와 서비스 간의 통신을 VPC 내부 네트워크에서만 이루어지게 할 수 있습니다.
인터페이스 엔드포인트(Interface Endpoint)
- VPC 내에서 AWS 서비스나 VPC 내의 타사 서비스와 안전하게 통신하려고 할 때 사용됩니다.
- 이 엔드포인트는 Elastic Network Interface (ENI)를 생성하여 VPC 내에서 서비스와 연결됩니다.
ENI는 고유한 IP 주소를 가지며, VPC 내에서 AWS 서비스와의 통신을 처리합니다. - 인터넷을 거치지 않기 때문에 성능이 향상되고 보안이 강화됩니다.
VPC 내에서 프라이빗 IP 주소를 사용해 안전하게 연결할 수 있습니다.
게이트웨이 엔드포인트(Gateway Endpoint)
- 특정 AWS 서비스(S3, DynamoDB)와 연결하기 위해 사용됩니다.
- 이 엔드포인트는 VPC 라우팅 테이블에 추가되며, 지정된 서비스에 대한 트래픽을 프라이빗 경로로 전송합니다.
VPC에서 S3나 DynamoDB와 같은 서비스를 직접적으로 프라이빗 IP 주소를 통해 연결할 수 있습니다. - 인터넷에 연결되지 않고 VPC 내에서만 트래픽을 처리할 수 있습니다.
보안과 성능을 향상시킬 수 있으며, 인터넷에 연결된 퍼블릭 IP를 사용하는 것보다 더 안전한 방식으로 서비스에 접근할 수 있습니다.
기출문제
(출처:examtopics)
4. 애플리케이션은 VPC의 Amazon EC2 인스턴스에서 실행됩니다. 애플리케이션은 Amazon S3 버킷에 저장된 로그를 처리합니다. EC2 인스턴스는 인터넷에 연결하지 않고도 S3 버킷에 액세스해야 합니다.
어떤 솔루션이 Amazon S3에 프라이빗 네트워크 연결을 제공할까요?
- A. S3 버킷에 대한 게이트웨이 VPC 엔드포인트를 생성합니다.
- B. 로그를 Amazon CloudWatch Logs로 스트리밍합니다. 로그를 S3 버킷으로 내보냅니다.
- C. S3 액세스를 허용하기 위해 Amazon EC2에 인스턴스 프로필을 생성합니다.
- D. S3 엔드포인트에 액세스하기 위한 개인 링크가 있는 Amazon API Gateway API를 생성합니다.
정답: A
인터넷에 연결하지 않고도 S3 버킷에 액세스 할 수 있는 것은 VPC 엔드포인트입니다. 특히 자사 서비스와 연결할 때는 프라이빗 IP 주소를 통해 통신할 수 있습니다.
나머지 B,C,D는 전부 직접적인 프라이빗 네트워크 연결을 제공하지 않는다.
19. 한 회사에 AWS에 배포된 3계층 웹 애플리케이션이 있습니다. 웹 서버는 VPC의 퍼블릭 서브넷에 배포됩니다. 애플리케이션 서버와 데이터베이스 서버는 동일한 VPC의 프라이빗 서브넷에 배포됩니다. 이 회사는 검사 VPC에 AWS Marketplace의 타사 가상 방화벽 어플라이언스를 배포했습니다. 이 어플라이언스는 IP 패킷을 허용할 수 있는 IP 인터페이스로 구성되어 있습니다.
솔루션 아키텍트는 트래픽이 웹 서버에 도달하기 전에 애플리케이션에 대한 모든 트래픽을 검사하기 위해 웹 애플리케이션을 어플라이언스와 통합해야 합니다.
어떤 솔루션이 이러한 요구 사항을 가장 적은 운영 오버헤드로 충족할까요?
- A. 패킷 검사를 위해 트래픽을 어플라이언스로 라우팅하기 위해 애플리케이션의 VPC의 공개 서브넷에 네트워크 로드 밸런서를 생성합니다.
- B. 패킷 검사를 위해 트래픽을 어플라이언스로 라우팅하기 위해 애플리케이션 VPC의 공개 서브넷에 애플리케이션 부하 분산 장치를 생성합니다.
- C. 검사 VPC에 트랜싯 게이트웨이를 배포하고, 트랜싯 게이트웨이를 통해 들어오는 패킷을 라우팅하기 위한 경로 테이블을 구성합니다.
- D. 검사 VPC에 게이트웨이 로드 밸런서를 배포합니다. 게이트웨이 로드 밸런서 엔드포인트를 생성하여 들어오는 패킷을 수신하고 패킷을 어플라이언스로 전달합니다.
정답: D
주어진 요구 사항은 모든 트래픽 검사, 타사의 어플라이언스입니다.
- A: 네트워크 로드 밸런서를 트래픽을 라우팅할 수는 있지만 패킷 검사 기능을 제공하지 않음.
- B: ALB는 HTTP, HTTPS의 트래픽을 처리할 수 있지만 패킷 검사 지원하지 않음. 주로 애플리케이션 레벨(7계층)을 처리하기 때문에 IP 레벨(3계층)과는 관계 없다.
- C: 트랜싯 게이트웨이는 VPC 간 네트워크 연결을 제공, 패킷 검사를 지원하지 않음. 트래픽 라우팅 역할만 한다.
- D: 게이트웨이 로드 밸런서는 타사 어플라이언스와 통합할 수 있게 설계된 AWS 서비스. 트래픽을 패킷 레벨에서 검사할 수 있다.
42. 한 회사가 단일 VPC의 Amazon EC2 인스턴스에서 고가용성 이미지 처리 애플리케이션을 실행합니다. EC2 인스턴스는 여러 가용성 영역에 걸쳐 여러 서브넷 내에서 실행됩니다. EC2 인스턴스는 서로 통신하지 않습니다. 그러나 EC2 인스턴스는 Amazon S3에서 이미지를 다운로드하고 단일 NAT 게이트웨이를 통해 Amazon S3에 이미지를 업로드합니다. 이 회사는 데이터 전송 요금에 대해 우려하고 있습니다.
이 회사가 지역 데이터 전송 요금을 피하는 가장 비용 효율적인 방법은 무엇입니까?
- A. 각 가용성 영역에서 NAT 게이트웨이를 시작합니다.
- B. NAT 게이트웨이를 NAT 인스턴스로 교체합니다.
- C. Amazon S3에 대한 게이트웨이 VPC 엔드포인트를 배포합니다.
- D. EC2 인스턴스를 실행하기 위해 EC2 전용 호스트를 프로비저닝합니다.
정답: C
현재는 NAT 게이트웨이를 통해 데이터를 전송하고 있지만 VPC 엔드포인트를 사용하면 S3에 전송하는 요금은 줄일 수 있다. 참고로 동일 지역 내에서 VPC 엔드포인트 데이터 전송은 무료이다.
55. 솔루션 아키텍트는 여러 서브넷을 포함하는 VPC 아키텍처를 개발하고 있습니다. 이 아키텍처는 Amazon EC2 인스턴스와 Amazon RDS DB 인스턴스를 사용하는 애플리케이션을 호스팅합니다. 이 아키텍처는 두 개의 가용성 영역에 있는 여섯 개의 서브넷으로 구성됩니다. 각 가용성 영역에는 퍼블릭 서브넷, 프라이빗 서브넷, 데이터베이스 전용 서브넷이 포함됩니다. 프라이빗 서브넷에서 실행되는 EC2 인스턴스만 RDS 데이터베이스에 액세스할 수 있습니다.
어떤 솔루션이 이러한 요구 사항을 충족할까요?
- A. 퍼블릭 서브넷의 CIDR 블록으로 가는 경로를 제외한 새 경로 테이블을 만듭니다. 경로 테이블을 데이터베이스 서브넷과 연결합니다.
- B. 퍼블릭 서브넷의 인스턴스에 할당된 보안 그룹에서 인바운드 트래픽을 거부하는 보안 그룹을 만듭니다. 보안 그룹을 DB 인스턴스에 연결합니다.
- C. 프라이빗 서브넷의 인스턴스에 할당된 보안 그룹에서 인바운드 트래픽을 허용하는 보안 그룹을 만듭니다. 보안 그룹을 DB 인스턴스에 연결합니다.
- D. 퍼블릭 서브넷과 프라이빗 서브넷 간에 새로운 피어링 연결을 만듭니다. 프라이빗 서브넷과 데이터베이스 서브넷 간에 다른 피어링 연결을 만듭니다.
정답: C
A: 경로 테이블은 라우팅을 제어할 수는 있지만 특정 액세스는 불가.
B: 거부 규칙은 허용 규칙보다 복잡성이 증가함.
C: 허용 그룹을 통해 RDS에 EC2만 액세스하도록 제어 가능.
D: 피어링은 두 VPC 간의 직접 연결로 동일 VPC 내 제어와는 관련 없음.
91. 한 회사에 VPC의 Amazon EC2 인스턴스에서 실행되는 애플리케이션이 있습니다. 애플리케이션 중 하나는 Amazon S3 API를 호출하여 객체를 저장하고 읽어야 합니다. 회사의 보안 규정에 따라 애플리케이션의 트래픽은 인터넷을 통과할 수 없습니다.
어떤 솔루션이 이러한 요구 사항을 충족할까요?
- A. S3 게이트웨이 엔드포인트를 구성합니다.
- B. 개인 서브넷에 S3 버킷을 생성합니다.
- C. EC2 인스턴스와 동일한 AWS 지역에 S3 버킷을 생성합니다.
- D. EC2 인스턴스와 동일한 서브넷에 NAT 게이트웨이를 구성합니다.
정답: A
위에서도 계속 설명하지만 엔드포인트 외에 인터넷 없이 연결 될 수 있는 간단한 솔루션은 없습니다.
92. 한 회사가 Amazon S3 버킷에 민감한 사용자 정보를 저장하고 있습니다. 이 회사는 VPC 내부의 Amazon EC2 인스턴스에서 실행되는 애플리케이션 계층에서 이 버킷에 대한 보안 액세스를 제공하려고 합니다.
솔루션 아키텍트는 이를 달성하기 위해 어떤 단계 조합을 취해야 합니까? (두 가지를 선택하세요.)
- A. VPC 내에서 Amazon S3에 대한 VPC 게이트웨이 엔드포인트를 구성합니다.
- B. S3 버킷에 있는 객체를 공개하기 위한 버킷 정책을 생성합니다.
- C. VPC에서 실행되는 애플리케이션 계층에만 액세스를 제한하는 버킷 정책을 만듭니다.
- D. S3 액세스 정책이 있는 IAM 사용자를 생성하고 IAM 자격 증명을 EC2 인스턴스에 복사합니다.
- E. NAT 인스턴스를 생성하고 EC2 인스턴스가 NAT 인스턴스를 사용하여 S3 버킷에 액세스하도록 합니다.
정답: A, C
A: S3과 내부에서 접속하기 위해서는 게이트웨이 엔드포인트가 필요하다.
B: 보안인데 공개..?
C: 엔드포인트로 비공개 연결은 가능하지만 거기에 더해 요구사항인 애플리케이션 계층에 한한 액세스만 제한 가능.
D: 자격 증명을 복사하는 건 안전하지 않음
E: NAT 인스턴스는 리소스 액세스에 적합하지 않음. 애초에 게이트웨이 엔드포인트가 있으면 NAT가 필요없다.
101. 솔루션 아키텍트는 퍼블릭 및 프라이빗 서브넷이 있는 VPC를 설계하고 있습니다. VPC와 서브넷은 IPv4 CIDR 블록을 사용합니다. 고가용성을 위해 3개의 가용성 영역(AZ) 각각에 퍼블릭 서브넷 1개와 프라이빗 서브넷 1개가 있습니다. 인터넷 게이트웨이는 퍼블릭 서브넷에 대한 인터넷 액세스를 제공하는 데 사용됩니다. 프라이빗 서브넷은 Amazon EC2 인스턴스가 소프트웨어 업데이트를 다운로드할 수 있도록 인터넷에 액세스할 수 있어야 합니다.
솔루션 아키텍트는 프라이빗 서브넷에 대한 인터넷 액세스를 활성화하기 위해 무엇을 해야 합니까?
- A. 각 AZ의 각 퍼블릭 서브넷에 대해 하나씩 총 세 개의 NAT 게이트웨이를 만듭니다. 각 AZ에 대해 VPC가 아닌 트래픽을 해당 AZ의 NAT 게이트웨이로 전달하는 개인 경로 테이블을 만듭니다.
- B. 각 AZ의 각 프라이빗 서브넷에 대해 하나씩 총 세 개의 NAT 인스턴스를 만듭니다. 각 AZ에 대해 VPC가 아닌 트래픽을 해당 AZ의 NAT 인스턴스로 전달하는 프라이빗 경로 테이블을 만듭니다.
- C. 프라이빗 서브넷 중 하나에 두 번째 인터넷 게이트웨이를 만듭니다. 프라이빗 인터넷 게이트웨이로 VPC가 아닌 트래픽을 전달하는 프라이빗 서브넷의 경로 테이블을 업데이트합니다.
- D. 퍼블릭 서브넷 중 하나에 이그레스 전용 인터넷 게이트웨이를 만듭니다. 이그레스 전용 인터넷 게이트웨이로 VPC가 아닌 트래픽을 전달하는 프라이빗 서브넷의 경로 테이블을 업데이트합니다.
정답: A
A: 프라이빗 서브넷이 인터넷 액세스가 가능하다는 요구 사항에 따라 NAT 게이트웨이가 필요하다.
B: A와 비슷하지만 NAT 인스턴스가 NAT 게이트웨이보다 비용이 더 많이 든다. (현재 NAT 인스턴스는 더 이상 사용되지 않기도 함)
C: 인터넷 게이트웨이로는 퍼블릭과 프라이빗 서브넷을 직접 연결 불가
D: 이그레스(보통 내부에서 외부로 데이터 전송) 전용 인터넷 게이트웨이? 이 요구사항과는 맞지 않음