• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

보안이 필요한 파일 관련 질문

22.09.24 15:24 작성 조회수 137

1

안녕하세요. 먼저 좋은 강의 감사드립니다.

아래와 같은 질문이 있어 문의 드립니다.

강의에서 설명 주신 것처럼 S3를 이용하여 file 자료를 관리하려고 합니다. 하지만 file 자료가 보안이 필요하여 Client에서 바로 접근은 정책적으로 S3에 막고, 백엔드 서버를 거쳐서만 Client에 전송하려고 합니다. 이 경우 어떤식으로 해야 할 지 문의드립니다. (아래 경우 중에 어떤 방법인가요? 다른 좋은 방법이 있다면 설명 부탁드립니다.)

[ Client에서 File Download 요청 시 (Get Restful API) ]

(경우 1) 서버에서 S3의 파일을 서버(EC2)로 다운로드 한 후에 다시 서버에서 해당 저장파일을 load해서 Client쪽에 보내서 받는 경우 -> 이 경우라면 중간 중간에 어떤식으로 파일들을 load하고 API에 실어서 보내야 하나요? 백엔드 서버에 일단 파일로 저장하고 그것을 다시 Load해서 보내나요, 아니면 S3에서 읽어온 메모리를 바로 응답에 실어서 보낼 수도 있나요?(라이브러리나 개략적인 코드 순서부탁드립니다.) 그리고 이 경우 서버에 무리가 갈 것 같은데 어떤식으로 조절해야 하나요?

(경우 2) 서버에 File 요청이 왔을 경우 임시 토큰(?)을 발행하여 한번만 S3에서 다운로드 받게 하여 서버 부하를 줄이는 방법 (이런 방법이 가능한지는 모르겠어요.)

cf. 위 방법 말고 실무에서 하시는 방법이 있으면 말씀 부탁드립니다. (보안관련 File관리 (서버 부하 고려))

 

답변 1

답변을 작성해보세요.

0

안녕하세요~

좋은 질문입니다! (경우2)가 가능하고요. 이게 가장 좋은 방법입니다. 이미지와 같은 고용량 파일 다운로드나 업로드를 백엔드 서버에 거치게 하는건 최대한 피하시는게 좋아요. 백엔드 하드디스크에 임시로 저장하지는 않지만 메모리에 올라가 있어야 하거든요(클라 <-> 백엔드 메모리 <-> S3). 동시에 여러개의 요청이 들어오면(웹 서비스상 충분히 가능하죠) 금방 부하가 걸릴거에요.

이 문제를 해결하기 위해(클라 <-> S3가 가능하도록) 후반부에 presigned url을 가르쳐드리고 있습니다. (정말 중요한 내용!)

 

강의에서는 업로드하는 부분만 Presigned url로 하고 있는데요. (업로드를 아무나 하게 하면 안되기 때문에 보안이 필수인 반면 이미지 자체는 공개인 경우가 대부분) 다운로드에서도 Presigned url을 만들 수 있습니다! 방법과 개념은 동일하기 때문에 조금만 찾아보시면 다운로드에도 적용가능하실거에요