기존 메인 서버에 사용했던 레디스를, 다른 서버에서 관리하는 로직을 개발하려고 했습니다. 당연히 메인 서버에서 설정한 레디스 설정을 그대로 사용하여, 필요한 기능을 구축했습니다.
개발 완료 후에 선임 개발자에게 "메인 서버와 같은 동일한 설정을 하면 과연 작동할까요? 작동하지 않을까요? 각각의 이유를 생각하면 좋겠어요."라는 질문을 받았습니다. 🫥🫥
질문은 오늘 포스팅할 "VPC, subnet 및 보안 그룹에 대한 개념을 갖고 있나요?"라는 의도였고, 저는 당당히 몰랐습니다. 😎
그래서 이번 기회가 아니면, 한 동안 다시는 공부하지 않을 저를 알기에,, 😊
하나부터 열까지 내용을 차근차근 적어 내려가면서 스터디를 할 생각이에요.
VPC는 아마존에서 제공하는 가상 네트워크 서비스로, 가상 네트워크에서 리소스를 시작하고 관리할 수 있어요.
위와 같이 VPC가 없다고 가정할 때, EC2 인스턴스들이 복잡하게 연결되고, 인터넷과 연결되어 있습니다.
위의 구조의 문제가 무엇일까요? 🤔
구조가 너무 복잡하고, 새로운 인스턴스를 추가될 때마다, 모든 인스턴스를 수정해야 하는 번거로움이 생깁니다.
위는 VPC를 적용한 그림입니다. VPC별로 네트워크를 구성하면서 복잡도를 낮췄습니다. 각각의 VPC에 따라 IP 주소 범위, 서브넷, 라우터를 독립적으로 정의할 수 있습니다. 그리고 각각의 보안도 VPC 마다 개별 설정이 가능합니다.
VPC(Virtual Private Cloud)
VPC를 구축하기 위해서는 VPC의 아이피 범위를 "사설 IP" 대역에 맞추어 구축해야 합니다.
지금 제가 사무실에서 사용하고 있는 IP는 건물 내에서만 접근이 가능한 IP이에요. 즉 외부에서는 해당 IP로 접근이 불가능하죠.
그러므로 제가 사무실에서 사용하고 있는 IP를 "사설 IP"라고 하고, 외부에서 건물에 접근 가능한 IP를 "퍼블릭 IP"라고 합니다.
한번 설정된 IP대역은 수정할 수 없으며, 하나의 리전에 종속됩니다. 각각의 VPC는 완전히 독립적이기 때문에 VPC 간 통신을 원한다면 VPC 피어링 서비스를 고려해야 해요.
간단하게 프로젝트를 만들고 하는 용도이면, 기본적으로 생성된 VPC를 사용하면 됩니다. 기본 VPC를 사용하면 자체 VPC 및 서브넷을 생성 없이, EC2 리소스를 바로 시작할 수 있습니다.
서브넷(subnet)
기본 VPC 또는 따로 VPC를 만들었다면, 이제 서브넷을 만들 수 있습니다. 기본 VPC를 사용했다면, 해당 VPC와 연결된 서브넷을 사용하면 돼요.
서브넷은 VPC를 세분화하는 과정이에요. 서브넷은 VPC보다 작은 단위이기 때문에 당연히 IP범위가 더 작은 값으로 할당됩니다.
각각의 서브넷은 가용영역 안에 존재하며, 서브넷 안에 RDS, EC2와 같은 리소스들을 위치시킬 수 있습니다.
프라이빗 서브넷은 외부에서 접근할 수 없으며, 주로 데이터베이스 서버나 애플리케이션 서버와 같은 민감한 정보를 저장하거나 처리하는 리소스에 배치를 합니다. 해당 서브넷은 외부에 직접 노출되지 않습니다. 그렇기 때문에 외부에서 접근해야 하는 경우이면, NAT 게이트웨이나 프락시 서버를 통해 간접적으로 접근할 수 있습니다.
라우팅 테이블(Routing Table)/ 라우터(Router)
네트워크 요청이 발생하면 데이터는 라우터로 향하게 됩니다. 라우터는 목적지이고, 라우팅 테이블은 목적지에 대한 이정표로, 서브넷이 트래픽을 보내는 방법을 결정하는 데 사용됩니다. 즉, 네트워크 요청은 각각 정의된 라우팅 테이블에 따라 작동합니다.
라우팅 테이블은 172.31.0.0/16 VPC안의 네트워크 범위를 갖는 네트워크 요청은 로컬에서 찾도록 되어 있습니다. 하지만 그 외에 외부로 통하는 트래픽을 처리할 수 없습니다. 이때 인터넷 게이트웨이를 사용합니다.
인터넷 게이트웨이(Internet Gateway)
인터넷 게이트웨이를 통해서 VPC와 인터넷을 연결이 가능해집니다. 서브넷 B의 라우팅 테이블에서는 0.0.0.0/0으로 정의되어 있는데, 모든 트래픽에 대하여 igw(internet-gateway) a로 향하라는 뜻입니다. 라우팅 테이블은 가장 먼저 목적지의 주소가 172.31.0.0/16에 매칭되는지를 확인한 후 매칭되지 않는다면 igw-a로 보냅니다.
인터넷 게이트웨이는 퍼블릭 서브넷으로 연결이 가능합니다.
네트워크 ACL과 보안그룹
네트워크 ACL과 보안 그룹은 인바운드 트래픽과 아웃바운드 트래픽의 보안 정책을 설정할 수 있어요.
보안 그룹은 모든 허용을 차단하도록 기본 설정되어 있으며, 필요한 설정은 허용해야 합니다. 네트워크 ACL과는 달리 각각의 보안 그룹은 별도의 트래픽을 설정할 수 있으며, 이는 서브넷에도 설정할 수 있습니다. 또한 각각의 EC2 인스턴스에도 적용할 수 있어요.
네트워크 ACL은 모든 트래픽을 기본 설정되어 있기 때문에 불필요한 트래픽을 막도록 적용해야 합니다. 서브넷 단위로 적용되며, 리소스 별로는 설정할 수 없습니다. 만약 네트워크 ACL과 보안 그룹이 충돌한다면, 보안 그룹 설정이 우선순위가 높기 때문에 보안 그룹 설정을 따르게 됩니다.
'DevOps > AWS' 카테고리의 다른 글
[AWS] AWS 보안 그룹 설정과 원본(Source) 개념- 컴도리돌이 (0) | 2024.11.06 |
---|---|
[AWS][Route 53] DNS 레코드에 대해서 - 컴도리돌이 (0) | 2024.08.08 |
[AWS] 과금 청구, 넌 얼마까지 청구 되어봤니?(feat. 1941만원, 해킹, 과금 면제) - 컴도리돌이 (52) | 2022.06.13 |