[AWS Summit Korea] 네트워킹

GonnabeAlright·2022년 5월 11일
0
post-thumbnail
post-custom-banner

본 게시글은 AWS Summit Korea 2022 이기백 (테크니컬 트레이너, AWS)님의 AWS 클라우드 핵심 서비스 소개 강연을 보고 정리한 글입니다.

VPC


VPC는 Amazon Virtual Cloud의 약어로 논리적으로 격리되어 있는 계정 전용 가상 네트워크입니다. 이 VPC 내에서 EC2 인스턴스와 같
은 AWS 리소스를 생성해서 사용할 수 있습니다.

VPC는 리전 범위의 서비스이며 가용 영역에 걸쳐서 사용됩니다.
VPC는 IP 주소의 범위 선택, 서브넷 생성, 라우팅 테이블 및 인터넷 게이트웨이 구성 등 가상 네트워킹 환경을 완벽하게 제어할 수 있습니다.

또한 데이터 센터를 보유한 경우 전용선 옵션인 Direct Connect 또는 VPN 연결을 통해서 하이브리드 아키텍처를 가져갈 수도 있습니다.

VPC 하나에 서비스를 배치할 수도 있지만 개발 및 테스트 환경 운영과 또는 부서와 같이 용도를 나누어 사용할 수도 있습니다. 기본적으로 VPC 끼리는 서로 통신이 되지 않지만 추가적으로 VPC 피어링이나 Transit Gateway를 통해서 이를 연결할 수도 있습니다.

또한 보안 그룹 및 네트워크 ACL을 포함한 다중 보안 계층을 사용해 서비스에 대한 보안을 강화할 수도 있습니다.

VPC는 논리적으로 격리되어 있는 가상 네트워크이며 Private IP 대역을 할당할 수 있습니다. 하지만 VPC만 만들었다고 해서 EC2 인스턴스와 같은 서비스를 바로 배치할 수는 없습니다.

서브넷


VPC는 서브넷이라고 하는 VPC IP 주소 범위 내의 세그먼트 또는 파티션으로 볼 수 있으며 서브넷을 생성하고 해당 서브넷에 EC2 인스턴스와 같은 서비스를 배치할 수 있습니다.
서브넷은 기본적으로 생성하면 외부와 통신할 수 없습니다. 이를 프라이빗 서브넷이라 합니다.

하지만 웹서비스와 같은 경우 외부에서 접근 가능해야 하기 때문에 이를 위해 프라이빗 서브넷을 퍼블릭 서브넷으로 만들 수 있습니다. 퍼블릭 서브넷이 되기 위해서는 3가지 조건이 필요합니다.

퍼블릭 서브넷이 되기 위한 3가지 조건

먼저 1. 인터넷 게이트웨이라고 불리는 서비스를 생성해서 VPC에 연결해야 하며 2. 라우팅 테이블에서 해당 항목에 대한 트래픽 경로가 지정되어야 합니다. 마지막으로 3. 퍼블릭 서브넷에 있는 서비스가 외부에서 접근할 수 있는 퍼블릭 IP 주소를 가지고 있어야 합니다.

계층적 보안

라우팅 테이블

VPC 내에서는 계층화된 네트워크 방어를 통해 애플리케이션의 보안을 지킬 수 있습니다. 먼저 VPC의 라우팅 테이블을 사용해 네트워크 트래픽이 전달되는 위치를 제어할 수 있습니다.

트래픽에 대한 위치를 상세하게 제어할 수 있기 때문에 일종의 첫 번째 방어 관문이 될 수 있습니다. 따라서 악의적 공격자가 여러분들의 서비스에 도달하기 위해 공격을 해도 라우팅 테이블에 해당 정보가 없으면 접근할 수 없습니다.

네트워크 ACL (Network Access Control List)

두 번째로 네트워크 ACL이 있습니다. 네트워크 ACL은 1개 이상의 서브넷 내부와 외부의 트래픽을 제어하기 위한 방화벽 역할을 하는 VPC를 위한 선택적 보안 계층입니다.

규칙을 통해 SSH 접속과 같은 유형, 프로토콜, 포트 범위 및 소스 대상을 선정하고 이를 허용할지 거부할지 설정할 수 있습니다. 규칙은 여러개 부여할 수 있으며 규칙 번호가 낮을수록 먼저 평가됩니다.

보안그룹 (Security Group)

세 번째로 보안 그룹이 있습니다. 보안 그룹이란 인스턴스에 대한 인바운드 및 아웃바운드 트래픽을 제어하는 가상 방화벽을 의미합니다. 보안 그룹은 서브넷 수준이 아니라 인스턴스를 보호하기 때문에 하나의 서브넷 안에 있는 여러 리소스를 서로 다른 보안 그룹 세트에 할당할 수 있습니다.

각 보안 그룹별로 인스턴스에 대한 인바운드 트래픽아웃바운드 트래픽을 별도로 제어하는 규칙을 정의하는 방식으로 생성합니다.

서드파티 솔루션

마지막으로 서드파티 솔루션등이 있습니다. 이것은 사용자가 직접 설치하는 보안 솔루션 또는 서비스입니다. 이렇게 라우팅 테이블로부터 여러분들이 설치하는 서드파티 보안 솔루션까지 여러 계층을 통해 보안을 강화하는 것이 매우 중요합니다.

계층적 보안에 대한 부분을 좀 더 명확하게 보도록 하겠습니다. 먼저 외부에서 EC2 인스턴스에 접근하기 위해서는 인터넷 게이트웨이라는 서비스를 통해서 접근하게 됩니다.

계층적 보안 필터 구조


