Table of Contents
VPC
- 논리적으로 격리된 가상 네트워크 공간을 만들어 AWS 리소스를 이용할 수 있도록 하는 서비스이다
- 네트워킹 환경(IP주소 범위, 서브넷, 라우팅 테이블, 게이트웨이 등)을 완벽하게 제어할 수 있다
- 보안성 높은 클라우드 환경을 구현할 수 있다
- VPC는 하나의 리전에만 속할 수 있음(다른 리전으로 확장 불가능)
VPC 구성요소
서브넷
- VPC의 하위 단위로 VPC에 할당된 IP블록을 더 작은 단위로 분할한 개념이다
- CIDR 방식으로 서브넷의 IP 주소를 지정한다
- 서브넷은 하나의 가용 영역 안에 있어야 한다
서브넷의 종류
- 퍼블릿 서브넷
- 인터넷 게이트웨이를 통해 외부 인터넷과 연결되어 있는 서브넷을 말한다
- 안에 위치한 인스턴스에 퍼블릭 IP 부여할 수 있다
- 보통 웹서버 처럼 외부 사용자에게 노출되어야 하는 인프라를 포함한다
- 프라이빗 서브넷
- 외부 인터넷과 연결되어 있지 않은 서브넷
- 퍼블릭 IP 가 없다
- 보통 데이터베이스처럼 외부 사용자에게 노출되면 안되는 인프라를 포함한다
CIDR
인터넷 게이트웨이
- VPC가 외부의 인터넷과 통신할 수 있도록 하기 위해 만드는 통로와 같은 개념이다
- 라우트 테이블에서 인터넷 게이트웨이의 IP 주소를 설정해줘야 한다
라우트 테이블
- 들어오고 나가는 트래픽에 대해 해당 트래픽이 어디로 가야 하는지 알려주는 이정표 역할을 한다
- 서브넷 간의 원활한 통신을 위해 라우팅 테이블을 이용하기도 한다
- VPC마다 한 개의 라우트 테이블을 가질 수 있으며 VPC 생성시 자동으로 하나 생성된다
- 여러 개의 VPC가 하나의 라우트 테이블을 공유할 수도 있다
보안그룹
- 보안그룹은 리소스(ex. EC2 인스턴스)에 대한 인/아웃 바운드 트래픽 규칙을 가지고 트래픽을 제어하는 가상 방화벽과 같다
- 리소스 단위로 보안그룹을 지정할 수 있다
- 인바운드 트래픽은 소스(source)와 포트로 리소스의 허용 범위를 지정할 수 있다
- 아웃바운드 트래픽은 대상(destination)과 포트로 외부(상대방)의 허용 범위를 지정할 수 있다
- 아웃바운드 트래픽은 대상과 포트를 명시하면 해당 대상, 포트의 트래
- Stateful 하다: 아웃바운드 주소를 기억해서, 아웃 바운드 규칙 없이도 아웃바운드 주소로 다시 트래픽을 전송한다
- 예를 들어 사용자가 인스턴스에서 요청을 전송하면 해당 요청의 응답 트래픽은 인바운드 보안 그룹 규칙에 관계없이 인스턴스에 도달할 수 있다
- 항상 요청을 받고, 그에 대해 응답하는 형태의 리소스라면 아웃 바운드 규칙이 없어도 된다
- 먼저 요청을 보내거나, 또는 상대방의 특정 포트로만 트래픽을 전송하고 싶으면 아웃 바운드 규칙을 정한다
- 여러 개의 보안그룹을 적용하면 OR 연산자로 동작한다
보안그룹 규칙 사항
- 허용 규칙을 지정할 수 있지만 거부 규칙은 지정할 수 없습니다.
- 보안 그룹을 처음 만들 때 인바운드 규칙이 없습니다. 따라서 보안 그룹에 인바운드 규칙을 추가하기 전에는 어떤 인바운드 트래픽도 허용되지 않습니다.
- 보안 그룹을 처음 생성하면 리소스의 모든 아웃바운드 트래픽을 허용하는 아웃바운드 규칙이 있습니다. 규칙을 제거할 수 있으며 특정 아웃바운드 트래픽만 허용하는 아웃바운드 규칙을 추가할 수 있습니다. 보안 그룹에 아웃바운드 규칙이 없는 경우 어떤 아웃바운드 트래픽도 허용되지 않습니다.
소스 또는 대상에 올 수 있는 요소
- 단일 IPv4 주소:
/32
접두사 길이를 사용해야 합니다. ex.203.0.113.1/32
- 단일 IPv6 주소:
/128
접두사 길이를 사용해야 합니다. ex.2001:db8:1234:1a00::123/128
- CIDR 블록 표기법으로 표시된 IPv4 주소의 범위: ex.
203.0.113.0/24
- CIDR 블록 표기법으로 표시된 IPv6 주소의 범위: ex.
2001:db8:1234:1a00::/64
- 접두사 목록의 ID: ex.
pl-1234abc1234abc123
- 보안 그룹의 ID: ex.
sg-1234567890abcdef0
NACL
- Network Control Access List
- 보안그룹과 비슷하게 방화벽 역할을 한다
- NACL은 서브넷 단위로 설정할 수 있다
- NACL은 특정 IP 주소를 deny 할 수 있다
- Stateless 하다: 상대방의 소스, 포트번호를 기억하지 못하기 때문에, 아웃 바운드 규칙을 작성해야 한다
- 규칙이 리스트 형태로 되어있는데, 각 규칙마다 규칙번호를 가지며, 낮은 번호의 규칙부터 우선 평가된다
- 우선 적용받는 규칙에서 Allow 된 경우, 이 후의 규칙을 평가하지 않는다
NAT Gateway
- Network Address Translation Gateway
- 프라이빗 서브넷 내의 인스턴스를 인터넷과 연결하기 위한 통로 역할을 한다
- 프라이빗 IP 주소를 노출하지 않고, 인터넷과 통신할 수 있다
- 프라이빗 서브넷의 인스턴스가 VPC 외부 서비스와의 연결을 시작할 수 있지만, 외부 서비스는 연결을 먼저 시작할 수 없다
- (프라이빗 서브넷의 인스턴스는 퍼블릭 NAT 게이트웨이를 통해 인터넷에 연결할 수 있지만 인터넷에서 원치 않는 인바운드 연결을 수신할 수 없습니다. 퍼블릭 서브넷에서 퍼블릭 NAT 게이트웨이를 생성하고 생성 시 탄력적 IP 주소를 NAT 게이트웨이와 연결해야 합니다. 트래픽을 NAT 게이트웨이에서 VPC용 인터넷 게이트웨이로 라우팅합니다)
- 퍼블릭 서브넷 내에 위치해야 한다
Bastion Host
- NAT 게이트웨이와 반대로, 외부 서비스가 프라이빗 서브넷 안의 인스턴스와 먼저 연결을 시작하고 싶은 경우 사용한다
- (사용자가 프라이빗 서브넷 안의 인스턴스에 접속하고자 할 때 사용한다)
- 퍼블릭 서브넷 안의 EC2 인스턴스를 Bastion Host로 사용한다