보안이 필요한 파일 관련 질문
228
작성한 질문수 10
안녕하세요. 먼저 좋은 강의 감사드립니다.
아래와 같은 질문이 있어 문의 드립니다.
강의에서 설명 주신 것처럼 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을 만들 수 있습니다! 방법과 개념은 동일하기 때문에 조금만 찾아보시면 다운로드에도 적용가능하실거에요
Router.use 두번째 파라미터 ImageRouter : undefined 전달 오류
0
128
2
소스코드 요청
0
165
1
프록시 관련 질문
0
170
1
Presigned URL 사용시 데이터베이스 저장 시점
0
338
1
이미지 등록시 자동 등록 오류
0
222
1
강의에 사용된 코드 다운 받는 사이트 주소 있나요?
0
393
2
axios 이용해서 백엔드로 이미지 전송 중 새로고침
0
477
1
ImageList 컴포넌트에서 업로드 한 사진을 리스트에서 바로 보기 위해 이 방법도 괜찮나요??
0
386
1
이미지 처음 올릴 때만 나타나는 오류
0
258
1
es6 스타일로 Import 할때 동작하지 않습니다.
0
394
1
이미지 업로드시
0
368
1
node js를 이용하고 mysql에 이미지 경로 저장
2
1263
1
선생님 cloudFront를 사용하게되면 S3는 private으로 사용하는게 좋을까요
0
546
1
선생님 aws-sdk 모듈을 찾을 수 없다고 합니다.
0
668
1
new aws.S3 version 확인
2
509
1
react-router-dom v6 useHistory 이슈
7
641
0
람다에서 시간 초과 에러가 뜹니다!
0
320
1
첫 로드시 동일한 이미지 두번호출
2
497
1
이미지 업로드 시 배열로
2
532
1
Promise.all에 대한 질문
0
431
1
세션에 관한 질문이 있습니다.
0
436
1
Promise.all관련 질문 ("여러 이미지 미리보기" 중...)
0
314
1
cdn 주소
0
513
1
특정 user 페이지 가져오기 질문있습니다.
0
299
1





