BE전문가 프로젝트

5. AWS 기반 네트워킹 본문

AWS이론 자습

5. AWS 기반 네트워킹

원호보고서 2022. 2. 21. 19:42

1. VPC(Amazon Virtual Private Cloud)

- AWS Cloud의 프라이빗 네트워크 공간

- 워크로드에 대한 논리적 격리를 제공

- 리소스에 대한 사용자 지정 액세스 제어 및 보안 설정을 허용함

VPC 세부 사항
VPC는 AWS 계정 전용 가상 네트워크
IPv4 또는 IPv6 주소 범위에 존재함
점유 리소스에 대한 특정 CIDR 범위를 생성할 수 있음
인바운드 및 아웃바운드 트래픽에 대한 엄격한 액세스 규칙을 제공함

VPC 배포

VPC는 AWS 리전 중 1개 리전에 배포됨

- VPC 리전 내 모든 가용 영역의 리소스를 호스팅할 수 있음

VPC 사용 적합 사례
하나의 VPC 사용 하나의 VPC사용은 제한적임이여서 대부분은 인프라를 구성하는 데 2개의 기본 패턴을 사용함
ㆍ한 명 또는 매우 작은 팀이 관리하는 소규모 단일 애플리케이션
ㆍ고성능 컴퓨팅
ㆍ자격 증명 관리
다중 VPC 패턴 - 단일 팀 또는 단일 조직
ex) 대규모 전자상거래 애플리케이션을 개발하는 단일팀은 개발자가 개빌/프로덕션 환경에 대한 전체 액세스 권한이 있을 때

- 더 쉽게 표준 상태를 유지하고 액세스를 관리할 수있는 제한된 팀

예외) 거버넌스 및 규정 준수 표준은 조직의 복잡성과 관계없이 워크로드 격리를 요구할 수 있음
복수 계정 패턴 - 대규모 조직 및 여러 IT 팀이 있는 조직
- 빠른 성장이 예상되는 중간 규모의 조직

이유 : 액세스 및 표준 관리는 조직이 복잡할수록 여러울 수 있음

 

VPC 제한

동일한 리전 또는 다른 리전에 여러 VPC 보유 가능

- 계정당 리전당 VPC 5개

 

VPC 및 IP 주소 지정

각 VPC는 사용자가 지정하는 프라이빗IP 주소의 범위를 예약함

- 이러한 프라이빗 IP주소는 해당 VPC에 배포된 리소스에서 사용할 수 있음

- IP 범위는 CIDR(Classless Inter-Domain Routing)표기법을 사용하여 정의됨

- 고유 IP 주소 가져오기(BYOIP-Bring Your Own IP)접두사 지원

 

서브넷을 사용한 VPC 분리

- 서브넷은 리소스 그룹을 격리할 수 있는 VPC IP주소 범위의 세그먼트 또는 파티션임

- VPC 사용시 고객들이 가상 네트워크를 생성하고 이를 서브넷으로 분할할 수 있음

- VPC 서브넷은 특정 가용 영역에 매핑됨 따라서 서브넷 배치는 EC2 인스턴스를 여러 위치에 올바르게 분산할 수있도록 보장하는 하나의 매커니즘임

서브넷 키속성

- 서브넷은 VPC CIDR 블록의 하위 집합임

- 서브넷 CLDR블록은 중첩될 수 없음

- 각 서브넷은 하나의 가용 영역 내에서만 존재함

- 가용영역엣 서브넷이 여러개 포함될 수 있음

- AWS는 각 서브넷에서 5개의 IP 주소를 예약함(각 서브넷의 CIDR 블록에서 첫 IP주소 4개와 마지막 IP주소를 예약합)

 

라우팅 테이블: VPC 리소스 간에 트래픽 보내기

라우팅 테이블
VPC리소스 간에 트래픽을 연결하는 데 필요함
각 VPC에는 주요 라우팅 테이블이 있음
사용자 지정 라우팅 테이블을 생성할 수 있음
모든 서브넷에는 연결된 라우팅 테이블이 있어야함

예시

목적지 대상
10.0.0.0/16 로컬
0.0.0.0 모든 IP

- 라우팅 테이블은 네트워크 트래픽이 향하는 방향을 결정하는 데 사용되는 경로라고 부르는 규칙 세트를 포함하고 있음

- VPC 생성시 자동으로 기본 라우팅 테이블이 생성됨(처음에는 기본 라우팅 테이블에 단일 경로 즉 VPC 내 모든 리소스에 대해 통신을 허용하는 로컬 경로만 포함되어있음)

- 라우팅 테이블의 로컬 경로는 수정 불가능

