본문 바로가기
CSP (Cloud Service Provider)/GCP

GCP - Cloud Storage Signed URL

by BTC_최규환 2022. 8. 26.

안녕하세요. MC에몽입니다.

 

오늘은 Google Cloud의 Object 저장소인 Cloud Storage의 Signed URL 기능에 대해 알아보겠습니다.

 

Signed URL이란 특정 Cloud Storage 리소스에 대한 제한된 시간 동안 액세스 권한을 제공하는 URL입니다.

Signed URL을 사용해 일정 기간 동안 특정 작업만 할 수 있는 URL을 생성함으로써 보안을 향상 시킬 수 있습니다.

 

이를 그림으로 간단히 표현하면 아래와 같습니다.

 

(1) Cloud Storage Bucket에 권한이 있는 SA를 생성한 뒤, 해당 SA로 Signed URL을 생성합니다.

(2) 생성된 Signed URL을 사용자에게 전달합니다. 

(3) 제한된 시간 동안 지정된 GCS Object에  Request를 할 수 있습니다.




그럼 실제 GCP Project 상에서 구현하는 예시를 만들어 보겠습니다.

 

1. Service Account에 Cloud Storage Bucket 권한 부여

 

Console > Cloud Storage > Buckets > Bucket 선택 > Permissions 탭 > +ADD

Service Account에 해당 Bucket에 대한 Storage Object Viewer 역할을 부여합니다.

 



2. gsutil 명령어로 Signed URL 생성

 

Service account로 로그인 한 뒤 gsutil signurl 명령어로 signed URL을 생성합니다.

아래 옵션을 참고하여 생성하시기 바랍니다.

-c : Signed URL 콘텐츠의 콘텐츠 타입을 지정

-d : Signed URL이 유효한 기간 지정(system managed key로 생성된 URL 경우 최대 12시간의 제한이 존재합니다.)

-m : HTTP method를 지정(default 값은 GET)

-u : service account를 이용하여 생성

※ Service Account Login을 위해 private key를 cloud shell에 upload 합니다.

 

 

위에 생성된 signed URL을 버킷 접근 권한이 없는 다른 유저에게 전달합니다.



3. Signed URL로 해당 Object Request



Signed URL을 전달 받은 User로 해당 Object에 HTTP Get Request가 성공함을 확인 합니다.

 

 

유효기간이 지나서 Signed URL이 만료되면 아래와 같이 Expired Token 메시지가 나타납니다.

 

 

오늘은 Cloud Storage Signed URL의 개념 및 사용 방법에 대해 알아봤습니다.

다음에는 더 유익한 내용으로 돌아오겠습니다.

 

See you later!



참고문서 :

[1] https://cloud.google.com/storage/docs/access-control/signed-urls?hl=ko
[2] https://cloud.google.com/storage/docs/gsutil/commands/signurl


댓글