AWS 아키텍쳐 구현 경험

AWS 클라우드 아키텍쳐 1.1 버전 구현

뭉크테크 2024. 10. 24. 01:03

소개

  • 그동안 배운 것들을 기반으로 클라우드 아키텍쳐를 구축해보았다. 물론 온전히 하나하나 내 머리속에서 가져온 것이 아닌, 여러 자료 및 영상들을 참고하였음을 알린다. 요즘 클라우드 보안 관련해서 멘토링 수업을 듣고 있다.
  • 이번 주차가 3주차인데, 이번주차는 IAM, S3, EC2를 기반으로 아키텍쳐를 구현해보는 것이다. 물론 난 이것만을 활용하지 않고, CloudFront나 AWSRoute53 등도 따로 추가해보았다.
  • 참고로 이 글의 카테고리는 단순 정보 전달이 아닌, 온전히 내 경험 및 생각을 남기기위한 글이다. 맞고 틀리고를 떠나 나 자신의 오류를 찾아가는 카테고리이다.
  • 나아가, AWS 클라우드 아케텍쳐 1.1 버전이라고 한 이유는 나의 첫 아키텍쳐라는 의미의 1과 그것의 초안 버전인 0.1 을 조합하여 1.1 이라고 설정하였다.

아래는 듣고 있는 멘토링 관련 카페이다.

 

https://cafe.naver.com/itscholar

 

정보보안전문가 취업카페 스칼라 : 네이버 카페

비전공자 전문IT교육, 정보보안전문가, 보안을 아는 개발자, AI 양성교육, IT기술리더, 창업가 양성

cafe.naver.com

 

 

 

 

IAM, S3, EC2 등을 이용한 클라우드 아키텍쳐

개요

  • S3를 내용물을 조회하는 Node.js 어플리케이션 EC2 웹서버를 https://httpstest.sjmweb12.com/ 이라는 URL을 통해 사용자가 접속할 수 있도록 구성한 아케텍쳐이다.
  • 아래는 참고한 아키텍쳐 사례들이다. 

https://docs.aws.amazon.com/whitepapers/latest/web-application-hosting-best-practices/an-aws-cloud-architecture-for-web-hosting.html          

 

An AWS Cloud architecture for web hosting - Web Application Hosting in the AWS Cloud

Thanks for letting us know this page needs work. We're sorry we let you down. If you've got a moment, please tell us how we can make the documentation better.

docs.aws.amazon.com

 

https://blog.claydesk.com/how-to-use-aws-route-53/         

 

How To Use AWS Route 53

How To Use AWS Route 53. Amazon Route 53 is a highly available and scalable Domain Name System (DNS) web service.

blog.claydesk.com

 

https://aws.amazon.com/ko/blogs/compute/re-platform-java-web-applications-on-aws/

 

How to re-platform and modernize Java web applications on AWS | Amazon Web Services

This post is written by: Bill Chan, Enterprise Solutions Architect According to a report from Grand View Research, “the global application server market size was valued at USD 15.84 billion in 2020 and is expected to expand at a compound annual growth ra

aws.amazon.com

 

 

나아가 아키텍쳐 구현시 참고했던 영상들이다.

https://www.youtube.com/watch?v=WS2n8mkrFaY&t=249s

CloudFront, AWS Route53, AWS Certificate 참고 영상

https://www.youtube.com/watch?v=vOI_oAP_j04&t=597s

EC2 S3 접근 권한 관련 영상

 

솔직히 말하면, 위 두 개의 영상이 제일 도움이 되었던 것은 사실이다. 나아가 이론만 듣고, 대충 무슨 기능인지만 아는 상태에서 이렇게 영상으로 실습해보고, 이 둘을 조합하여 나만의 아키텍쳐를 구현해본 것이 응용력을 키우는데 있어 매우 좋은 경험이었다.

cloud security 수업 3주차.drawio
0.01MB

 

