엔지니어 최종 피드백, 문제 파악 및 수정사항 검토

김성훈·2023년 6월 29일
0

프로젝트

목록 보기
3/3

일정 : ~ 7/12

1. JWT를 이용한 인증단계 재설계

문제상황

  • 프론트 뒤에 등장하는 인증단의 설계가 매우 모호함
  • 백엔드와 프론트 인증 단계를 나눈 이유를 명확히 둘 필요가 있음
  • JWT 토큰 등을 사용하여 사용자에게 권한 부여의 필요성

Lambda authorizer - jwt

Lambda authorizer(구 custom authorizer)는 API Gateway 메소드에 대한 접근 제어를 관리하기 위해 제공하는 AWS Lambda 함수입니다.

  • 이 함수는 들어오는 토큰과 사용자에 대한 정보를 검증하고, API 메소드에 대한 접근을 허용하거나 거부하는 IAM 정책을 반환할 수 있습니다.

2. ALB 주소가 그대로 노출되는 문제

문제상황

  • ALB 주소가 노출되면 앞단에서 처리한 인증이 무의미해짐
  • 최종 아키텍처의 ALB의 소통 방식이 Internal facing이 아닌, Internet facing으로 설정 돼있음

인터넷 접속 여부에 따라 Internet Facing, Internal 타입으로 구분

  • Internet Facing ELB : 인터넷 연결 가능, Public/Private IP 사용 가능, 인터넷/VPC내부 접속 가능
  • Internel ELB : 인터넷 연결불가, Private IP만 사용, VPC내부 접속 가능

그 이유는 인증과 실제 비즈니스 로직을 분리해서 또 다른 백엔드를 붙일 수 있도록 합니다. ALB 단에서 주소가 노출이 되면 인증이 크게 의미가 없는 구성이 될 수 있습니다.

ALB에서도 경로 라우팅을 통해 다른 서비스로 연결할 수 있어요, 모놀리틱으로도 구현할 수 있는데 앞에 인증단을 따로 분리한 이유가 무엇이죠?

해결

  1. API Gateway 콘솔에 로그인합니다.
  2. 노출되지 않아야 하는 리소스를 선택합니다.
  3. "기본 경로(Default Paths)" 탭으로 이동합니다.
  4. "Integration Request" 섹션을 찾고 해당 경로에 대한 설정을 클릭합니다.
  5. "Integration type" 옵션을 선택합니다. 일반적으로 "HTTP"를 선택합니다.
  6. "Endpoint URL"에 접근할 내부 DNS 주소를 입력하는 대신, 내부 DNS 주소로 노출되지 않도록 수정합니다. 이를 위해 다음 단계를 따릅니다.

a. AWS 리소스의 적절한 엔드포인트로 연결되는 VPC 내부의 Private DNS 이름을 확인합니다. 예를 들어, ALB의 경우 VPC 내부에서 사용 가능한 DNS 이름을 확인합니다.

b. 이 내부 DNS 이름을 API Gateway의 "Endpoint URL"에 직접 입력하거나 복사하여 붙여넣습니다.

  1. 변경 사항을 저장합니다.

이렇게 하면 내부 DNS 주소가 노출되지 않도록 할 수 있습니다. 대신, API Gateway는 수정된 엔드포인트 URL을 사용하여 VPC 내부의 Private DNS에 연결될 것입니다. 이를 통해 내부 시스템의 보안을 강화하고 내부 DNS 주소의 노출을 방지할 수 있습니다.

3. 클라우드 프론트가 캐싱하는 것은 무엇이죠 ?

CloudFront은 콘텐츠 전송 네트워크(Content Delivery Network, CDN) 서비스로서, 캐싱을 통해 콘텐츠 전송 속도를 향상시킵니다.

캐싱: CloudFront는 콘텐츠를 엣지 로케이션의 캐시 서버에 저장합니다. 최초 요청 시, 캐시 서버는 오리진 서버로부터 콘텐츠를 가져와 캐시에 저장합니다. 이후 동일한 요청이 발생하면, CloudFront는 캐시 서버에서 콘텐츠를 직접 제공하여 더 빠르게 응답할 수 있습니다.

CloudFront의 캐싱을 통해 다음과 같은 이점을 얻을 수 있습니다:

  • 빠른 콘텐츠 전송: 엣지 로케이션에 분산된 캐시 서버를 통해 사용자에게 빠르게 콘텐츠를 전송할 수 있습니다.
  • 부하 감소: 오리진 서버에 대한 요청 부하를 줄일 수 있습니다. 동일한 콘텐츠에 대한 반복적인 요청은 캐시 서버에서 처리할 수 있기 때문입니다.
  • 대역폭 절약: 캐싱을 통해 콘텐츠를 엣지 로케이션에 저장하므로, 오리진 서버와의 대역폭 사용량을 줄일 수 있습니다.
  • 오리진 서버의 안정성 향상: CloudFront의 캐싱은 오리진 서버에 대한 부하를 분산시킴으로써 오리진 서버의 안정성을 향상시킵니다.
    CloudFront에서의 캐싱은 콘텐츠의 유형과 요구사항에 맞게 유연하게 구성할 수 있습니다. TTL 설정을 통해 캐시의 유효 기간을 조절하거나, 특정 요청에 대해서만 캐싱하도록 지정할 수도 있습니다.
profile
I wanna be your good partner

0개의 댓글