인터넷 게이트웨이로 들어온 트래픽은 라우팅 테이블의 경로 정보를 가지고 이동하게 됩니다. 라우팅 테이블에서 적절한 정보를 주지 않으면 해당 트래픽은 EC2 인스턴스에 접근할 수 없습니다. 다음으로 라우팅 테이블을 통해서 트래픽은 서브넷 앞단의 네트워크 ACL을 거치게 됩니다.

네트워크 ACL은 여러분이 해외여행시 만나게 되는 여권 심사관이 여러분들이 입국하기에 적합한지 심가하는 것과 같이 여러분이 정한 룰에 의해 허용된 트래픽인지 확인합니다. 허용된 트래픽은 다음으로 인스턴스 레벨의 가상 방화벽인 보안 그룹을 거치게 됩니다.

보안 그룹은 예를 들어 한 건물의 경비와 같다고 볼 수 있습니다. 여러분이 정한 룰에 의해 정상 트래픽인지 확인하고 출입을 허용합니다. 위 경로를 거쳐서 EC2 인스턴스에 EC2 인스턴스에 트래픽이 접근하게 되므로 이를 계층적 보안이라고 하며 라우팅 테이블, 네트워크 ACL, 보안 그룹 등의 설정을 정확하고 정밀하게 하는 것이 중요합니다.

Elastic Load Balancing (ELB)

ELB는 들어오는 애플리케이션 트래픽을 Amazon EC2 인스턴스, 컨테이너, IP 주소, Lambda 함수, 가상 어플라이언스와 같은 여러 대상에 자동으로 분산시킵니다. ELB는 단일 가용 영역 또는 여러 가용 영역에서 다양한 애플리케이션 부하를 처리할 수 있습니다.

ELB가 제공하는 4가지 로드밸런서는 Application Load Balancer(ALB), Network Load Balancer(NLB), Gateway Load Balancer, Classic Load Balancer 등 모두 애플리케이션의 내결함성에 필요한 고가용성, 상태 확인, 강력한 보안을 갖추고 있습니다.

ELB의 고가용성

고가용성 부분에서 ELB는 트래픽을 단일 가용 영역 또는 여러 가용 영역에 있는 여러 대상 Amazon EC2 인스턴스, 컨테이너, IP 주소에 자동으로 분산합니다. 이를 통해서 하나의 가용 영역에 있는 애플리케이션에 문제가 생겨도 나머지 가용 영역에 있는 대상으로 트래픽이 전달되므로 서비스를 지속할 수 있습니다.

두 번째 상태 확인 부분에서 ELB는 비정상 대상을 감지하고 해당 대상으로 트래픽 전송을 중단한 다음 나머지 정상 대상으로 로드를 분산합니다.

다음으로 Amazon Virtual Private Cloud를 사용할 경우 ELB와 관련된 보안그룹을 생성 및 관리하여 Application Load Balancer 및 Classic Load Balancer를 위한 추가 네트워킹 및 보안 옵션을 제공할 수 있습니다.

원하는 Load Balancer를 인터넷과 연결되도록 구성하거나 퍼블릭 IP 주소 없이 Load Balancer를 생성해서 인터넷에 연결되지 않은 내부 Load Balancer를 생성할 수 있습니다.

Amazon Route 53

Amazon Route 53은 가용성과 확장성이 뛰어난 DNS(도메인 네임 시스템) 웹 서비스입니다. Route 53을 사용해 다음과 같은 주요 기능을 수행합니다.

첫 번째는 도메인 이름 등록입니다.

웹사이트에는 example.com과 같은 이름이 필요합니다. Route 53을 사용해 웹 사이트 또는 웹 어플리케이션을 위한 도메인 이름이라고 하는 도메인 이름을 등록할 수 있습니다. 또한 사용자가 웹 브라우저를 열어 주소 표시줄에 도메인 이름 또는 하위 도메인 이름을 입력하면 Route 53은 브라우저를 웹사이트 또는 웹 애플리케이션에 연결하도록 돕습니다. 다음으로 Route 53은 인터넷을 통해 웹 서버 같은 리소스로 자동화된 요청을 보내고 접근 및 사용이 가능하고, 정상 작동 중인지 확인합니다. 리소스를 사용할 수 없게 될 때 알림을 수신하고 비정상 리소스가 아닌 다른 곳으로 인터넷 트래픽을 라우팅할 수도 있습니다. 그 외에도 지연시간 기반 라우팅, 지역 기반 라우팅, 가중치 기반 라우팅 등 다양한 라우팅 옵션을 제공합니다.

지역 기반 라우팅

Amazon Route 53의 지역 기반 라우팅을 통해 싱가포르에서 접속한 사용자는 싱가포르 리전으로 버지니아 북부에서 접근한 사용자는 버지니아 북부리전으로 접속하도록 트래픽을 라우팅 할 수 있습니다.

전체 네트워킹 흐름


사용자는 DNS를 통해 여러분들의 애플리케이션에 접근하게 되며 Route 53이를 IP 정보로 변경하여 전달합니다. 전달받은 IP 정보로 트래픽을 요청하면 AWS 클라우드의 VPC에 연결된 인터넷 게이트웨이 서비스가 이를 먼저 처리하게 됩니다. 트래픽은 라우팅 테이블의 트래픽 경로를 따라서 ELB로 연결되며 ELB는 뒤에 연결된 EC2 인스턴스에 적절히 부하를 분산합니다.

오토 스케일링 그룹을 통해 여러분들은 부하에 따라 탄력적으로 EC2 인스턴스를 확장하고 축소할 수 있습니다.

post-custom-banner

0개의 댓글