Always-Try(정보보안 및 일상)

AWS DNA - 1주차 Peak Load Control with Serverless - 2/3 본문

AWS

AWS DNA - 1주차 Peak Load Control with Serverless - 2/3

Always-Try 2021. 9. 13. 22:45
본 포스팅은 AWS KOREA에서 제공해는 교육인 AWS DNA에서 진행한 Hands On Labs 를 요약한 내용입니다. 단, 서비스 소개에 대한 내용은 AWS 공식 docs를 참고해서 별도로 작성했습니다.
처음 사용해보는 서비스들도 많아서 하나의 Hands On Labs 세션 당 총 3편으로 나눠서 포스팅 할 예정입니다.

 

지난 포스팅 2021.09.13 - [AWS] - AWS DNA - 1주차 Peak Load Control with Serverless - 1/3

에 이어 Peak Load Control with Serverless 실습 과정 포스팅을 계속 진행한다. 까먹을까봐 다시 실습 목표를 적어둔다.

  • 실습 목표: 라이선스 또는 외부연동 등의 여러 요소로 인해 갑작스러운 트래픽 증가를 처리하기 어려운 Legacy 애플리케이션에 사이트에 도착하는 순서대로 번호표를 발급하고 사용자를 대기하도록 한 다음 순서대로 입장시킬 수 있는 환경을 구성한다.

 

 

3) 사용자가 받을 토큰(대기표) 저장소를 추가해보자.

  • DynamoDB
    • 서비스 개요
      • Amazon DynamoDB는 완벽하게 관리되는 NoSQL 데이터베이스 서비스로서 원활한 확장성과 함께 빠르고 예측 가능한 성능을 제공
    • 보안 고려 사
      • 저장 데이터 암호화
        • KMS와 연결하여 데이터 암호화 가능
      • 전송되는 개인 정보 보호
        • AWS Site-to-Site VPN 또는 AWS Direct Connect 를 통해 지원 가능
      • 로깅
    • 실습 시 활용 방안
      • 번호표(token)를 관리하는 테이블 
      • 현황 관리 테이블 (현재 사이트를 사용중인 접속자, 대기중인 접속자가 얼마나 되는지에 대한 통계)

 

 

4) 사용자가 브라우저에서 사이트에 접속해 있는지 확인하기 위한 heartbeat를 적용

  • S3
    • 서비스 개요
      • 인터넷 스토리지 서비스
    • 보안 고려 사항
      • 데이터 암호화
        • 서버 측 암호화
          • AWS KMS(Key Management Service)를 이용(SSE-KMS)
          • SSE-KMS용 S3 버킷 키를 사용 
            • KMS로 가는 트래픽을 줄여 KMS 요청 비용 감소 가능
          • 고객 제공 암호화 키(SSE-C)로 서버 측 암호화를 사용하여 데이터 보호
            • 클라이언트가 키를 관리하며, 암호화 키 분실 시 데이트 복구 불가
        • 클라이언트 측 암호화 (사용자가 암호화 프로세스, 키, 도구를 통해서 암호화 한 데이터를 S3에 전달)
          • AWS KMS에 저장된 CMK 사용
          • 애플리케이션 내에 저장된 키 사용
        • 전송 데이터 암호화
          • AWS Site-to-Site VPN
          • AWS Direct Connect
          • AWS PrivateLink 
      • 권한 & 액세스 제어
        • IAM 단에서 제어
        • 버킷 정책에서 제어
        • ACL을 사용한 계정, 그룹 액세스 관리
        • CORS(교차 오리진 리소스 공유) 사용
          • Request의 헤더의 값을 이용한 제어
        • 퍼블릭 액세스 차단
        • 액세스 포인트 사용
          • 액세스 포인트를 사용하면 객체에 대한 작업만 수행 
      • 로깅
    • 실습 시 활용 방안
      •  CloudFront에서 S3를 Origin으로 지정을 하고 있고, S3 버킷에 있는 정적 컨텐츠를 호스팅 

 

  • API Gateway
    • 서비스 개요
      • 규모와 관계없이 REST 및 WebSocket API를 생성, 게시, 유지, 모니터링 및 보호하기 위한 AWS 서비스
        • 백엔드 HTTP 엔드포인트, AWS Lambda 함수 또는 기타 AWS 서비스를 노출하기 위한 RESTful 애플리케이션 프로그래밍 인터페이스(API)의 생성, 배포 및 관리
        • AWS Lambda 함수 또는 기타 AWS 서비스를 노출하기 위한 WebSocket API의 생성, 배포 및 관리
        • 프런트 엔드 HTTP 및 WebSocket 엔드포인트를 통해 노출된 API 메서드 호출
    • 보안 고려 사
      • 데이터 암호화
        • REST API에 대한 캐싱을 활성화하도록 선택한 경우 캐시 암호화를 활성화
        • Amazon API Gateway를 통해 생성된 API는 HTTPS 엔드포인트만 제공하며, TLS 버전 선택 가능
          • WebSocket API 및 HTTP API는 TLS 1.2만 지원
      • 인터네트워크 트래픽 개인 정보
        • Amazon Virtual Private Cloud(VPC)에서만 액세스할 수 있는 프라이빗 REST API를 생성 가능
      • ID 및 액세스 관리
        •  IP 주소의 범위를 지정
        • 지정된 날짜 또는 시간 범위 내에서만 요청을 허용
        • SSL 또는 MFA를 사용해야 하는 조건 작성
        • 기타 IAM으로 액세스 관리
      • 로깅
    • 실습 시 활용 방안
      • API Gateway를 통해 람다 함수를 호출. 람다 함수는 브라우저에서 주기적으로 호출되는 heartbeat 요청을 받아서 DynamoDB에 있는 토큰의 heartbeatTime을 갱신
        • API Gateway는 API를 처리하기 위한 Endpoint를 가지고 있고 이를 통해서 heartbeat를 업데이트하는 Lambda 함수가 호출됩니다.
        • CloudFront에서 API Gateway의 Endpoint를 Origin으로 지정하여, 이용자가 바로 API Gateway로 붙지 않고 CloudFront로 접근하도록 설정

 

  • Lambda
    • 서비스 개요
      •  서버를 프로비저닝하거나 관리하지 않고도 코드를 실행할 수 있는 컴퓨팅 서비스
    • 보안 고려 사
      • 데이터 보호
        • 환경 변수를 사용하여 KMS를 사용해 데이터 암호화
      • ID 및 액세스 관리
        •  IP 주소의 범위를 지정
        • 지정된 날짜 또는 시간 범위 내에서만 요청을 허용
        • SSL 또는 MFA를 사용해야 하는 조건 작성
        • 기타 IAM으로 액세스 관리
      •  로깅
    • 실습 시 활용 방안
      • API Gateway를 통해 람다 함수를 호출. 람다 함수는 브라우저에서 주기적으로 호출되는 heartbeat 요청을 받아서 DynamoDB에 있는 토큰의 heartbeatTime을 갱신

 

 

Comments