AWS - CloudFront, Cloud 보안, ACM을 활용한 HTTPS 프로토콜 접속
1. CloudFront
1.2. S3 꾸미기
- 도메인의 이름을 버킷의 이름으로 준다.
- ACL을 활성화 : 다른 사용자도 이 객체에 접근하고 데이터를 소유할 수 있도록 만드는 ACL 활성화
- 퍼블릭 엑세스 허용
- s3에서 정적 웹사이트를 만들기 때문에 주소를 알고있는 사람은 누구나 접근 가능하도록 만든다.
- 버킷의 버전 관리를 활성화하여 과거 버킷에 있던 내역을 복구할 수 있도록 만든다.
- 키를 생성하여 접근이 어렵도록 한다.
- 마찬가지로 상파을로 리전에도 s3 버킷을 하나 생성한다.
- 서울리전에 index.html 파일을 업로드 한다.
- "퍼블릭 읽기 엑세스 권한 부여"를 허용하여 전세계 어디에서든 접근 가능하도록 만든다.
- 마찬가지로 images 폴더를 만들고 파일을 하나 업로드하여
- 전세계 어디서든 접근할 수 있도록 만든다.
- 서울 리전 s3의 속성에서 정적 웹 사이트 호스팅 편집을 해준다.
- 이전에 저장한 index.html 파일을 인덱스 문서로 설정하여 정적 웹 사이트를 만든다.
- Route53 서비스에서 서울 리전의 S3의 정적 웹사이트를 엔드포인트로 하여 A 레코드를 생성한다.
- 캐시라는 공간에다가 index,html과 image 파일들을 미리 로드해놓고 그걸 읽어 들여 온다.
- 불필요한 트래픽을 줄이고 웹사이트의 접근을 빠르게 하기 위해서 캐시를 활용한다.
- F5를 눌렀을 때 ctr + F5를 눌렀을 때보다 페이지 로딩 속도가 빠르다. 이때 F5를 눌렀을 때가 캐시에서의 정보를 로딩한 것이다.
- 마찬가지로 상파울로 리전에도 images 폴더와 index.html을 만든다.
- 또한, 상파울로 리전의 정적 웹사이트 호스팅 역시 서울리전과 똑같이 편집해준다.
- 마지막으로 상파울로를 엔드포인트로 하는 레코드를 생성하여 해당 주소로 접근한다.
1.2. AWS Certificate Manager(ACM)
- 해당 도메인으로 접근하는 것만 HTTPS가 가능하다.
- * : yunhyeong.shop으로 끝나는 모든 주소
- 반드시 버지니아 북부 리전에서 만들어야한다.
- 도메인 네임을 인증서로 만드는 과정이다.
- 도메인이 생성된 것을 볼 수 있다.
- 이 도메인 네임을 사용해서 HTTPS 프로토콜을 활용할 예정이다.
1.3 CloudFront 생성
.html. css .js및 이미지 파일과 같은 정적 및 동적 웹 콘텐츠를 사용자에게 더 빨리 배포하도록 지원하는 웹서비스. CloudFront는 엣지 로케이션(서버, 리전이 없는 지역의 소형 데이터 센터)이라고 하는 데이터 센터의 전 세계 네트워크를 통해 콘텐츠를 제공한다. CloudFront를 통해 서비스하는 콘텐츠를 사용자가 요청하면 지연 시간이 가장 낮은 엣지 로케이션으로 라우팅되므로 콘텐츠 전송(Contents Delivery Network; CDN) 성능이 뛰어나다.
- 원본 도메인 : 이전에 S3에서 생성한 정적 웹사이트
- 상파울로에 있는 S3 정적 사이트를 전세계의 엣지 로케이션에 전달
- 원본 엑세스 : 엣지 로케이션을 거치지 않고 원본 S3에 접극 유무 결정
- 프로토콜 정책을 HTTPS and HTTPS로 설정한다.
- 정적 웹사이트를 읽기 권한으로 셋팅(GET, HEAD)
- 대체 도메인 이름을 cdn.도메인으로 설정한다
- ACM을 활용해서 HTTPS 프로토콜 접근을 활성화 한다.
- 처음 사이트 접근했을 때 읽어 들이는 파일을 index.html로 설정한다.
- 레코드를 생성하여 전세계에 cdn.yunhyeong.shop을 배포한다.
2. Cloud 보안
2.1 KeyPair 분실 및 실수로 삭제 시 복구
- 키를 실수로 삭제했다고 가정하고
- 같은 정보의 인스턴스 restore01을 생성한다.
- 이때 새로운 키를 만들어서 restore01 생성시 연결해준다.
- bastion host와 restore01의 볼륨을 분리한다.
- 이렇게 분리한 restore01의 root 볼륨을 bastion host와 연결을 할 예정이다
- 이때, 두 인스턴스의 가용영역은 같아야한다.
- bastion host의 볼륨을 restore01에 연결
- restore01의 볼륨을 bastion host 인스턴스에 연결
- MobaXterm에서 basiton host 서버로 새로 만든 키를 활용해서 접근이 가능하다.
2.2 snapshot 활용하기
- 현재 restore01을 AMI 이미지로 만든다.
- restore02 생성시 새 키페어 생성
- 기존 키는 과감하게 지운다(키를 실수로 지웠다고 가정했기 때문에)
- restore02 생성시 restore01의 AMI를 활용
- AMI는 가용영역에 크게 구애받지 않는다.
- 보안 그룹은 웹 보안 그룹 선택
- food.yunhyeong.shop이라는 restore01과 연결된 도메인 주소를 restore02로 변경해준다.
- 새로운 키로 생성한 restore02는 restore01이 백업된 상태로 food.yunhyeong.shop 도메인 주소를 갖는다.
- 성공적으로 백업이 완료된 것을 볼 수 있다.
2.3 AWS CLI 설치
- restore2의 주소를 활용해서 MobaXterm에 접근
- 이전 키를 지우고 새로운 키를 넣어준다.
3. ACM을 이용한 공인인증서 발급 및 HTTPS 보안 연결
AWS Certificat Manager는 AWS 서비스 및 연결된 내부 리소스에 사용할 공인 및 사설 SSL/TLS(Secure Sockets Layer/ 전송 계층 보안) 인증서를 손쉽게 프로비저닝
3.1 ALB 생성
- acm을 테스트하기 위한 ALB이기 때문에 이름을 my-alb-acm으로 변경한다.
- 가용 영역을 2a, 2c로 설정한다.
- 대상 그룹을 생성한다.
- HTTPS로 리스너를 설정하면 대상그룹은 HTTP(80)으로 받아들인다.
- 대상그룹에 restore02를 넣는다.
- ALB의 리스너는 443이지만 요청을 대상그룹으로 보낸다면 대상그룹은 80포트로 받아 들인다.
- 버지니아 북부에서 만든 ACM은 사용을 못함
- 리전이 분리되어 있어서 그런거 같다.
- 서울 리전에서 사용할 ACM을 만든다.
- ACM 인증서를 요청하고 레코드를 생성한다.
- 버지니아 북부에서 이미 인증/검증이 끝났기 때문에 서울에서 만든 인증서는 바로 발급이 된다.
3.2 Route53 설정
- restore02에 연결된 food.yunhyeong.shop의 ip 주소를 ALB로 바꿔준다.
- https://food.yunhyeong.shop/ 으로 접근하면 정상적으로 화면이 나오는 걸 볼 수 있다.
- ACM인증서를 활용해서 https프로토콜을 이용한 것을 볼 수 있다.