[10분 테코톡] 젠슨의 AWS Private Subnet
- VPC는 클라우드 내 사용자 정의 가상 네트워크로, IP 주소 범위(CIDR 블록)와 서브넷 마스크를 통해 사용 가능한 IP 수를 결정합니다. 🌐
- 서브넷은 VPC의 IP 범위를 논리적으로 분할하여 특정 영역에 할당하는 개념이며, 각 서브넷은 중복되지 않는 IP 범위를 가집니다. 🧩
- Public Subnet은 라우팅 테이블이 인터넷 게이트웨이와 연결되어 외부 통신이 가능하지만, Private Subnet은 인터넷 게이트웨이와 단절되어 외부에서 직접 접근할 수 없습니다. 🔒
- Private Subnet은 데이터베이스나 애플리케이션 서버와 같은 민감한 자원을 외부 위협으로부터 보호하기 위해 사용되며, 직접적인 외부 노출을 막아 보안을 강화합니다. 🛡️
- 외부 클라이언트가 Private Subnet의 자원에 접근하려면, 로드 밸런서와 같은 Public IP를 가진 중간 매개체를 통해 요청을 전달해야 합니다. ↔️
- Private Subnet 내부의 인스턴스가 외부 API(예: 결제, OAuth)를 호출해야 할 경우, NAT Gateway를 사용하여 Private IP를 Public IP로 변환한 후 인터넷 게이트웨이를 통해 통신합니다. 📞
- 개발자가 Private Subnet에 접근하는 방법으로는 Bastion Host와 Session Manager 두 가지가 있습니다. 🧑💻
- Bastion Host는 Public Subnet에 위치한 보안용 서버를 통해 Private Subnet으로 SSH 접속하는 방식이며, 저렴하지만 pem 키 관리와 SSH 포트 개방으로 인한 보안 취약점이 있습니다. 🔑
- Session Manager는 AWS 서비스로, pem 키나 Bastion Host 없이 안전하게 EC2에 접속할 수 있으며, SSM 에이전트와 VPC Endpoints 또는 NAT Gateway를 통해 연결됩니다. 🚀
- Session Manager는 SSH 포트를 닫을 수 있어 Bastion Host보다 보안성이 높지만, VPC Endpoints나 NAT Gateway 사용으로 인해 비용이 더 들고 초기 설정이 복잡할 수 있습니다. 💰