daangn-daangn 프로젝트의 이미지 파일 처리 방식으로 presignedURL을 적용
PR
44
목차
작업 목적
presignedURL이란?
작업 내용
SDK for Java 2.x
presignedURL을 사용해서 객체 조회하는 방법(GET)
presignedURL을 사용해서 객체 업로드하는 방법(PUT)
PresignerUtils
삽질했던 부분(중요)
작업목적
이미지 파일 처리 방식을 서버에서 직접 데이터를 업로드 하는 게 아닌 presignedURL을 발급하고 클라이언트에게 업로드 역할 위임하여 서버의 관리포인트 감소
presignedURL이란?
S3의 접근권한이 Public일 경우 버킷과 파일주소만 안다면 업로드된 파일을 자유롭게 접근가능합니다.
이를 통해서 S3에 이미지 리소스를 저장한다거나 업로드되는 파일을 저장하는 방법으로 사용하고 있습니다.
이런 편의성은 큰 장점이지만 보안관점에서 본다면 큰 위험요소가 될 수 있습니다.
AWS S3에서는 이런 위험요소를 보안하기 위해서 미리 서명된 URL(Presigned-URL)이라는 기능을 제공합니다.
이 기능은 제한된 시간동안 접근권한을 부여하는 기능입니다.
이를 이용하면 특정 대상에게 제한된 시간동안 S3의 접근권한을 부여하여 조금이나마 위험부담을 줄일 수 있습니다.
작업내용
presignedURL
을 적용PR
44
목차
작업목적
presignedURL
을 발급하고 클라이언트에게 업로드 역할 위임하여 서버의 관리포인트 감소presignedURL이란?
S3의 접근권한이 Public일 경우 버킷과 파일주소만 안다면 업로드된 파일을 자유롭게 접근가능합니다.
이를 통해서 S3에 이미지 리소스를 저장한다거나 업로드되는 파일을 저장하는 방법으로 사용하고 있습니다.
이런 편의성은 큰 장점이지만 보안관점에서 본다면 큰 위험요소가 될 수 있습니다.
AWS S3에서는 이런 위험요소를 보안하기 위해서 미리 서명된 URL(Presigned-URL)이라는 기능을 제공합니다.
이 기능은 제한된 시간동안 접근권한을 부여하는 기능입니다.
이를 이용하면 특정 대상에게 제한된 시간동안 S3의 접근권한을 부여하여 조금이나마 위험부담을 줄일 수 있습니다.
작업 내용
SDK for Java 2.x
presigned-url
은 aws-sdk-java-v2을 기반으로 동작합니다.Using the SDK with gradle
S3Presigner
aws-sdk-java-v1에서 사용하는
AmazonS3Client
대신S3Presigner
을 사용합니다.presignedURL을 사용해서 객체 조회하는 방법(GET)
GET presigned-url
로 버킷에 있는 파일을 조회할 수 있습니다.presignedURL을 사용해서 객체 업로드하는 방법(PUT)
PUT presigned-url
+request body
에binary
타입으로 파일을 업로드하면 됩니다.PresignerUtils
daangn-server
에서 조회용, 업로드용presignedUrl
생성을 전담하는 유틸 클래스삽질했던 부분(중요)
AWS 파일에 접근제한 부여하기 - Presigned URL
keyName
이 Bucket에 접근하는ACCESS_KEY
인 줄 알고 진짜 개한참동안 삽질했음folder/filename.jpg
로 저장할 지 나타내는 것이었다.folder/filename.jpg
)를 나타내는 것이었다.