본문 바로가기

Cloud/AWS

SA Project (2) / VPC 통제 - 보안그룹, 네트워크 ACL, 라우팅 테이블

  • 이전 포스트에서 인터넷 게이트웨이를 생성하는 것까지 했고, 이어서 라우팅 테이블을 설정한다.
  • VPC 통제 3요소인 보안 그룹, 네트워크 ACL, 라우팅 테이블 등을 설정한다.
  • 라우팅 테이블로 경로제어, 보안그룹과 네트워크 ACL로 접근제어

 


경로제어: 라우팅 테이블 생성

Q. 라우팅 테이블이 어떻게 구성되어야할까

Q. 가용영역별로 생성하는지, public/private별로 생성하는지가 궁금

 

라우팅 테이블은 서브넷 또는 게이트웨이의 네트워크 트래픽이 전송되는 위치를 결정한다.

따라서 인스턴스말고 서브넷에 라우팅테이블이 붙어있음!

라우팅 테이블은 서브넷에 붙는다. 네트워크 ACL도!
외부 인터넷을 VPC로 들여오는 라우팅 테이블 생성

 

기본적으로 데이터베이스 등이 있는 private 서브넷에는 인터넷 게이트웨이를 연결하면 안 된다.

외부 클라이언트는 프라이빗 서브넷에 직접 접근할 수 없고, 퍼블릭 서브넷은 프라이빗과 서로 통신할 수 있다. 퍼블릭과 프라이빗 서브넷 사이에서의 수행결과를 퍼블릭 서브넷이 사용자에게 반환한다.

프라이빗 인스턴스가 인터넷에 접속하기 위해서는 NAT 게이트웨이를 경유한다.

NAT 게이트웨이는 public/private 유형이 있는데 public 유형은 현재 내가 구축하고자하는 경우처럼, private subnet의 인스턴스가 인터넷 접속을 해야할 때 사용하고, private 유형은 인터넷 접속과 상관 없이 소스 주소 변환의 목적으로만 사용한다.

 

따라서 나도 위의 외부 인터넷 연결용 라우팅 테이블을 public 서브넷에만 연결해주었다.


접근제어: 보안그룹, 네트워크 ACL 생성

기본 라우팅 테이블 내용(인터넷 접속 안 됨, 내부 통신용 라우팅만 존재)
인터넷 게이트웨이와 통신되도록 추가

 

  • 보안 그룹(SG)의 연결(통제)대상은 네트워크 인터페이스(ENI), 네트워크 ACL의 연결(통제)대상은 서브넷

오픈스택 쓸 때도 보안그룹이라는게 있어서 VM 생성할 때마다 보안그룹을 할당해줬는데, 네트워크 ACL은 생소하다!

AWS를 공부하면서 느낀 점이, 직접 구축하면서 배워야 각 요소 간의 관계를 더 명확하게 알 수 있다.

VPC > 보안 탭안에 이렇게 네트워크 ACL, 보안 그룹이 들어있다.

네트워크 ACL
보안그룹

 

보안그룹, 네트워크 ACL 모두 인바운드/아웃바운드 규칙이 있지만, 보다시피 네트워크 ACL는 서브넷에 붙어있다. 보안그룹은 윗 사진 상으로는 알 수 없지만 아래 사진을 보면 인스턴스에 붙어있다.

 


인스턴스 생성

인스턴스 생성 시 VPC를 잘 확인해줘야한다.

생성하고자하는 VPC로 설정해줘야 함

또한 퍼블릭 서브넷의 인스턴스 생성 시 생성과 동시에 자동으로 퍼블릭 ip가 할당되도록 할 수 있고, 그렇지 않으면 나중에 따로 탄력적 IP를 할당받아 직접 인스턴스에 연결해줘도 된다.

하지만 탄력적 IP와 퍼블릭 IPv4는 다른 개념이므로 그 차이를 알아둬야 한다. (참고)

 

탄력적 IP는 고정 IP라서, 인스턴스를 중지했다가 다시 실행해도 IP 주소가 바뀌지 않는다.

 

public subnet의 bastion host 인스턴스들에 할당해줌
그럼 퍼블릭 IPv4의 주소도 탄력적 IP 주소로 바뀌는 것을 확인할 수 있음

 

터미널로 접속도 해봄 짱 신기.. 기분이 마치 hello world 그 자체


ALB 생성

로드밸런서도 종류가 여러가지다

 

GLB는 라우팅 테이블을 조회하지만, ALB는 라운드로빈을 기반으로 application 수준의 리퀘스트를 처리하기 때문에 테이블과 아예 별개의 개념인 것 같다. 라우팅 테이블을 두어 들어오는 트래픽을 public으로 가도록 유도해야하지 않을까?

 

ALB 로드밸런서를 생성하고, 밸런싱할 그룹, 즉 대상 그룹을 설정해준다.

친절한 설명까지
대상그룹 지정! 없으면 생성

 

대상그룹 생성 시 인스턴스로 할 수도 있고, IP 주소나 그 외의 여러방법으로 생성할 수 있다.

나는 public 인터넷을 타고 들어오는 트래픽을 내부 private subnet으로 보내줄 것이므로 이름 뒤에 'private-server'를 붙여줬다.

http, https 용으로 두 개 생성완료

 

주의!

로드밸런서 생성 전에 로드밸런서를 두고자 하는 서브넷이 퍼블릭 서브넷일 경우 해당 서브넷에 인터넷이 연결되어있어야한다. 따라서 퍼블릭 서브넷의 라우팅 테이블을 설정(인터넷 게이트웨이와 연결되도록)해주고 나서 생성해야한다.

그렇지 않으면 아래와 같이 경고가 뜸


🔗 참고 링크

 

로드 밸런서 서브넷 및 라우팅 - AWS 규범적 지침

이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오.

docs.aws.amazon.com

 

0부터 시작하는 AWS 공부 - 3 Tier 구축 1편 - 구축 계획 & VPC & Bastion Host

AWS 3 Tier 구축하기 1편 - 구축 계획 / 네트워크 구축 / Bastion Host 구축

velog.io

 

Building a 3-tier web application architecture with AWS

Intro

medium.com

 

[AWS] private 백엔드 서버(private ip)에 로드밸런싱 설정하는 법

Question private 백엔드 서버(private ip)에 로드밸런싱 설정하는 법을 알고 싶습니다. Answer 로드밸런서와 프라이빗 인스턴스를 연결하여 외부와 통신하는 방법: 먼저, 로드밸런서의 체계를 [인터넷

support.bespinglobal.com

 

[왕초보 탈출 AWS 매뉴얼(5)] ALB & Target Group 생성

안녕하세요 :) 해당 매뉴얼을 끝까지 따라오시면, 아래와 같은 네트워크 구성과 리소스들을 생성하실 수 있습니다. 오늘은 매뉴얼4에 이어, ALB를 생성하고 Target group을 생성할 예정입니다 ~ 최대

minjii-ya.tistory.com

 

Linux Bastion Hosts on AWS - 솔루션

 

aws.amazon.com

 

 

[AWS] Private EC2 SSH 접근

Bastion Host를 통해 Private Subnet EC2에 접속하는 방법 구성도입니다. Bastion Host를 통해 Private 영역에 있는 EC2로 접속할 수 있습니다.먼저 EC2에 접속할 수 있는 네트워크 구성을 해줘야 합니다.VPC 구성S

velog.io