VPC Endpoint & NAT Device & MetaData


VPC 끝포인트 설정을 통해 안전한 통신 환경을 제공해보자

VPC 엔드포인트

VPC 엔드포인트가 왜 필요할까?

AWS에서 제공되는 대부분의 서비스에 접근하려면, 퍼블릭 네트워크 통신이 필요하다.
하지만 금융 서비스처럼 강력한 보안 요건을 충족하려면, 격리된 프라이빗 서브넷 내에
자원이 생성 되어야 하며, 인터넷 통신이 되지않는 프라이빗 서브넷이 외부 퍼블릭
네트워크 통신이 가능하도록 만들어 주는 것이 VPC 엔드포인트이다!

Endpoint 유형

VPC 엔드포인트의 유형

크게 종류는 3가지로 나뉜다.

  1. 게이트웨이 엔드포인트 - AWS S3 , AWS DynamoDB
  2. 인터페이스 엔드포인트 - 그 외 나머지 모든 AWS 서비스
  3. 인터페이스 엔드포인트 서비스 - Custom VPC와 연결

3가지로 나뉘지만 대부분은 위쪽 2개를 쓴다.
게이트웨이 엔드포인트가 S3, DynamoDB 와 연결되고,
그 외 대부분의 AWS 서비스는 인터페이스 엔드포인트를 쓴다 라고 알면 된다.

Endpoint 특징

  1. 보안 측면 강화(프라이빗 연결을 통해 외부 노출 X)
  2. 서비스 제약 (연결 대상 서비스는 동일 리전에 속한 서비스만 가능)
  3. 권한 제어 (AWS IAM기능을 통한 정책 수립)

Endpoint 가격정책

가격은 AWS 정책을 따져보고, 분석 해 봤을 때 2가지 결론이 나온다.

  1. 게이트웨이 엔드포인트(S3, DynamoDB)는 사용은 무료이며 트래픽 비용이 NAT Gateway 보다 저렴하니 무조건 사용하자
  2. 인터페이스 엔드포인트는 일반적으로 NAT Gateway 보다는 비용이 나오지만 안정성과 보안성을 제공하니 사용을 권장

Meta Data ?

Meta Data

메타데이터(Metadata)는 객체에 대한 키와 값 Key & Value에 대한 집합 데이터.
EC2 인스턴스의 정보를 갖고 있어, AWS 서비스 사용 시 혹은 EC2 설정 자동화 등에 활용

ex) Django의 setting.py 파일에 config setting 값을 json파일로 따로 저장해두고, aws s3에 대한 access_key_id 와 secret_access_key, Bucket 이름 등을 미리 저장해두고 Build 시킬 때, 읽어 오는 형식


실습

VPC 엔드포인트 실습예제 아키텍쳐

기본 구성은 Cloudformation 으로 미리 준비된 yaml 파일을 생성!

Public Instance->S3 접근하면 대역폭 내에서 매번 바뀌는 S3 IP를 볼 수 있다

Curl 169.254.169.254(자기 자신) 명령어로 Meta Data 확인하기
(CF로 설정할때 스크립트로 Linux로 변수 선언을 해두어서 뜨는 것임)

1
2
3
4
5
6
AZ=`curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone`
IP=`curl -s http://169.254.169.254/latest/meta-data/local-ipv4`
yum install -y httpd
service httpd start
chkconfig httpd on
echo "<html><h1>Hello from Web Server - Region ( "$AZ" ) - Private IP ( "$IP" )</h1></html>" > /var/www/html/index.html

AWS 콘솔에서 EndPoint 생성하기!

VPC -> 엔드포인트 -> 엔드포인트 생성하기 탭에서
원하는 서비스 검색 + VPC 와 서브넷 구성을 눌러주면 엔드포인트가 생성되고
프라이빗 서브넷에서 퍼블릭 aws 서비스까지 ping을 찍었을 때 응답이 오게 된다!
(dig 는 DNS 서버에서 주소만 가져오는 것, ping이 통신)


출처) Cloudnet@ 팀의 ANOS (AWS Network Online Study 2기 학습 내용)

https://cloudneta.github.io/

댓글