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 |