위 파일은 해당 아키텍쳐 관련 drawio 파일이다.  

 

 

각 구성 요소 설명

 

사용자단에서 AWS CloudFront의 대체 도메인을 이용하여 접속을 시도한는 사진

 

  • 사용자가 웹서버를 https://httpstest.sjmweb12.com/ 이라는 도메인을 통해 접속할 수 있도록 제일 먼저 ec2 웹서버 IP 에 대한 도메인(b.sjmweb12.com)을 AWS Route53에 등록한다. 이때 해당 도메인은 CloudFront에 대한 원본 도메인(b.sjmweb12.com)이다.
  • 이 원본 도메인을 CloudFront에서 가리키도록 설정해주며, CloudFront로 사용자가 접속시 https로 통신할 수 있도록 AWS ACM에서 해당 도메인에 대해 인증서를 생성해주도록한다.
  • https://httpstest.sjmweb12.com/ 로 접속할 수 있도록 CloudFront의 대체 도메인 네임을 httpstest.sjmweb12.com로 설정하고, Route53에서 sjmweb12 호스트 영역에서 CloudFront의 원본 도메인 네임을 별칭으로 설정하는 레코드 네임, 즉 httpstest.sjmweb12.com 을 설정해주도록 하였다.
  • CloudFront는 웹 정적컨텐츠를 엣지로케이션에 캐싱하여 서버에 부담을 줄이고 응답 속도를 향사시키기위해 사용하였습니다. 추후 AWS WAF와도 연동시키기 위함도 있다.

 

실제 EC2 웹서버를 https 프로토콜을 이용한 URL로 접속한 사진

 

S3 Ful Access 권한을 받은 EC2가 S3에 접근한 것을 표현한 부분

 

  • node.js 어플리케이션이 S3 버킷의 내용물을 확인할 수 있도록 IAM 역할(S3FullAccess) 권한을 생성하여 EC2 서버에 연동시켰다.

SSH로 EC2 웹서버에 접속하여 권한을 제대로 받았는지 확인한 사진

  • aws s3 ls –region us-east-1: us-east-1 리전 s3 버킷의 내용물을 나열하라는 명령어를 통해 ec2 서버가 IAM 역할(S3FullAccess)에 연동된 것을 확인할 수 있었고,
  • node test.js: 그로 인해 ec2 서버안에서 실행되는 node.js 어플리케이션도 s3 접근하여 내용물을 나열할 수 있는 것도 확인해볼 수 있다.

 

이 내용을 단순 2page로 요약한 보고서는 다음과 같다.

Cloud security 3주차 과제(신재민, 초안).docx
0.20MB

 

 

그러나

이 아키텍쳐 및 보고서에는 내가 간과한 것들이 매우 많았다.

  • 첫번째, 단순히 구현에만 집중하다보니 클라우드 보안을 배워놓곤 IAM 최소 권한 원칙, S3 VPC 엔드포인트를 이용한 내부 통신 등을 고려하지도 써먹지도 않았다.
  • 두번째, 각 아키텍쳐의 구성요소에 대한 설명이 필요한데, 나는 단순히 내가 이렇게 구현을 해봤고, 하는 방법만을 나열하였다. 글 제목과 내용이 전혀 맞지 않았다.
  • 세번째, 사진의 배치가 맞지 않아 글자들이 그림 옆으로 넘어온다는 경우도 있다고 지적받았다.
  • 네번째, 사진에 대한 설명이 없는 것 또한 지적받았다. 

 

다음 포스팅은 이를 수용한 버젼을 바탕으로 쓰도록 하겠다. 아래 파일은 나름 보안을 고려하여 설계한 아키텍쳐이다. 다음 포스팅은 이 수정본을 기반으로 작성하도록 하겠다.

cloud security 수업 3주차 아키텍쳐 수정본.drawio
0.02MB

 

아키텍쳐 수정본 미리보기 사진