Amazon Virtual Private Cloud(Amazon VPC)
AWS 서비스를 사용하는 수백만 명의 고객을 상상해 보자. 또한 이들 고객이 생성한 Amazon EC2 인스턴스와 같은 수백만 개의 리소스가 있다고 한다. 이러한 모든 리소스에 경계가 없으면 네트워크 트래픽이 제한 없이 리소스 간에 흐를 수 있다. AWS 리소스에 경계를 설정하는 데 사용할 수 있는 네트워킹 서비스가 Amazon Virtual Private Cloud(Amazon VPC)(opens in a new tab)다. Amazon VPC를 사용하여 AWS 클라우드의 격리된 섹션을 프로비저닝할 수 있다. 이 격리된 섹션에서는 사용자가 정의한 가상 네트워크에서 리소스를 시작할 수 있다. 한 Virtual Private Cloud(VPC) 내에서 여러 서브넷으로 리소스를 구성할 수 있다. 서브넷은 리소스(예: Amazon EC2 인스턴스)를 포함할 수 있는 VPC 섹션이다.
인터넷 게이트웨이
인터넷 게이트웨이는 VPC와 인터넷 간의 연결이다. 인터넷 게이트웨이는 고객이 커피숍에 들어가기 위해 사용하는 출입문과 비슷한 것으로 생각할 수 있다. 인터넷 게이트웨이가 없으면 아무도 VPC 내의 리소스에 액세스할 수 없다.
가상 프라이빗 게이트웨이
VPC 내의 프라이빗 리소스에 액세스하려면 가상 프라이빗 게이트웨이를 사용할 수 있다. 위 그림은 가상 프라이빗 게이트웨이 작동 방식의 예시다. 인터넷은 집과 카페 사이의 도로로 생각할 수 있다. 이 도로를 경호원과 함께 지나간다고 가정해 본다. 다른 고객과 동일한 도로를 사용하고 있지만 추가 보호 계층이 있는 것이다. 경호원은 주변의 다른 모든 요청으로부터 인터넷 트래픽을 암호화(또는 보호)하는 가상 프라이빗 네트워크(VPN) 연결과 같다. 가상 프라이빗 게이트웨이는 보호된 인터넷 트래픽이 VPC로 들어오도록 허용하는 구성 요소다. 카페까지 가는 도로에는 추가적인 보호 기능이 있지만, 다른 고객과 동일한 도로를 사용하고 있기 때문에 교통 체증이 발생할 수 있다. 가상 프라이빗 게이트웨이를 사용하면 VPC와 프라이빗 네트워크(예: 온프레미스 데이터 센터 또는 회사 내부 네트워크) 간에 가상 프라이빗 네트워크(VPN) 연결을 설정할 수 있다. 가상 프라이빗 게이트웨이는 승인된 네트워크에서 나오는 트래픽만 VPC로 들어가도록 허용한다.
AWS Direct Connect
AWS Direct Connect(opens in a new tab)는 데이터 센터와 VPC 간에 비공개 전용 연결을 설정하는 서비스다. 카페와 직접 연결되는 복도가 있는 아파트 건물이 있다고 가정한다. 그리고 아파트 입주자만 이 복도를 사용할 수 있다. 이 사설 복도는 AWS Direct Connect와 동일한 유형의 전용 연결을 제공한다. 입주민은 다른 고객도 함께 사용하는 공공 도로를 거칠 필요 없이 카페에 들어갈 수 있는 것이다. AWS Direct Connect가 제공하는 프라이빗 연결은 네트워크 비용을 절감하고 네트워크를 통과할 수 있는 대역폭을 늘리는 데 도움이 된다.
서브넷 및 네트워크 액세스 제어 목록
VPC 내에서 서브넷의 역할에 대해 자세히 알아보기 위해 위 그림과 같은 카페의 예를 살펴본다. 먼저, 고객이 직원에게 음료를 주문한다. 그러면 직원이 바리스타에게 주문을 전달한다. 이 프로세스를 통해 더 많은 고객이 들어오더라도 계속 원활하게 주문을 받을 수 있다. 만일 일부 고객이 직원을 건너 뛰고 바리스타에게 직접 주문하려 한다면, 주문 흐름이 중단되고 고객이 카페의 제한 구역에 접근하게 된다.
이 문제를 해결하기 위해 커피숍 점주는 계산원과 바리스타를 별도의 워크스테이션에 배치하여 카운터 영역을 나눈다. 직원의 워크스테이션은 퍼블릭이고 고객을 응대하도록 설계되었다. 바리스타의 워크스테이션은 프라이빗이다. 바리스타는 직원으로부터 주문을 받을 수는 있지만, 고객으로부터 직접 주문을 받을 수는 없다.
이는 AWS 네트워킹 서비스를 사용하여 리소스를 격리하고 네트워크 트래픽의 흐름을 정확히 결정하는 것과 비슷하다. 카페의 카운터 영역을 VPC로 생각할 수 있다. 카운터 영역은 직원의 워크스테이션과 바리스타의 워크스테이션을 위한 두 개의 영역으로 나뉜다. VPC에서 서브넷은 리소스를 그룹화하는 데 사용되는 별개의 영역이다.
서브넷
서브넷은 보안 또는 운영 요구 사항에 따라 리소스를 그룹화할 수 있는 VPC 내의 한 섹션이다. 서브넷은 퍼블릭이거나 프라이빗일 수 있다. 퍼블릭 서브넷에는 온라인 상점의 웹 사이트와 같이 누구나 액세스할 수 있어야 하는 리소스가 포함된다. 반면, 프라이빗 서브넷에는 고객의 개인 정보 및 주문 내역이 포함된 데이터베이스와 같이 프라이빗 네트워크를 통해서만 액세스할 수 있는 리소스가 포함된다. VPC 내에서 서브넷은 서로 통신할 수 있다. 예를 들어 퍼블릭 서브넷에 있는 Amazon EC2 인스턴스가 프라이빗 서브넷에 있는 데이터베이스와 통신하는 애플리케이션이 있을 수 있다.
VPC의 네트워크 트래픽
고객이 AWS 클라우드에서 호스팅되는 애플리케이션에 데이터를 요청하면 이 요청은 패킷으로 전송된다. 패킷은 인터넷이나 네트워크를 통해 전송되는 데이터의 단위다. 패킷은 인터넷 게이트웨이를 통해 VPC로 들어간다. 패킷이 서브넷으로 들어가거나 서브넷에서 나오려면 먼저 권한을 확인해야 한다. 이러한 사용 권한은 패킷을 보낸 사람과 패킷이 서브넷의 리소스와 통신하려는 방법을 나타낸다. 서브넷의 패킷 권한을 확인하는 VPC 구성 요소는 네트워크 액세스 제어 목록(ACL)(opens in a new tab)다.
네트워크 ACL
네트워크 ACL은 서브넷 수준에서 인바운드 및 아웃바운드 트래픽을 제어하는 가상 방화벽이다. 예를 들어 이제 카페가 아닌 공항에 있다고 가정한다. 공항에서 여행자들이 입국 절차를 밟고 있다. 이러한 여행자를 패킷으로 생각할 수 있고, 출입국 심사 직원을 네트워크 ACL로 생각할 수 있다. 출입국 심사 직원은 여행자가 출입국할 때 여행자의 신원 정보를 확인한다. 여행자가 승인 목록에 있으면 통과할 수 있고, 승인 목록에 없거나 금지 목록에 명시된 여행자는 입국할 수 없다.
각 AWS 계정에는 기본 네트워크 ACL이 포함된다. 그래서 VPC를 구성할 때 계정의 기본 네트워크 ACL을 사용하거나 사용자 지정 네트워크 ACL을 생성할 수 있다. 계정의 기본 네트워크 ACL은 기본적으로 모든 인바운드 및 아웃바운드 트래픽을 허용하지만 사용자가 자체 규칙을 추가하여 수정할 수 있다. 사용자 지정 네트워크 ACL은 사용자가 허용할 트래픽을 지정하는 규칙을 추가할 때까지 모든 인바운드 및 아웃바운드 트래픽을 거부한다. 또한 모든 네트워크 ACL에는 명시적 거부 규칙이 있다. 이 규칙은 패킷이 목록의 다른 모든 규칙과 일치하지 않으면 해당 패킷이 거부되도록 하는 것이다.
스테이트리스 패킷 필터링
네트워크 ACL은 스테이트리스 패킷 필터링을 수행한다. 즉, 아무것도 기억하지 않고 각 방향(인바운드 및 아웃바운드)으로 서브넷 경계를 통과하는 패킷만 확인한다. 앞서 예로 든 다른 국가에 입국하려는 여행자를 따져본다. 이는 Amazon EC2 인스턴스에서 인터넷으로 요청을 전송하는 것과 비슷하다. 해당 요청에 대한 패킷 응답이 서브넷으로 반환될 때 네트워크 ACL은 이전 요청을 기억하지 못한다. 네트워크 ACL은 규칙 목록에 따라 패킷 응답을 확인하여 허용 또는 거부 여부를 결정한다. 패킷이 서브넷에 들어간 후에는 서브넷 내의 리소스(예: Amazon EC2 인스턴스)에 대한 권한이 평가되어야 한다. 패킷에서 Amazon EC2 인스턴스에 대한 권한을 확인하는 VPC 구성 요소는 보안 그룹(opens in a new tab)이다.
보안 그룹
보안 그룹은 Amazon EC2 인스턴스에 대한 인바운드 및 아웃바운드 트래픽을 제어하는 가상 방화벽이다. 기본적으로 보안 그룹은 모든 인바운드 트래픽을 거부하고 모든 아웃바운드 트래픽을 허용한다. 그렇게 사용자 지정 규칙을 추가하여 허용해야 할 트래픽을 구성할 수 있다. 그러면 나머지 트래픽은 거부된다. 예를 들어 로비에서 방문객을 안내하는 경비원이 있는 아파트 건물을 생각해 보도록 한다. 방문객을 패킷으로 생각할 수 있으며 경비원을 보안 그룹으로 생각할 수 있다. 방문객이 도착하면 경비원은 방문객 목록을 보고 해당 방문객이 건물 안으로 들어갈 수 있는지 확인한다. 그러나 방문객이 건물에서 나갈 때는 경비원이 목록을 다시 확인하지 않는다. 동일한 VPC 내에 여러 Amazon EC2 인스턴스가 있는 경우 동일한 보안 그룹에 연결하거나 각 인스턴스마다 서로 다른 보안 그룹을 사용할 수 있다.
스테이트풀 패킷 필터링
보안 그룹은 스테이트풀 패킷 필터링을 수행한다. 즉, 들어오는 패킷에 대한 이전 결정을 기억한다. Amazon EC2 인스턴스에서 인터넷으로 요청을 전송하는 것과 동일한 예를 생각해 보도록 한다. 해당 요청에 대한 패킷 응답이 인스턴스로 반환될 때 보안 그룹이 이전 요청을 기억한다. 보안 그룹은 인바운드 보안 그룹 규칙에 관계없이 응답이 진행하도록 허용한다.
네트워크 ACL과 보안 그룹을 모두 사용하면 VPC에서 트래픽에 대한 사용자 지정 규칙을 구성할 수 있다.
도메인 이름 시스템(DNS)
AnyCompany가 AWS 클라우드에서 웹 사이트를 호스팅한다고 가정한다. 고객은 브라우저에 웹 주소를 입력하면 이 웹 사이트에 액세스할 수 있다. 이것이 가능한 이유는 도메인 이름 시스템(DNS) 확인 때문이다. DNS 확인에는 회사 DNS 서버와 통신하는 고객 DNS 확인자가 포함된다. DNS를 인터넷의 전화번호부라고 생각할 수 있다. DNS 확인은 도메인 이름을 IP 주소로 변환하는 프로세스다.
예를 들어 AnyCompany의 웹 사이트를 방문한다고 가정한다.
1단계: 브라우저에 도메인 이름을 입력하면 이 요청이 고객 DNS 확인자로 전송한다.
2단계: 고객 DNS 확인자는 회사 DNS 서버에 AnyCompany 웹 사이트에 해당하는 IP 주소를 요청한다.
3단계: 회사 DNS 서버는 AnyCompany 웹 사이트의 IP 주소인 192.0.2.0을 제공하여 응답한다.
Amazon Route 53
Amazon Route 53(opens in a new tab)은 DNS 웹 서비스다. 이 서비스는 개발자와 기업이 최종 사용자를 AWS에서 호스팅되는 인터넷 애플리케이션으로 라우팅할 수 있는 신뢰할 수 있는 방법을 제공한다. Amazon Route 53은 사용자 요청을 AWS에서 실행되는 인프라(예: Amazon EC2 인스턴스 및 로드 밸런서)에 연결한다. 또한 사용자를 AWS 외부의 인프라로 라우팅할 수 있다.
Route 53의 또 다른 기능에는 도메인 이름의 DNS 레코드를 관리하는 기능도 있다. Route 53에 직접 새 도메인 이름을 등록할 수 있다. 다른 도메인 등록 대행자가 관리하는 기존 도메인 이름의 DNS 레코드를 전송할 수도 있다. 그러면 단일 위치에서 모든 도메인 이름을 관리할 수 있다.
AnyCompany의 애플리케이션이 여러 Amazon EC2 인스턴스에서 실행 중이라고 가정한다. 이러한 인스턴스는 Application Load Balancer에 연결되는 Auto Scaling 그룹에 포함되어 있다.
1단계: 고객이 AnyCompany의 웹 사이트로 이동하여 애플리케이션에서 데이터를 요청한다.
2단계: Amazon Route 53은 DNS 확인을 사용하여 AnyCompany.com의 IP 주소인 192.0.2.0을 식별한다. 이 정보는 고객에게 다시 전송된다.
3단계: 고객의 요청은 Amazon CloudFront를 통해 가장 가까운 엣지 로케이션으로 전송된다.
4단계: Amazon CloudFront는 수신 패킷을 Amazon EC2 인스턴스로 전송하는 Application Load Balancer에 연결된다.
'보안 > 교육' 카테고리의 다른 글
AWS Cloud Practitioner Essentials #6 (1) | 2024.08.29 |
---|---|
AWS Cloud Practitioner Essentials #5 (3) | 2024.08.28 |
AWS Cloud Practitioner Essentials #3 (2) | 2024.08.27 |
AWS Cloud Practitioner Essentials #2 (3) | 2024.08.27 |
AWS Cloud Practitioner Essentials #1 (0) | 2024.08.26 |