Kim Jinung 2023. 7. 19. 19:49

 

2009년 전까지는 클라우드 상에 다른 사용자들과 동일한 네트웍을 사용하고 있었다. (EC2 클래식)

2009년 이후 VPC(Virtual Private Cloud) 서비스가 적용되면서 다른 유저와 완전히 격리된 환경에서 클라우드 서비를 이용할 수 있게 되었다.

 

그러므로 VPC는 AWS를 사용할 때 첫 번째 관문이 된다. 

 

VPC를 사용해서 외부에서 접속가능한 네트웍과 그렇지 않은 네트웍을 분리할 수 있게 된다.

 

1. VPC개념에 익숙해지기

2. 기본 VPC 설정 살펴보기

 

 

1. VPC는 CIDR 방식으로 네트웍 범위를 정한다.(방화벽 설정도 마찬가지) 

2. RFC 1918 룰을 따르는 걸 권장한다.

 

 

그다음에 라우팅 테이블 설정한다.

VPC내부에서 사용하는 IP랑 게이트웨이 IP를 분리해서 사용한다.

다음으로 방화벽으로 두 가지 기능을 제공한다.

1. Network ACLs: Stateless firewalls (서브넷 단위로 사용 가능), 설정이 어렵다 나가는 패킷까지 설정해줘야 하니까

2. Security Group: Statefull firewalls (웹서버만 열고 백엔드는 웹서버에만 열어둔다), 설정이 간단하다 설정을 기억하니까

 

그런데 백엔드에서는 외부 인터넷을 사용못하니까 NAT gateway를 사용해서 웹 프론트엔드 VPC에 접속해서 인터넷에 접속할 수 있다.

 

 

주의할 점은 s3는 vpc내에 존재하지 않는다. 이때 아웃바운드 룰을 설정하는 게 까다롭기 때문에 VPC endpoint를 설정해서 이를 통해 프라이빗하게 s3에 접근할 수 있다.ex) 앱에서만 접근 가능하고 외부에서는 접속 못하게 할 수 있다.

 

해당 로그는 VPC Flow logs에서 확인 가능

 


AWS 계정 초기 설정

 

1. AWS 계정 생성 시 기본 적으로 VPC, Internet gateway, subnet 4개가 생성되어 있다.

2. 자동으로 생성 된 subnet을 모두 제거한다.

3. front, backend, data 세 개의 subnet을 생성한다. 이때 front는 auto public ip생성을 true로 걸어준다. 

4. route table을 생성한다. (default rtb의 igw는 닫고, (프론트는 anywhere, backend는 front에서만, data는 backend에서만 돌게 한다.)

4. Secutiry policy를 생성한다. (프론트는 anywhere, backend는 front에서만, data는 backend에서만 돌게 한다.)

5. front 서브넷을 가지고 NAT 게이트웨이 생성한다. Backend, Data는 해당 NAT를 가지고 인터넷에 접속할 수 있게 하고 , 프라이빗 서브넷을 유지한다.

 

외부에 허용할 웹 서비스는 front 시큐리티 그룹으로 넣어준다.

백엔드 서비스는 backend 시큐리티 그룹으로 넣고, 깃헙 리포지토리 등을 이용하기 위해서 nat 게이트웨이 사용

데이터 플랫폼 서비스는 backend api에서 접근만 허용한다. 역시 nat 게이트 웨이 사용하도록 하고 프라이빗 서브넷으로 막는다.

 

DB는 운영계 DB는 백엔드 서브넷으로, 빈로그로 복제할 디비는 데이터 서비스로 넣는다.