강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

처아미나님의 프로필 이미지
처아미나

작성한 질문수

구글 드라이브와 같이 개인만 볼 수 있는 이미지가 있을때 S3로 구현 방법

작성

·

31

·

수정됨

0

구글 드라이브와 같이 개인만 볼 수 있는 이미지가 있을때 S3로 구현 방법이 궁금합니다.
s3 private bucket으로 두고, 접근을 어떻게 할지가 고민입니다.
생각한 방법은


1. 권한 확인 후 presigned url 로 제한시간이 있는 접근 가능한 url로 만들어서 반환한다.

특징: 누구나 해당 url를 가지고 있으면 접근가능하다. 캐시가 어렵다 

2.권한 확인 후 백엔드서버에서 s3에서 이미지를 가져와서 바이트배열로 반환한다.

특징: 서버에서 이미지를 받아서 바이트배열로 변환해야하는 작업이 필요. 브라우저 캐시 사용가능



개인적인 생각은 presigned url 노출이나 바이트 코드 노출이나 똑같이 노출인것같은데, 물론 presigend url은 시간제한이 있긴하지만.. 다른분들 생각이 궁금합니다.

 

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.
처아미나님께서 질문하신 AWS S3에서 개인만 볼 수 있는 이미지를 어떻게 구현할 수 있는지에 대한 두 가지 방법에 대해 말씀드리겠습니다.

  1. Presigned URL 사용:

    • 권한 확인 후 제한 시간이 있는 presigned URL을 발급하여 이미지를 제공합니다. 이 방법은 presigned URL을 통해 직접 이미지를 접근할 수 있도록 하는 방법입니다.
    • 특징: 누구나 해당 URL을 가지고 있다면 접근이 가능하지만, URL의 유효기간이 지나면 더 이상 접근할 수 없다는 점이 보안적으로 유리합니다.
    • 이미지 캐싱이 어렵다는 단점이 있습니다.
  2. 백엔드 서버를 통한 이미지 제공:

    • 권한 확인 후 백엔드에서 직접 S3로부터 이미지를 가져와 바이트 배열로 클라이언트에 반환하는 방법입니다.
    • 특징: 브라우저 캐시를 사용할 수 있으며, 이미지에 대한 접근 권한 관리를 보다 세밀하게 할 수 있습니다. 하지만, 서버의 부담이 증가할 수 있으며, 구현이 복잡할 수 있다는 점이 단점입니다.

처아미나님께서 언급하신 대로, 두 방법 모두 이미지를 노출한다는 점에서는 유사하지만, 보안적인 측면에서 presigned URL의 시간 제한은 잠재적 보안 위협을 줄이는 데 유리합니다. 각 방법의 장단점을 고려하여 시스템의 요구사항에 맞는 방법을 선택하시기 바랍니다.

이와 관련된 더 깊이 있는 정보는 AWS S3 공식 문서를 참고하시거나, Spring Boot Reference Documentation를 활용하실 수도 있습니다. 추가적인 의견이나 구현 방법에 대해 개발자 커뮤니티에서 토론하는 것도 좋은 방법이 될 것입니다.

처아미나님의 프로필 이미지
처아미나

작성한 질문수

질문하기