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

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



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

(2) 생성된 URL을 사용자에게 전달하여 (3) 제한된 시간 동안 지정된 GCS Object에  Request를 할 수 있도록 허용합니다.



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 메시지가 나타납니다.