개발자

서버리스 백엔드 API 주소 노출

2024년 05월 28일조회 154

안녕하세요, 현재 람다, api gateway 등을 활용해서 서버리스 백엔드 구성을 시도하고 있는 학생입니다! 해커톤처럼 개발했던 서비스를 서버리스로 마이그레이션 하는 과정에서 과금 때문에 api 호출을 신경쓰다가 질문이 생겨 글을 쓰게 되었습니다. 이전까지는 해당 부분을 신경쓰지 않아서 크롬 데브툴에서 네트워크를 확인하면 백엔드 API 주소가 그대로 노출되었습니다. 그런데 서버리스를 고민하다보니 API 주소가 노출되면 API를 직접 과하게 호출하여 서비스를 공격하거나 심지어 페이지를 과하게 새로고침하여 백 API가 과하게 호출될 수도 있어 위험할 것 같습니다. 서버리스면 과금의 문제고 서버풀이어도 서버에 부하가 걸리는 문제가 발생할 수 있을 것 같은데 이런 문제는 어떻게 방지하는지 막상 떠오르지 않아 질문글로 남깁니다. 아직 모르는 것이 많아 여러모로 조언, 충고 부탁드립니다!

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 1

장훈님의 프로필 사진

비즈니스 로직을 람다로 만든 후 api gateway를 연동하셨거나 람다에서 엔드포인트를 직접 생성하여 접근하는 구조로 구축을 하셨다면 말씀하신대로 엔드포인트에 대한 직접 접근 및 악성사용자에 의한 과도한 트래픽 발생을 우려하실 수 있습니다. 이 경우 api gateway의 인증기능을 활용하실 수도 있고 제가 알기로 api gateway에서 레이트 리미터를 적용하여 쓰로틀링을 할 수 있는 것으로 아는데 확인이 필요합니다. aws에서 제안하는 방법은 cloudfront를 활용하는 방법으로 아래 document를 참고하시면 됩니다. https://docs.aws.amazon.com/whitepapers/latest/aws-best-practices-ddos-resiliency/protecting-api-endpoints-bp4.html 일반적으로 aws를 사용하여 api service를 구축할 때 최초 트래픽이 유입되는 통로로 route53와 cloudfront를 조합하여 사용하거나 cloudfront만이라도 연동하면 다양한 보안 기능 및 라우팅 기능을 사용할 수 있으므로 이려한 구조로 만드시는 것을 권장합니다.

profile picture

익명

작성자

2024년 05월 28일

답변 감사합니다! 첨부해주신 링크 타고가면서 자료를 찾다보니 AWS 서비스에서 중점적으로 제공하는 기능 이외에도 예방책을 준비한다는 점을 알게 됐고 나중에 서버풀로 개발할 때도 신경쓸 수 있을 것 같습니다ㅎㅎ 추가로 찾아보다가 DDoS 방치 모범 사례와 아키텍처가 있어서 공유합니다! https://docs.aws.amazon.com/ko_kr/whitepapers/latest/aws-best-practices-ddos-resiliency/welcome.html 덕분에 앞으로 공식문서에서 많이 찾아보고 도움받을 것 같습니다. 감사합니다!

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

AI 답변
커리어리 AI 봇 프로필 이미지

커리어리 AI 봇

GPT가 달아주는 답변입니다.

2024년 05월 28일

서버리스에서 API 주소 노출에 대한 우려를 이해할 수 있습니다. 실제로 이는 악의적인 사용자에게 공격의 여지를 줄 수 있습니다. 이러한 문제를 방지하기 위해 몇 가지 방법이 사용되며, 다음과 같은 것들이 포함됩니다: 1. **API Key**: 개발자는 클라이언트에게 하나 이상의 키를 제공하여, 해당 키가 있는 요청만 서버가 처리하도록 할 수 있습니다. 2. **Rate Limiting**: IP 주소 또는 유저 계정 당 API 호출 횟수를 제한하는 방법입니다. 만약 특정 시간 동안 너무 많은 요청이 들어온다면, 일시적으로 차단될 수 있습니다. 3. **Authentication and Authorization**: JWT(JSON Web Token)와 같은 방식을 활용하여 유저 인증 후, 정당한 유저만 API를 호출할 수 있도록 합니다. 4. **Web Application Firewalls (WAFs)**: HTTP 요청을 모니터링하고 필터링하여 알려진 공격 유형으로부터 보호합니다. 5. **Encryption**: HTTPS와 같은 암호화 방식을 사용하여 데이터 전송 시 보안을 강화합니다. 하지만, 기억해야 할 중요한 점은 아무리 완벽한 보안 조치를 취해도 100%의 보안을 보장할 수는 없다는 것입니다. 따라서, 위와 같은 여러 전략을 융합하여 시스템의 전반적인 안정성과 보안성을 높이는 것이 중요합니다.

목록으로

지금 가입하면 모든 질문의 답변을 볼 수 있어요!