[Etc] Presigned URL이란

2023. 8. 28. 09:14Web/네트워크

[Etc] Presigned URL

 

스프링 이미지 업로드를 구현하기 위해 구글링을 하다가 알게 되었다. 기존에 생각한 방법은 다음과 같다.

 

  1. 클라이언트가 서버에 MultipartFile을 보내면서 요청을 한다.
  2. 서버는 해당 이미지를 받아서 S3 버킷에 해당 이미지를 업로드한다.

기존의 경우에는 용량이 있는 파일을 과정 상으로 두 번 옮겨야한다. 다만 구글링을 통해 발견한 Presigned URL의 방식으로 사용하면 과정이 변하게 된다.

 

  1. 클라이언트는 서버에 이미지를 올리고 싶다는 요청을 전송한다.
  2. 서버는 해당 요청을 받게 되면 S3에 업로드 가능한 URL을 요청한다.
  3. S3는 서버에게 URL을 발급한다.
  4. 서버는 클라이언트에서 업로드 URL, 파일명을 지정한다.
  5. 클라이언트는 주어진 URL을 통해 S3에 바로 업로드한다.
  6. S3는 업로드 결과값을 클라이언트에게 반환한다.

단계가 좀 더 복잡해졌지만 해당 방식을 사용하면 파일을 두 번 업로드 업로드 해야하는 불필요한 자원의 낭비를 줄일 수 있다.


이때 S3에서 발급하는 URL이 바로 Presigned URL이다. 그럼 해당 Presigned URL이 어떤 역할을 하는지 알아보았다.

  • Amazon S3에서 제공하는 기능이다
  • 사용자가 특정 S3 객체에 대한 일시적인 액세스 권한을 부여할 수 있는 URLdㅣ다.
  • 해당 URL을 통해 접근한 사용자는 접근하려는 객체을 읽거나 쓸 수 있다.
  • 사용 이유
    • 보안 : 일시적 액세스 권한을 부여하므로, 보안상의 이유로 일부 사용자만 S3 객체에 접근할 수 있도록 할 수 있다.
    • 제한된 엑세스 : Presigned URL은 일시적 액세스 권한을 부여한다. 사용자가 S3 객체에 대한 액세스를 제어할 수 있다.
    • 간편성 : URL을 공유함으로 사용자가 S3객체에 쉽게  액세스 할 수 있게 한다.
  • 사용 예시
    • 파일의 공유 - 해당 방법을 알게 된 계기  
      • URL을 통해 일시적인 액세스 권한을 부여하므로, 보안상 이유로 일부 사용자만이 파일에 액세스 할 수 있다.
    • 임시 액세스
      • 일시적 액세스 권한을 부여하므로, 일부 사용자만이 해당 S3 객체에 대한 액세스를 제어할 수 있다.
    • 제한된 액세스
      • 일시적 액세스 권한을 부여하므로, 사용자가 S3 객체에 대한 액세스를 제어할 수 있다.

'Web > 네트워크' 카테고리의 다른 글

[HTTP] HTTPS란?  (0) 2024.02.17
[Web 지식] IPv6 - Internet Protocol  (0) 2023.05.25
[REST API] REST API 설계  (0) 2022.12.22
[HTTP] PUT / PATCH 차이  (0) 2022.12.22
[Basic] 인증, 인가  (0) 2022.12.14