- VPC에 있는 각 서브넷은 라우팅 테이블에 연결되어 있어야함(이 테이블이 서브넷에 대한 라우팅을 제어함)

- 서브넷을 특정 라우팅 테이블과 명시적으로 연결하지 않는 경우, 서브넷은 암시적으로 기본 라우팅 테이블과 연결되어 사용함

- 서브넷은 한 번에 하나의 라우팅 테이블에만 연결할 수 있지만 여러 서브넷을 같은 라우팅 테이블에 연결 가능

 

서브넷을 통해 허용되는 네트워크 격리

서브넷을 사용하여 인터넷 액세스 접근성을 정의함

네트워크 격리
퍼블릭 서브넷 퍼블릭 인터넷에 대한 인바운드/아웃바운드 액세스를 지원하도록 인터넷 게이트에 대한 라우팅 테이블 항목을 포함
프라이빗 서브넷 인터넷 게이트웨이에 대한 라우팅 테이블 항목이 없음
퍼블릭 인터넷에서 직접 액세스할 수 없음
일반적으로 제한된 아웃 바운드 퍼블릭 인터넷 액세스를 지원하기 위해 NAT 게이트웨이를 사용함

 

Public Subnet에 인터넷 연결

 

- 수평적 확장으로 이중화를 지원하는 고가용성 VPC 구성 요소로서 VPC의 인스턴스와 인터넷 간 통신이 가능한 이유도 인터넷 게이트웨이 때문

인터넷 게이트웨이
VPC의 인스턴스와 인터넷 간에 통신을 허용함
기본적으로 가용성이 뛰어나고 중복적이며, 수평적으로 확장됨
인터넷으로 라우팅 가능한 트래픽에 대한 서브넷 라우팅 테이블에 대상을 제공함
인터넷 게이트웨이를 사용하는 목적
인터넷 라우팅 트래픽에 대한 VPC 라우팅 테이블의 대상을 제공
퍼블릭 IPv4 주소가 할당된 인스턴스에 대해 네트워크 주소 변환(NAT)을 수행하는 데 있음

Private Subnet에 인터넷 연결

NAT 게이트웨이
프라이빗 서브넷의 인스턴스가 인터넷 또는 다른 AWS 서비스로의 아웃바운드 트래픽을 시작하도록 활성화함
프라이빗 인스턴스가 인터넷에서 인바운드 트래픽을 수신하는 것을 차단함

 

전체적 흐름

서브넷 사용

- AWS는 퍼블릭 서브넷에 배치된 로드 밸런서 뒷쪽의 프라이빗 서브넷 내부에 이 인스턴스를 배치할 것을 권장함

- 일부 환경에서는 웹 애플리케이션 인스턴스를 탄력적 IP에 직접 연결해야 하며(탄력적 IP를 로드밸런서에 연결할 수 있더라도), 그런 경우 웹 애플리케이션 인스턴스는 퍼블릭 서브넷에 있어야함

사용 사례 서브넷
데이터 스토어 인스턴스 프라이빗 서브넷
배치 처리 인스턴스 프라이빗 서브넷
백엔드 인스턴스 프라이빗 서브넷
웹 애플리케이션 인스턴스 퍼블릭, 프라이빗 서브넷

 

서브넷 권장 사항

권장 사항
작은크기보다는 더 큰 크기의 서브넷을 권장함(/24 이상)
워크로드 배치 간소화 워크로드를 10개의 작은서브넷 중 어디에 배치할지 선택하는 것이 1개의 큰 서브넷보다 더 복잡함
IP를 낭비하거나 IP가 부족할 확률이 낮음 서브넷에서 사용 가능한 IP가 부족한 경우, 해당 서브넷에 IP를 추가할 수 없음

 

기본 서브넷 구성

- 가용영역당 1개의 퍼블릭 서브넷과 1개의 프라이빗 서브넷으로 구성하는 것이 가장 적당함

- 대부분의 아키텍처에는 퍼블릭 리소스보다 프라이빗 리소스가 훨씬 많음

- 퍼블릭 서브넷보다 프라이빗 서브넷에 훨씬 더 많은 IP를 할당함

 

탄력적 네트워크 인터페이스

- 탄력적 네트워크 인터페이스는 가상 네트워크 인터페이스이며 동일한 가용영역 안에서 EC2인스턴스 간에 이동 가능

- VPC에서 인터페이스에 장착할 수 있는 가상 네트워크 인터페이스임

- 새인스턴스로 이동시 네트워크 인터페이스는 프라이빗 IP주소, 탄력적 IP주소, MAC주소를 유지함(인스턴스가 다른 이스턴스에 연결되거나 인스턴스에서 분리되었다가 다른 인스턴스에 다시 연결되기 때문)

- 네트워크 인터페이스를 만들고 인스턴스에 연결하는 것은 물론, 인스턴스에서 분리 후 다른 인스턴스에 연결 가능

여러 네트워크 인터페이스를 하나의 인스턴스에 연결시 유용한 경우
관리 네트워크 생성
VPC에서 네트워크 및 보안 어플라이언스 사용
별도의 서브넷에 있는 워크로드/역할로 이중 홈 인스턴스 생성
저예산 고가용성 솔루션 생성

 

탄력적 IP주소

- 동적 클라우딩 컴퓨팅을 위해 설계된 고정 퍼블릭 IPv4주소

 

 
인스턴스 또는 네트워크
인터페이스에 연결할 수 있음
계정의 어떤 VPC에 대해서든 탄력적 IP주소를 인스턴스 또는 네트워크 인터페이스와 연결할 수 있음
즉시 트래픽을
재연결하고 전송할 수 있음
탄력적 IP즈소로 주소를 VPC의 다른 인스턴스에 신속하게 다시 매핑하여 인스턴스의 장애를 숨길 수 있음
AWS 리전당 5개가 허용 탄력적 IP주소는 5개로 제한되며, 이를 절약하기 위해 NAT 디바이스를 사용할 수 있음
인스턴스 장애 시, 주소를 다른 인스턴스로 매핑하고 다른 모든 노드와 통신에서 DNS 호스트 이름을 사용하려면 기본적으로 탄력적 IP주소를 사용할 것을 권장함
BYOIP(Bring Your Own IP)
주소를 생성할 수 있음
BYOIP 주소 접두사에서 탄력적 IP주소를 생성하여 EC2 인스턴스 Network Load Balancer 및 NAT Gateway와 같은 AWS 리소스에 사용할 수 있음

2. 클라우드에서의 보안

보안 그룹

- AWS리소스에 대한 인바운드 및 아웃바운드 트래픽을 제어하는 가상 방화벽

- 트래픽은 모든 IP프로토콜, 포트 또는 IP주소로 제한될 수 있음

- 규칙은 상태 저장이다

 

보안 그룹(기본 설정)

기본적으로 보안 그룹은 모든 아웃바운드 트래픽을 허용하는 아웃바운드 규칙을 포함하지만 규칙을 제거하고 특정 아웃바운드 트래픽만 허용하는 아웃바운드 규칙 추가 가능

- 트래픽은 프로토콜, 서비스 포트 및 소스 IP주소(개별 IP 또는 CIDR블록)또는 보안 그룹에 의해 제한 될 수 있음

 

보안 그룹(트래픽 제어)

- 대부분의 조직은 각 기능 티어에 대한 인바운드 규칙으로 보안 그룹을 생성함

ex) 앱 티어 보안 그룹, 웹티어 보안 그룹

 

보안 그룹(체인 다이어그램)

트래픽이 상위 티어에서 하위티어로만 흐른 후 다시 반대로 흐르도록 인바운드와 아웃바운드 규칙이 설정됨

- 보안그룹은 한 티어에서 발생한 보안 위반으로 손상된 클라이언트에 서브넷 전체의 모든 리소스에 대한 액세스가 자동으로 제공되는 것을 방지하는 방화벽 역할을 함

 

NACL (네트워크 액세스 제어 목록)

서브넷 경계의 방화벽

- 기본적으로 모든 인바운드 및 아웃바운드 트래픽을 허용함

- 상태 비저장이므로 인바운드 및 아웃바운드 트래픽 모두에 대한 명시적인 규칙이 필요함

- 특정 네트워크 보안 요규사항에서 권장됨

 

정리

<<전체적인 그림>>

VPC 서브넷의 인스턴스에 대해 인터넷 액세스를 활성화하기위해 수행해야할 것
인터넷 게이트웨이를 VPC에 연결함
라우팅 테이블을 인터넷 게이트웨이에 연결함
인스턴스에 퍼블릭 IP또는 탄력적인 IP주소가 있는지 확인함
네트워크 ACL과 SG가 관련 트래픽흐름을 허용하는지 확인함

'AWS이론 자습' 카테고리의 다른 글

7. IAM  (0) 2022.04.10
6. AWS 네트워킹(2)  (0) 2022.03.17
4. DB 계층  (0) 2022.02.18
3. 컴퓨터 계층  (0) 2022.02.08
2. 간단한 아키텍처  (0) 2022.01.31
Comments